{"version":3,"sources":["pages/Frontpage/Frontpage.module.scss","components/results/DetailsLaesetest/DetailsLaesetest.module.scss","components/common/navigation/NavigateModule/NavigateModule.module.scss","components/supporter/SupporterRequestUserDataModal/SupporterRequestUserDataModal.module.scss","components/footer/AccessibilityCookies/AccessibilityCookies.module.scss","components/results/Details/Details.module.scss","components/common/navigation/NavigatePage/NavigatePage.module.scss","components/results/DetailsOpgaveBesvarelseMatematik/AnswerLineText.module.scss","components/vejleder/VejlederHoldTable/VejlederHoldTable.module.scss","components/auth/LoginInfo/LoginInfo.module.scss","components/common/navigation/Navigation/Navigation.module.scss","components/vejleder/VejlederChangeHoldForTesttagningModal/VejlederChangeHoldForTesttagningModal.module.scss","components/vejleder/VejlederCreateHoldModal/VejlederCreateHoldModal.module.scss","components/vejleder/VejlederArchiveHoldModal/VejlederArchiveHoldModal.module.scss","components/supporter/SupporterRemoveRuleModal/SupporterRemoveRuleModal.module.scss","pages/supporter/SupporterManageSupporters/SupporterManageSupporters.module.scss","components/supporter/SupporterRemoveSupporterModal/SupporterRemoveSupporterModal.module.scss","components/footer/Kontakt/Kontakt.module.scss","components/footer/HjaelpendeLinks/HjaelpendeLinks.module.scss","components/footer/Footer/Footer.module.scss","components/header/Header/Header.module.scss","components/common/Page/Page.module.scss","components/results/Summary/Summary.module.scss","components/common/Toast/ToastManager/ToastManager.module.scss","components/results/DetailsOpgaveBesvarelseMatematik/DetailsOpgaveBesvarelseMatematik.module.scss","components/results/DetailsOpgaveBesvarelseMatematik/OpgaveText.module.scss","components/vejleder/VejlederBrugerkoderTable/VejlederBrugerkoderTable.module.scss","components/supporter/SupporterRuleTable/SupporterRuleTable.module.scss","pages/shared/NotFound/NotFound.module.scss","components/supporter/SupporterSupportersTable/SupporterSupportersTable.module.scss","components/OpgavesaetContext.tsx","assets/img/logo.svg","assets/img/logo_crown.svg","components/footer/Logo.tsx","components/footer/AccessibilityCookies/AccessibilityCookies.tsx","components/footer/Kontakt/Kontakt.tsx","components/footer/HjaelpendeLinks/HjaelpendeLinks.tsx","components/footer/Footer/Footer.tsx","components/header/HeaderTitle.tsx","shared/enums/Roles.ts","shared/enums/Storage.ts","components/header/LogoCrown.tsx","services/auth/authorization.service.ts","shared/enums/LanguageOptions.ts","apiService/BaseApi.ts","apiService/AuthenticatedUserApi.ts","components/auth/LoginInfo/LoginInfo.tsx","components/header/Header/Header.tsx","components/common/Page/Page.tsx","apiService/ElevApi.ts","components/common/Warnings.tsx","apiService/OpgavesaetApi.ts","apiService/TesttagningApi.tsx","shared/enums/TakeFullTestOptions.ts","shared/enums/TestNames.ts","shared/utils/IsTest.ts","components/vejleder/RegisterElev/RegisterElev.tsx","pages/elev/Elev.tsx","components/TestSelector.tsx","assets/img/frontpage_math.jpg","pages/Frontpage/Frontpage.tsx","apiService/HovedopgaveApi.ts","components/Opgavenummer.tsx","pages/elev/shared/examples/helpers.ts","pages/elev/shared/examples/afsnit1Examples.ts","components/results/TestResultInfo/TestResultInfo.tsx","pages/elev/shared/examples/afsnit2Examples.ts","pages/elev/shared/examples/afsnit3Examples.ts","pages/elev/Opgavesaet/Opgavesaet.tsx","components/results/Details/Details.tsx","components/common/Toast/shared/enums/MessageTypes.ts","components/results/Summary/Summary.tsx","components/results/ToggleResultDisplay.tsx","apiService/ResultApi.ts","components/results/DetailsLaesetest/DetailsLaesetest.tsx","pages/elev/Resultater.tsx","components/common/navigation/NavigateModule/NavigateModule.tsx","components/common/navigation/NavigatePage/NavigatePage.tsx","components/common/navigation/Navigation/Navigation.tsx","pages/vejleder/VejlederPage.tsx","components/common/Toast/Toast/Toast.tsx","components/common/Toast/ToastManager/ToastManager.tsx","shared/utils/createDownloadLink.ts","components/results/DetailsOpgaveBesvarelseMatematik/DetailsSvarmulighed.tsx","components/results/DetailsOpgaveBesvarelseMatematik/AnswerLineText.tsx","components/results/DetailsOpgaveBesvarelseMatematik/OpgaveText.tsx","components/results/DetailsOpgaveBesvarelseMatematik/DetailsOpgaveBesvarelseMatematik.tsx","pages/vejleder/VejlederElevResultat.tsx","components/common/table/shared/Localization.tsx","components/common/table/shared/Icons.tsx","components/common/table/shared/Options.tsx","components/common/table/shared/utils/exportData.ts","components/vejleder/VejlederBrugerkoderTable/Options.tsx","components/vejleder/VejlederBrugerkoderTable/SaveBrugerkoderToFile.tsx","components/vejleder/VejlederBrugerkoderTable/VejlederBrugerkoderTable.tsx","components/common/ModalBackdrop.tsx","apiService/HoldApi.ts","components/shared/utils/updateTable.ts","components/vejleder/VejlederCreateBrugerkoderModal/VejlederCreateBrugerkoderModal.tsx","pages/vejleder/VejlederBrugerkoder.tsx","shared/types/TesttagningDetails.ts","components/vejleder/VejlederChangeHoldForTesttagningModal/VejlederChangeHoldForTesttagningModal.tsx","components/common/ToggleArchiveHoldButton.tsx","components/common/table/Table/Options.tsx","components/common/table/shared/utils/useSessionStorage.ts","components/common/table/Table/TestResultTable.tsx","shared/enums/RuleTypes.ts","pages/vejleder/VejlederResultat/VejlederResultat.tsx","pages/shared/AuthRedirect.tsx","components/vejleder/VejlederCreateHoldModal/VejlederCreateHoldModal.tsx","components/vejleder/VejlederArchiveHoldModal/VejlederArchiveHoldModal.tsx","components/vejleder/VejlederHoldTable/Options.tsx","components/vejleder/VejlederHoldTable/VejlederHoldTable.tsx","pages/vejleder/VejlederHold.tsx","components/auth/PrivateRoute.tsx","components/auth/Login.tsx","apiService/SupportsagApi.ts","components/supporter/SupporterRequestUserDataModal/SupporterRequestUserData.tsx","components/supporter/SupporterRequestUserDataModal/SupporterRequestUserDataModal.tsx","pages/supporter/SupporterSearchVejleder/SupporterSearchVejleder.tsx","pages/vejleder/VejlederDashboard.tsx","pages/supporter/SupporterDashboard.tsx","apiService/RuleApi.ts","components/supporter/SupporterRuleTable/Options.tsx","components/shared/utils/RuleString.ts","components/supporter/SupporterRemoveRuleModal/SupporterRemoveRuleModal.tsx","components/supporter/SupporterRuleTable/SupporterRuleTable.tsx","pages/supporter/SupporterPNummer/SupporterPNummer.tsx","pages/shared/NoAccess.tsx","pages/shared/NotFound/NotFound.tsx","components/supporter/SupporterSupportersTable/Options.tsx","components/supporter/SupporterRemoveSupporterModal/SupporterRemoveSupporterModal.tsx","components/supporter/SupporterSupportersTable/SupporterSupportersTable.tsx","pages/supporter/SupporterManageSupporters/SupporterManageSupporters.tsx","pages/supporter/SupporterCVR/SupporterCVR.tsx","pages/supporter/SupporterRID/SupporterRID.tsx","pages/shared/Persondatapolitik.tsx","pages/shared/Cookiepolitik.tsx","pages/shared/Personoplysninger.tsx","Routing.tsx","App.tsx","keycloak.ts","index.tsx","components/common/Toast/Toast/Toast.module.scss","components/vejleder/VejlederCreateBrugerkoderModal/VejlederCreateBrugerkoderModal.module.scss","components/vejleder/RegisterElev/RegisterElev.module.scss","components/results/TestResultInfo/TestResultInfo.module.scss","components/common/table/Table/TestResultTable.module.scss","pages/supporter/SupporterPNummer/SupporterPNummer.module.scss","pages/supporter/SupporterCVR/SupporterCVR.module.scss","pages/supporter/SupporterRID/SupporterRID.module.scss"],"names":["module","exports","Testnavn","_path","_path2","_g","_defs","defaultOpgavesaet","opgavesaet","OpgavesaetContext","createContext","OpgavesaetProvider","children","useState","setOpgavesaet","testnavn","setTestnavn","Provider","value","_excluded","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgLogo","_ref","svgRef","title","titleId","props","xmlns","xmlnsXlink","viewBox","ref","fill","d","xlinkHref","x","y","id","undefined","_style","ForwardRef","Logo","className","AccessibilityCookies","history","useHistory","styles","list","rel","href","noneDecoration","tabIndex","onClick","push","Kontakt","HjaelpendeLinks","Footer","footer","useContext","tekst","setTekst","useEffect","SvgLogoCrown","xmlSpace","style","enableBackground","type","Roles","SessionStorage","LanguageOptions","AuthorizationService","deleteTokenInSessionStorage","deleteRefreshTokenInSessionStorage","deleteRoleInSessionStorage","deleteSupportsagInSessionStorage","console","log","role","sessionStorage","setItem","ROLE","token","KC_TOKEN","KC_REFRESH_TOKEN","removeItem","SUPPORTSAG","userStr","getItem","VEJLEDER","getCurrentRole","SUPPORTER","authorizationService","BaseApi","instance","axios","create","baseURL","interceptors","request","use","config","headers","error","Promise","reject","response","originalRequest","status","_retry","defaults","common","GetAuthenticatedUserByBrugernavnApi","brugernavn","a","get","data","succeeded","Message","message","errors","GetAuthenticatedUserBySupportsagIdApi","supportsagId","GetAuthenticatedUserApi","CreateBrugerkoderApi","count","opgavesaetId","holdId","post","GetRole","LoginInfo","keycloak","useKeycloak","name","setName","setBrugernavn","signedIn","userLink","isSupporter","isVejleder","inNone","logoutOptions","redirectUri","window","location","origin","logout","clearSessionStorage","signedOut","authenticated","then","fornavn","efternavn","catch","Header","link","LogoCrown","HeaderTitle","Page","contentWrap","UpdateElevAsElevApi","elev","put","UpdateElevApi","GetElevByBrugerkodeAsElevApi","brugerkode","GetElevByBrugerkodeAsAuthenticatedUserApi","genericWarning","noWarning","GetOpgavesaetByBrugerkodeApi","getAllVisibleOpgavesaetApi","GetOpgavesaetByRule","TakeFullTestOptions","TestNames","GetTesttagningByBrugerkode","isFrontpageRequest","GetTesttagningDetailsByBrugerkode","GetTesttagningerAsAuthenticatedUserApi","inUse","GetTesttagningerBySupportsagIdApi","UpdateTesttagningOpgavesaetAsElevApi","UpdateTesttagningByBrugerkodeApi","tekstlaesning","ordforraad","ordlaesning","IsTest","isA","testName","A","isB","B","isDemo","DEMO","isFGU","FGU","isFVU","FVU","isFGUL","FGUL","isVLV","VLV","isLaesetest","isMatematiktest","getTestName","RegisterElev","setFornavn","setEfternavn","setHoldId","day","setDay","month","setMonth","year","setYear","opgavesaetName","setOpgavesaetName","bedsteSprog","setBedsteSprog","sprog","setSprog","TAKE_FULL_TEST","takeFullTest","setTakeFullTest","warning","setWarning","birthdayValidateError","setBirthdayValidateError","birthdayValidateMessage","setBirthdayValidateMessage","audio","Audio","BRUGERKODE","foedselsdag","Date","offset","getTimezoneOffset","foedselsdagKorrigeret","getTime","getDate","toString","getMonth","getFullYear","opgavesaetResponse","navn","NOT_TAKE_FULL_TEST","handleSubmit","event","preventDefault","regexpDay","RegExp","regexpMonth","regexpYear","test","date","padStart","moment","isValid","foedselsdato","shouldTakeFullTest","Number","isAxiosError","e","normalWeight","soundButton","pause","currentTime","play","soundIcon","size","icon","faVolumeUp","onSubmit","htmlFor","onChange","optionContainer","DANSK","checked","IKKE_DANSK","DANSK_OG_ET_ANDET_SPROG","disabled","Elev","TestSelector","setBrugerkode","setResponse","clear","testtagningResponse","toUpperCase","Frontpage","container","inputContainer","textContainer","infoText","rightDiv","src","Image","alt","image","GetHovedopgaveByIdApi","hovedopgaveid","substring","hovedopgave","opgavenummer","Opgavenummer","opgavesaetNavn","useLocation","isComplete","document","readyState","setOpgavenummer","React","multId","querySelector","dropdownId","getOpgavenummer","hovedopgaveId","Helpers","$","html","hideOriginalBtn","getElementsByClassName","displayOriginalBtn","removeElementById","getElementById","remove","ResultApprovalOptions","afsnit1Examples","example3Answered","example4Answered","timeout_example_01","timeout_example_02","setCorrectAnswer","correctElementId","correctElement","activateNextBtn01","displayNextBtn01","btnContainer","createElement","btn","innerHTML","onclick","nextBtn01Handler","append","startExample02","Afsnit1Examples","example02","displayNextBtn02","playSound02","setTimeout","nextBtn02Handler","activateNextBtn02","startExample03","example03","example04","displayNextBtn03","playSound03","nextBtn_3Handler","addEventListeners","addEventListenerForExample3","addEventListenerForExample4","example_3_1","example_3_2","example_3_3","example_3_4","example3_1ClickHandler","example3_2ClickHandler","example3_3ClickHandler","example3_4ClickHandler","example_4_1","example_4_2","example_4_3","example_4_4","example4_1ClickHandler","example4_2ClickHandler","example4_3ClickHandler","example4_4ClickHandler","resetExample3","addClass","removeClass","activateNextBtn03","resetExample4","endExample","setEndExample","playSound4","setExampleHeadline","example01","playSound01","onended","onEndPlaySound4Handler","example","afsnit2Examples","timeout","activateEventListeners","img01Handler","img02Handler","img03Handler","img04Handler","disableImgEventListener","Afsnit2Examples","playSound_wrong","playSound_correct","activateNextBtn","displayNextBtn_1","nextBtn_1Handler","startExample_2","displayNextBtn_2","playSound_1","nextBtn_2Handler","playSound_4","soundPath","image01","image02","image03","image04","img_01","img_02","img_03","img_04","exampleContainer","idWrong","idCorrect","afsnit3Examples","isExample01","timeout_example_tutorial","setCorrectAnswerTutorial","displayTutorialNextButton","tutorialNextButtonHandler","startExample_1","Afsnit3Examples","playSound","btn01Handler","btn02Handler","btn03Handler","btn04Handler","playSoundWrong","playSoundCorrect","playSoundEnd","playSoundTutorial","btn_01_textcontent","btn_02_textcontent","btn_03_textcontent","btn_04_textcontent","btn_01","textContent","btn_02","btn_03","btn_04","settings","opgavevisning","Opgavevisning","PerOpgave","readonly","submittype","Submittype","Async","storage","endpoints","apiPrefix","onSubmitRedirectLink","settingsLaesetest","NoWizardWithNextButton","nextButtonText","sendResponsesWithoutChange","Opgavesaet","contentComponent","setContentComponent","match","useRouteMatch","params","GetBrugerkode","RemoveNullTimeInSec","afsnit","timeInSec","opgaver","opgave","delopgave","grid","autoplay","SetGridAndAudioTag","svarmuligheder","AddEmptyOpgave","initiallyDisabledMs","SetDisableButton","Transformer","transformString","JSON","stringify","appendTo","not","parent","siblings","lastIndex","currentIndex","find","attr","last","hasClass","parseInt","text","start","Details","display","result","Array","resultHeader","setResultHeader","results","group","map","correct","total","class","hovedopgaver","forEach","h","overskrift","ToggleDisplay","from","element","classList","contains","toggle","resultInPercentange","parseFloat","toFixed","replaceAll","resultAsFraction","table","samletResultat","testNavn","row","onKeyDown","Math","random","MessageTypes","TestResultInfo","setTekstlaesning","setOrdforraad","setOrdlaesning","testtagning","CalculateAfsnit_1","sluttidspunkt","del1Sluttidspunkt","starttidspunkt","del1Starttidspunkt","CalculateAfsnit_2","del2Sluttidspunkt","del2Starttidspunkt","CalculateAfsnit_3","del3Sluttidspunkt","del3Starttidspunkt","infoDiv","labelText","TEKSTLAESNING","checkbox","checkboxLabel","ORDFORRAAD","ORDLAESNING","Summary","format","testDate","resultDate","testtagerNavn","ToggleResultDisplay","setDisplay","GetResultByBrugerkodeAsElevApi","GetResultAsPdfByBrugerkodeAsElevApi","GetResultByBrugerkodeApi","GetOpgavebesvarelserByBrugerkode","GetResultAsPdfByBrugerkodeApi","CreateResultsAsPdfZippedApi","brugerkoder","DetailsLaesetest","wrong","skipped","unanswererd","unanswered","renderResult","totalTime","time","renderSkipped","NaN","Resultater","setResult","setElev","setTesttagning","brugerkodeInSession","open","responseURL","downloadPdf","NavigateModule","label","path","header","NavigatePage","pathname","navLink","Navigation","containerNavPrimary","VejlederPage","Toast","destroy","content","messageType","duration","faCheck","messageIcon","setMessageIcon","color","setColor","setIcon","setBackgroundColor","timer","clearTimeout","Success","Error","faExclamation","Info","faInfoCircle","Warning","faExclamationTriangle","toastMain","toastSuccess","toastError","toastInfo","toastWarning","closeIcon","toastButton","svg","faTimes","shouldRerender","prevProps","nextProps","memo","toastManager","containerRef","toasts","body","getElementsByTagName","toastContainer","insertAdjacentElement","options","toastId","substr","setStyle","toast","render","toastContainerMain","filter","toastsList","toastProps","ReactDOM","createDownloadLink","byteArray","fileName","binaryString","atob","binaryLen","bytes","Uint8Array","charCodeAt","blob","Blob","URL","createObjectURL","downloadLink","download","click","library","add","far","faSquare","faSquareCheck","fas","DetailsSvarmulighed","svarMuligheder","besvarelse","opgavebesvarelser","opgaveId","svarmulighed","svar","korrektBesvarelse","korrektSvar","indexOfImageApi","imagePath","lastIndexOf","imageDescription","dangerouslySetInnerHTML","__html","answerLineText","questionType","isKorrektBesvarelse","answerLineImage","iconAlign","AnswerLine","answerLines","korrekt","alignAnswerText","OpgaveText","opgaveText","svarOptions","alignOpgaveText","faRadiation","faXmark","faCircleExclamation","DetailsOpgaveBesvarelseMatematik","opgaveLinjer","hovedOpgave","opgaveNummer","AnswerLineText","VejlederElevResultat","setOpgavebesvarelser","queryParams","URLSearchParams","search","localization","pagination","labelRowsSelect","labelDisplayedRows","firstAriaLabel","firstTooltip","previousAriaLabel","previousTooltip","nextAriaLabel","nextTooltip","lastAriaLabel","lastTooltip","toolbar","searchPlaceholder","searchTooltip","exportPDFName","exportCSVName","exportTitle","exportAriaLabel","nRowsSelected","emptyDataSourceMessage","filterRow","filterTooltip","tableIcons","Add","forwardRef","Check","Clear","Delete","DetailPanel","Filter","FirstPage","LastPage","NextPage","PreviousPage","ResetSearch","Search","SortArrow","ThirdStateCheck","ViewColumn","searchFieldAlignment","pageSizeOptions","headerStyle","fontSize","fontWeight","backgroundColor","searchFieldStyle","emptyRowsWhenPaging","formatDates","cols","datas","dateArr","currentValue","field","includes","removeEmptyColoumns","index","splice","exportPdf","addPlaceholderForEmptyValues","ExportPdf","exportCSV","formattedResult","removeEmptyFormattedResult","ExportCsv","pdfLabel","csvLabel","selection","pageSize","exportMenu","exportFunc","saveBrugerkoderToFile","pdf","jsPDF","setFont","brugerkodeBlok","calculateYPosition","shouldInsertNewPage","addPage","save","VejlederBrugerkoderTable","testtagninger","selectedRows","setSelectedRows","cellStyle","width","maxWidth","rowData","hold","createdAt","customFilterAndSearch","term","formatedArr","split","columns","sorted","sort","b","icons","onSelectionChange","rows","components","Container","Paper","elevation","variant","button","downloadBrugerkoderAsPdf","ModalBackdrop","GetHoldAsVejlederApi","GetHoldBySupportsagIdApi","UpdateArchiveHold","holdNavn","archived","CreateHoldApi","updateTable","floor","MAX_SAFE_INTEGER","VejlederCreateBrugerkoderModal","HoldOptions","forceUpdate","setForceUpdate","selectedOpgavesetId","setSelectedOpgavesaetId","selectedOpgavesetValue","setSelectedOpgavesaetValue","selectedHoldId","setSelectedHoldId","selectedHoldValue","setSelectedHoldValue","numberToCreate","setNumberToCreate","holdDetails","setHoldDetails","NOHOLD","setHold","newHoldName","setNewHoldName","opgavesaetOptions","item","holdOptions","getRequestHoldId","requestHoldId","NEWHOLD","success","toggleOpretBrugerkoderModal","EXISTINGHOLD","handleHoldChange","valueAsNumber","selectedIndex","getAttribute","handleSelectedChangeOpgavesaet","radioButtonContainer","firstOptionContainer","selectionContainer","radioButton","handleSelectedChangeHold","input","submitCancel","submitButton","isNaN","VejlederBrugerkoder","antalForkerteOpgaver","antalIkkeBesvaredeOpgaver","antalKorrekteOpgaver","antalOversprungneOpgaver","VejlederChangeHoldForTesttagningModal","selectedHold","setSelectedHold","toggleHoldModal","updatedElev","ToggleArchiveHoldButton","defaultChecked","useSessionStorage","defaultValue","stored","parse","getSessionStorageOrDefault","setValue","RuleTypes","TestResultTable","tableInfo","mutable","filteredTesttagninger","setFilteredTesttagninger","SHOW_ARCHIVED","showArchived","setShowArchived","columnsDef","useCallback","fullName","brugerkodeLink","renderNavn","holdIcon","faEdit","renderHold","setColumns","isMounted","helperTextButton","helperText","toggleArchiveButton","info","finishedRows","downloadTestResultsAsZip","iconQuestionMark","faQuestionCircle","buttonHelperText","VejlederResultat","setTesttagninger","sortedTesttagninger","AuthRedirect","VejlederCreateHoldModal","nameToCreate","setNameToCreate","toggleOpretHoldModal","VejlederArchiveHoldModal","archive","archivedText","setArchivedText","setArchived","toggleArchiveHoldModal","isArchived","VejlederHoldTable","filteredHold","setFilteredHold","buttonValue","renderArchiveButton","customSort","holdStatusSort","VejlederHold","PrivateRoute","Component","component","rest","initialized","isUserAuthorized","to","state","Login","login","CreateSupportsagApi","begrundelse","authenticatedUserBrugernavn","SupporterRequestUserData","setTesttagningerResult","setTesttagningerBrugerkoder","setVejleder","testtagningerResult","testtagningerBrugerkoder","holdResponse","sortedHold","authenticatedUser","vejleder","SupporterRequestUserDataModal","vejlederBrugernavn","setTesttagningerResultat","setBegrundelse","supportsagResponse","toggleAccessUserData","accessUserDataTable","begrundelseLabel","begrundelseInput","SupporterSearchVejleder","setVejlederBrugernavn","testtagningerResultat","resultaterIsShown","setResultaterIsShown","brugerkoderIsShown","setBrugerkoderIsShown","holdIsShown","setHoldIsShown","supportsag","setSupportsag","supportsagInSession","SupportsagButtons","VejlederInfo","VejlederDashboard","SupporterDashboard","GetRulesByType","valueType","DeleteRule","ruleId","delete","CreateRule","CreateRules","values","RuleString","ruleType","CVR","P_NUMMER","RID","SupporterRemoveRuleModal","rule","toggleRemoveRuleModal","SupportRuleTable","rules","createdBy","sorting","removeRID","SupporterPNummer","pNummers","setPNummers","setRules","labelPadding","textLabel","tmp0","isValidPNummer","NoAccess","NotFound","SupporterRemoveSupporterModal","toggleRemoveSupporterModal","focusable","SupportSupportersTable","removeSupporter","SupporterManageSupporters","PREFERRED_USERNAME","preferredUsername","SupporterCVR","CVRs","setCVRs","SupporterRID","RIDs","setRIDs","Persondatapolitik","Cookiepolitik","Personoplysninger","Routing","exact","App","hostname","Keycloak","refreshToken","StrictMode","authClient","onTokens","setKeycloakTokenInSessionStorage","setKeycloakRefreshTokenInSessionStorage","setRoleInSessionStorage","initOptions"],"mappings":"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","file":"static/js/main.39efd288.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Frontpage_container__1WV2n\",\"image\":\"Frontpage_image__1FGpS\",\"rightDiv\":\"Frontpage_rightDiv__2WdfY\",\"inputContainer\":\"Frontpage_inputContainer__7Gov6\",\"infoText\":\"Frontpage_infoText__ofCBD\",\"textContainer\":\"Frontpage_textContainer__33M9A\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"DetailsLaesetest_table__1Aefo\",\"samletResultat\":\"DetailsLaesetest_samletResultat__3qUVZ\",\"result\":\"DetailsLaesetest_result__nfOYz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"NavigateModule_link__3fqVI\",\"header\":\"NavigateModule_header__3YyZr\",\"noneDecoration\":\"NavigateModule_noneDecoration__11YMQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"accessUserDataTable\":\"SupporterRequestUserDataModal_accessUserDataTable__1RCmT\",\"begrundelseLabel\":\"SupporterRequestUserDataModal_begrundelseLabel__3Q-Ti\",\"begrundelseInput\":\"SupporterRequestUserDataModal_begrundelseInput__3diDe\",\"submitCancel\":\"SupporterRequestUserDataModal_submitCancel__JD2bE\",\"submitButton\":\"SupporterRequestUserDataModal_submitButton__1VzWC\",\"archiveTextSupportLabel\":\"SupporterRequestUserDataModal_archiveTextSupportLabel__28sDr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"AccessibilityCookies_list__3nju1\",\"noneDecoration\":\"AccessibilityCookies_noneDecoration__2IFxe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"Details_table__3A-I1\",\"samletResultat\":\"Details_samletResultat__3imi6\",\"result\":\"Details_result__3TOal\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navLink\":\"NavigatePage_navLink__3-qth\",\"link\":\"NavigatePage_link__3o_lJ\",\"noneDecoration\":\"NavigatePage_noneDecoration__2oi6R\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alignAnswerText\":\"AnswerLineText_alignAnswerText__2XGs1\",\"iconAlign\":\"AnswerLineText_iconAlign__1vs4l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"brugerkodeLink\":\"VejlederHoldTable_brugerkodeLink__2gjTp\",\"container\":\"VejlederHoldTable_container__6gDjK\",\"toggleArchiveButton\":\"VejlederHoldTable_toggleArchiveButton__1G9nP\",\"header\":\"VejlederHoldTable_header__2OyOj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"userLink\":\"LoginInfo_userLink__25Nbf\",\"noneDecoration\":\"LoginInfo_noneDecoration__1lzUW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Navigation_container__2AsM5\",\"containerNavPrimary\":\"Navigation_containerNavPrimary__2_Fju\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"VejlederChangeHoldForTesttagningModal_submitCancel___DfXk\",\"submitButton\":\"VejlederChangeHoldForTesttagningModal_submitButton__3L08S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"VejlederCreateHoldModal_submitCancel__3Cmu2\",\"submitButton\":\"VejlederCreateHoldModal_submitButton__2tjwY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"VejlederArchiveHoldModal_submitCancel__2pFDc\",\"submitButton\":\"VejlederArchiveHoldModal_submitButton__3fStW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"SupporterRemoveRuleModal_submitCancel__3780P\",\"submitButton\":\"SupporterRemoveRuleModal_submitButton__1vhU5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoText\":\"SupporterManageSupporters_infoText__do5SU\",\"label\":\"SupporterManageSupporters_label__2CBSx\",\"input\":\"SupporterManageSupporters_input__cABJ6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"SupporterRemoveSupporterModal_submitCancel__3S8p0\",\"submitButton\":\"SupporterRemoveSupporterModal_submitButton__2fTA-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"Kontakt_link__20WME\",\"list\":\"Kontakt_list__3F7cY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"HjaelpendeLinks_link__1_71j\",\"list\":\"HjaelpendeLinks_list__3E-8o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"Footer_footer__2Ibyw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"Header_link__HJyLg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentWrap\":\"Page_contentWrap__1ZQwA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"Summary_table__1IdVj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toastContainerMain\":\"ToastManager_toastContainerMain__3-Arx\",\"slide-in\":\"ToastManager_slide-in__fBLmJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"DetailsOpgaveBesvarelseMatematik_table__1atxg\",\"samletResultat\":\"DetailsOpgaveBesvarelseMatematik_samletResultat__5PfUX\",\"result\":\"DetailsOpgaveBesvarelseMatematik_result__397w-\",\"correctAnswer\":\"DetailsOpgaveBesvarelseMatematik_correctAnswer__19uph\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alignOpgaveText\":\"OpgaveText_alignOpgaveText__1kLEL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"VejlederBrugerkoderTable_submitCancel__1m6Y4\",\"submitButton\":\"VejlederBrugerkoderTable_submitButton__2i6sb\",\"button\":\"VejlederBrugerkoderTable_button__2OYi5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"brugerkodeLink\":\"SupporterRuleTable_brugerkodeLink__19oXG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"NotFound_link__3opNb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"brugerkodeLink\":\"SupporterSupportersTable_brugerkodeLink__3SBZB\"};","import { createContext, FC, useState } from \"react\";\n\nexport enum Testnavn {\n FVU = \"FVU\",\n FGU = \"FGU\",\n}\n\ninterface IOpgavesaetContext {\n opgavesaet: any;\n setOpgavesaet?: (value: string) => void;\n testnavn?: Testnavn;\n setTestnavn?: (value: Testnavn) => void;\n}\n\nconst defaultOpgavesaet: IOpgavesaetContext = {\n opgavesaet: \"\",\n};\n\nconst OpgavesaetContext = createContext(defaultOpgavesaet);\n\nexport default OpgavesaetContext;\n\nexport const OpgavesaetProvider: FC = ({ children }) => {\n const [opgavesaet, setOpgavesaet] = useState(defaultOpgavesaet.opgavesaet);\n const [testnavn, setTestnavn] = useState(defaultOpgavesaet.testnavn);\n\n return (\n \n {children}\n \n );\n};\n","var _path, _path2, _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 362.6 71.7\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4a4a4a\",\n d: \"M46.3 21.5a11.77 11.77 0 0 0-3.1-.5h-1.5c.3-1.2.4-1.8.4-2.3 0-1.1-.6-1.6-2-1.8-.7-.1-1.7-.3-3.3-.3-3.8 0-7.7.9-11.5 3.2-3.7-2.3-7.7-3.2-11.5-3.2-1.5 0-2.6.2-3.3.3-1.4.2-2 .7-2 1.8 0 .5.1 1.1.4 2.3H7.4a11.77 11.77 0 0 0-3.1.5c-1.2.4-1.7 1.4-.8 3.1l6.9 13.3.2-.1c4-1.1 10.5-1.4 14.2-1.4h1c3.7 0 10.2.3 14.2 1.4l.2.1 6.9-13.3c.9-1.7.3-2.6-.8-3.1zM13 35.4c-.3 0-1.2.2-1.5.3h-.2L5.5 23.5c1-.4 2.9-.5 4-.3l3.7 12.2H13zm11.1-.9h-.7c-3 0-5.2.2-7.4.4l-.8.1-.2-.5-4-15.3c4-.8 9.2 0 13 2.4v12.9h.1zm11.3.5-.8-.1c-2.1-.2-4.4-.4-7.4-.4h-.8V21.6c3.8-2.4 9.1-3.2 13-2.4l-4 15.3v.5zm3.8.7H39c-.3-.1-1.2-.2-1.5-.3h-.2L41 23.2c1-.2 3-.1 4 .3l-5.8 12.2zm-18-23c0 1.8 1.8 3.3 4 3.3 2.3 0 4.1-1.5 4.1-3.3 0-1.5-1.3-2.8-3.1-3.1V7.2h2.5v-2h-2.5V2.7h-2v2.5h-2.5v2h2.5v2.4c-1.7.3-3 1.6-3 3.1zm4-1.7c1.3 0 2.3.8 2.3 1.7s-1 1.6-2.3 1.6-2.3-.7-2.3-1.6S24 11 25.2 11zM10.3 41.3l.1 2.3S14.7 42 25.3 42 40 43.6 40 43.6l.1-2.3s-4.1-1.6-14.8-1.6c-10.6 0-15 1.6-15 1.6z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.4 61.4c-.3-.3-.7-.5-1.1-.7s-.8-.4-1.2-.5-.8-.3-1.2-.4-.8-.3-1.1-.4-.6-.4-.8-.6-.3-.5-.3-.9c0-.3 0-.5.1-.7s.2-.4.4-.6.4-.3.7-.4.6-.1 1-.1.8.1 1.1.2l.8.3.6.3c.2.1.3.2.5.2.1 0 .2 0 .3-.1l.3-.3.7-1.3c-.5-.5-1.1-.9-1.8-1.1s-1.5-.4-2.4-.4c-.8 0-1.4.1-2 .4s-1.1.5-1.5.9-.7.8-.9 1.3-.3 1-.3 1.5c0 .7.1 1.2.3 1.7.2.4.4.8.8 1.1.3.3.7.5 1.1.7s.8.3 1.2.5c.4.1.8.3 1.2.4s.8.3 1.1.4c.3.2.6.4.8.6s.3.5.3.9c0 .7-.2 1.2-.6 1.6s-1 .5-1.8.5c-.5 0-.9-.1-1.3-.2s-.7-.3-.9-.5c-.3-.2-.5-.3-.7-.5s-.4-.2-.5-.2-.2 0-.3.1-.2.1-.3.2l-.8 1.3c.3.3.6.5 1 .8.4.2.7.4 1.2.6.4.2.8.3 1.3.4.4.1.9.1 1.4.1.8 0 1.5-.1 2.1-.4s1.1-.6 1.6-1c.4-.4.8-.9 1-1.5s.3-1.2.3-1.8-.1-1.1-.3-1.5c-.6-.3-.8-.6-1.1-.9zm2.1-5.2h4.4v12.3h2.7V56.2h4.3V54H75.5zm21.9-2c-.1.1-.3.3-.3.4l-2.6 4.8c-.1.3-.3.6-.4.8l-.3.8-.3-.8c-.1-.3-.3-.5-.4-.8l-2.6-4.8c-.1-.2-.2-.3-.3-.4s-.3-.2-.6-.2h-2.4l5.3 8.9v5.6h2.7v-5.6l5.3-8.9h-2.4c-.3 0-.5.1-.7.2zm11.8 8.5c-.1-.1-.3-.3-.5-.4l1.4-.6c.4-.2.7-.6 1-.9.3-.4.5-.7.6-1.2s.2-.9.2-1.4c0-.6-.1-1.2-.3-1.7s-.5-.9-1-1.3-1-.7-1.7-.9-1.5-.3-2.5-.3H102v14.5h2.7v-5.7h1.2c.3 0 .5 0 .6.1s.3.2.4.4l3 4.6c.2.4.5.5 1 .5h2.4l-3.6-5.3c-.2-.1-.3-.3-.5-.4zm-1.6-2c-.4.1-.8.2-1.3.2h-1.7v-4.8h1.7c1 0 1.7.2 2.2.6s.7 1 .7 1.7c0 .4-.1.7-.2 1s-.3.6-.5.8-.5.4-.9.5zm7.3 7.8h9.1v-2.2h-6.4v-4h5v-2.1h-5v-4h6.4V54h-9.1zM129.1 54h-2.6v14.5h8.4v-2.2h-5.8zm15.4 7.4c-.3-.3-.7-.5-1.1-.7s-.8-.4-1.2-.5-.8-.3-1.2-.4-.8-.3-1.1-.4-.6-.4-.8-.6-.3-.5-.3-.9c0-.3 0-.5.1-.7s.2-.4.4-.6.4-.3.7-.4.6-.1 1-.1.8.1 1.1.2l.8.3.6.3c.2.1.3.2.5.2.1 0 .2 0 .3-.1l.3-.3.7-1.3c-.5-.5-1.1-.9-1.8-1.1s-1.5-.4-2.4-.4c-.8 0-1.4.1-2 .4s-1.1.5-1.5.9-.7.8-.9 1.3-.3 1-.3 1.5c0 .7.1 1.2.3 1.7.2.4.4.8.8 1.1.3.3.7.5 1.1.7s.8.3 1.2.5c.4.1.8.3 1.2.4s.8.3 1.1.4c.3.2.6.4.8.6s.3.5.3.9c0 .7-.2 1.2-.6 1.6s-1 .5-1.8.5c-.5 0-.9-.1-1.3-.2s-.7-.3-.9-.5c-.3-.2-.5-.3-.7-.5s-.4-.2-.5-.2-.2 0-.3.1-.2.1-.3.2l-.8 1.3c.3.3.6.5 1 .8.4.2.7.4 1.2.6.4.2.8.3 1.3.4.4.1.9.1 1.4.1.8 0 1.5-.1 2.1-.4s1.1-.6 1.6-1c.4-.4.8-.9 1-1.5s.3-1.2.3-1.8-.1-1.1-.3-1.5c-.5-.3-.8-.6-1.1-.9zm3.5 7.1h9.1v-2.2h-6.4v-4h5v-2.1h-5v-4h6.4V54H148zm21.4-5.7v1.3l-7.6-9.7c-.1-.1-.1-.2-.2-.2-.1-.1-.1-.1-.2-.1s-.1 0-.2-.1h-1.7v14.5h2.4v-8.9c0-.4 0-.8-.1-1.2l7.6 9.6c.1.2.3.3.4.4s.3.1.5.1h1.4V54h-2.3v8.8zm10.6 5.7h2.7v-5.9h5.4v-2.1h-5.4v-4.3h6.4V54H180zm24.1-11c-.3-.5-.7-1-1.1-1.5-.4-.4-.9-.8-1.5-1.1-.5-.3-1.1-.6-1.8-.7s-1.3-.3-2.1-.3a7.63 7.63 0 0 0-5.3 2.1c-.6.7-1.1 1.4-1.5 2.3s-.5 1.9-.5 2.9c0 1.1.2 2 .5 2.9s.9 1.7 1.5 2.3c.6.7 1.4 1.2 2.3 1.5.9.4 1.9.6 3 .6s2.1-.2 3-.6 1.7-.9 2.3-1.5c.6-.7 1.1-1.4 1.5-2.3s.5-1.9.5-2.9c0-.7-.1-1.4-.2-2 0-.6-.3-1.2-.6-1.7zm-2.1 5.9a4.17 4.17 0 0 1-2.3 2.6c-.5.2-1.2.4-1.9.4s-1.3-.1-1.9-.4a5.02 5.02 0 0 1-1.4-1c-.4-.4-.7-1-.9-1.6s-.3-1.3-.3-2.1.1-1.5.3-2.1.5-1.2.9-1.6.9-.8 1.4-1c.6-.2 1.2-.3 1.9-.3s1.3.1 1.9.3 1 .6 1.4 1 .7 1 .9 1.6.3 1.3.3 2.1-.1 1.5-.3 2.1zm12.8-.7c-.1-.1-.3-.3-.5-.4l1.4-.6c.4-.2.7-.6 1-.9.3-.4.5-.7.6-1.2.1-.4.2-.9.2-1.4 0-.6-.1-1.2-.3-1.7s-.5-.9-1-1.3c-.4-.4-1-.7-1.7-.9S213 54 212 54h-4.4v14.5h2.7v-5.7h1.2c.3 0 .5 0 .6.1s.3.2.4.4l3 4.6c.2.4.5.5 1 .5h2.4l-3.6-5.3c-.3-.1-.4-.3-.5-.4zm-1.6-2c-.4.1-.8.2-1.3.2h-1.7v-4.8h1.7c1 0 1.7.2 2.2.6s.7 1 .7 1.7c0 .4-.1.7-.2 1s-.3.6-.5.8-.5.4-.9.5zm12.2-6.7h2.7v14.5h-2.7zm4.7 2.2h4.3v12.3h2.7V56.2h4.4V54h-11.4zm30.6 1.3c-.3-.5-.7-1-1.1-1.5s-.9-.8-1.5-1.1c-.5-.3-1.1-.6-1.8-.7s-1.3-.3-2.1-.3a7.63 7.63 0 0 0-5.3 2.1c-.6.7-1.1 1.4-1.5 2.3s-.5 1.9-.5 2.9c0 1.1.2 2 .5 2.9.4.9.9 1.7 1.5 2.3.6.7 1.4 1.2 2.3 1.5.9.4 1.9.6 3 .6s2.1-.2 3-.6 1.7-.9 2.3-1.5c.6-.7 1.1-1.4 1.5-2.3a9.3 9.3 0 0 0 .3-4.9c-.1-.6-.3-1.2-.6-1.7zm-2.2 5.9a4.17 4.17 0 0 1-2.3 2.6c-.5.2-1.2.4-1.9.4s-1.3-.1-1.9-.4a5.02 5.02 0 0 1-1.4-1c-.4-.4-.7-1-.9-1.6s-.3-1.3-.3-2.1.1-1.5.3-2.1.5-1.2.9-1.6.9-.8 1.4-1c.6-.2 1.2-.3 1.9-.3s1.3.1 1.9.3 1 .6 1.4 1 .7 1 .9 1.6.3 1.3.3 2.1-.1 1.5-.3 2.1zm12.7-.6c0 .1 0 .3.1.4s.2.1.4.1h1.8v2.6c-.4.2-.8.3-1.2.5-.4.1-.9.2-1.4.2-.7 0-1.4-.1-2-.4-.6-.2-1.1-.6-1.6-1-.4-.5-.8-1-1-1.6a6.65 6.65 0 0 1-.1-4.3 3.96 3.96 0 0 1 2.4-2.6 5.85 5.85 0 0 1 3.1-.3c.3.1.6.1.9.2s.5.2.7.3.4.3.7.4c.2.1.4.2.6.1.2 0 .4-.2.5-.4l.8-1.2c-.3-.3-.6-.5-1-.8l-1.2-.6c-.4-.2-.9-.3-1.4-.4s-1.1-.1-1.6-.1c-1.2 0-2.2.2-3.1.5s-1.7.9-2.4 1.5c-.7.7-1.2 1.4-1.5 2.3-.4.9-.5 1.9-.5 3s.2 2.1.5 3c.4.9.9 1.7 1.6 2.3a6.08 6.08 0 0 0 2.4 1.5c1 .4 2 .5 3.2.5.9 0 1.8-.1 2.7-.4s1.6-.6 2.3-1.2v-5.8h-4.8v1.7h.1zm15.1-8.8h-2.7v14.5h8.4v-2.2h-5.7zm5.9 14.5h2c.2 0 .4-.1.6-.2s.3-.3.4-.4l1.4-3h5.2l.4 3.6h8v-2.2h-5.7l-.5-4.1h4.8v-2.1h-5.1l-.5-4h6.9V54h-10.7l-7.2 14.5zm8.3-11.5.3-1 .9 7h-4l2.5-5.2c.1-.2.2-.5.3-.8zm19.6 5.7c-.1-.1-.3-.3-.5-.4l1.4-.6c.4-.2.7-.6 1-.9.3-.4.5-.7.6-1.2s.2-.9.2-1.4c0-.6-.1-1.2-.3-1.7s-.5-.9-1-1.3-1-.7-1.7-.9-1.5-.3-2.5-.3h-4.4v14.5h2.7v-5.7h1.2c.3 0 .5 0 .6.1s.3.2.4.4l3 4.6c.2.4.5.5 1 .5h2.4l-3.6-5.3c-.3-.1-.4-.3-.5-.4zm-1.6-2c-.4.1-.8.2-1.3.2h-1.7v-4.8h1.7c1 0 1.7.2 2.2.6s.7 1 .7 1.7c0 .4-.1.7-.2 1s-.3.6-.5.8-.5.4-.9.5zm7.2-6.7h2.7v14.5h-2.7zm15.9 8.8v1.3l-7.6-9.7c-.1-.1-.1-.2-.2-.2s-.1-.1-.2-.1-.1 0-.2-.1h-1.7v14.5h2.4v-8.9c0-.4 0-.8-.1-1.2l7.5 9.6c.1.2.3.3.4.4s.3.1.5.1h1.4V54h-2.4v8.8h.2zm12.7-1.6v1.5c0 .1 0 .3.1.4s.2.1.4.1h1.8v2.6c-.4.2-.8.3-1.2.5-.4.1-.9.2-1.4.2-.7 0-1.4-.1-2-.4s-1.1-.6-1.6-1c-.4-.5-.8-1-1-1.6a6.65 6.65 0 0 1-.1-4.3 3.96 3.96 0 0 1 2.4-2.6 5.85 5.85 0 0 1 3.1-.3c.3.1.6.1.9.2s.5.2.7.3.4.3.7.4c.2.1.4.2.6.1.2 0 .3-.2.5-.4l.8-1.2c-.3-.3-.6-.5-1-.8s-.8-.4-1.2-.6-.9-.3-1.4-.4-1.1-.1-1.6-.1c-1.2 0-2.2.2-3.1.5s-1.7.9-2.4 1.5-1.2 1.4-1.5 2.3c-.4.9-.5 1.9-.5 3s.2 2.1.5 3a6.96 6.96 0 0 0 4.1 3.8c1 .4 2 .5 3.2.5.9 0 1.8-.1 2.7-.4s1.6-.6 2.3-1.2V61h-4.8v.2z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#4a4a4a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.6 25.1c.5-.2.9-.4 1.2-.7s.6-.6.8-1 .3-.8.3-1.3c0-1.3-.7-2.1-2.2-2.4.3-.1.6-.3.9-.4s.4-.3.6-.6c.2-.2.3-.4.3-.7.1-.2.1-.5.1-.7 0-.4-.1-.8-.2-1.2s-.4-.7-.7-.9-.7-.4-1.2-.6c-.5-.1-1.1-.2-1.8-.2H65v10.8h4.1a2.62 2.62 0 0 0 1.5-.1zm-3.8-9h1.7c.7 0 1.2.1 1.5.4.3.2.5.6.5 1.2 0 .5-.2.9-.5 1.2-.4.2-.9.4-1.6.4h-1.6v-3.2zm0 7.7v-3.2h2c.4 0 .7 0 .9.1.3.1.5.2.6.3.2.1.3.3.4.5s.1.4.1.6 0 .4-.1.6-.2.4-.3.5c-.2.2-.4.3-.6.4-.3.1-.6.1-.9.1h-2.1v.1zm8.9 2.4c.2 0 .4 0 .6-.1s.4-.2.5-.4l.6-.8c.4.2.8.4 1.3.5a5.9 5.9 0 0 0 3.6-.2c.7-.3 1.3-.7 1.7-1.2.5-.5.9-1.1 1.1-1.8s.4-1.4.4-2.2-.1-1.6-.4-2.3-.7-1.3-1.2-1.8l1.3-1.8h-1.3c-.1 0-.1 0-.2.1l-.4.4-.4.6c-.4-.2-.9-.4-1.3-.5a6.96 6.96 0 0 0-1.6-.2 5.09 5.09 0 0 0-3.9 1.6c-.4.5-.9 1.1-1.1 1.8a6.04 6.04 0 0 0 .1 4.6c.3.7.8 1.3 1.3 1.8l-1.5 2h.8v-.1zm7.6-7.7c.1.4.2.9.2 1.4 0 .6-.1 1.1-.2 1.6-.2.5-.4.9-.7 1.2a4.44 4.44 0 0 1-1.1.8c-.4.2-.9.3-1.4.3-.6 0-1.1-.1-1.6-.3l4.4-6c.1.2.3.6.4 1zm-6.4-.2c.2-.5.4-.9.7-1.2a4.44 4.44 0 0 1 1.1-.8c.4-.2.9-.3 1.4-.3.4 0 .7 0 1 .1l.8.3-4.4 6.1c-.3-.3-.5-.7-.6-1.2s-.2-1-.2-1.5c-.1-.5 0-1 .2-1.5z\"\n }), /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#a\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.8 18.7v-.9l5.7 7.2.3.3c.1.1.2.1.4.1h1V14.6h-1.8v7.6l-5.7-7.3-.3-.3h-1.5v10.8h1.8v-6.7h.1zm17.2 5h-4.8v-3h3.8v-1.6h-3.8v-3h4.8v-1.6h-6.8v10.8h6.8zm2-3.7h3.9v1.5H119zm11.5 3.9a6.57 6.57 0 0 0 1.7 1.2c.7.3 1.4.4 2.2.4a5.09 5.09 0 0 0 5-3.4c.2-.7.4-1.4.4-2.2 0-.5-.1-1-.2-1.5s-.3-.9-.5-1.3a4.44 4.44 0 0 0-1.9-1.9c-.4-.2-.8-.4-1.3-.5s-1-.2-1.6-.2a5.09 5.09 0 0 0-3.9 1.6c-.4.5-.9 1.1-1.1 1.8-.3.7-.4 1.4-.4 2.2s.1 1.5.4 2.2.7 1.1 1.2 1.6zm.8-5.6c.2-.5.4-.9.7-1.2a4.44 4.44 0 0 1 1.1-.8c.4-.2.9-.3 1.4-.3s1 .1 1.4.3.8.4 1.1.8.5.7.7 1.2.2 1 .2 1.6-.1 1.1-.2 1.6-.4.9-.7 1.2a4.44 4.44 0 0 1-1.1.8c-.4.2-.9.3-1.4.3s-1-.1-1.4-.3-.8-.4-1.1-.8c-.3-.3-.5-.7-.7-1.2s-.2-1-.2-1.6 0-1.1.2-1.6zm11.9 5.6c.5.5 1.1.9 1.8 1.1.7.3 1.5.4 2.4.4a6.45 6.45 0 0 0 3.8-1.2v-4.4h-3.6v1.1c0 .1 0 .2.1.3s.2.1.3.1h1.4v2c-.3.1-.6.3-.9.3s-.7.1-1.1.1c-.6 0-1.1-.1-1.5-.3s-.8-.4-1.2-.8c-.3-.3-.6-.8-.8-1.2-.2-.5-.3-1-.3-1.7 0-.6.1-1.1.2-1.6.2-.5.4-.9.7-1.2a4.44 4.44 0 0 1 1.1-.8c.4-.2.9-.3 1.5-.3.3 0 .6 0 .9.1s.5.1.7.2.4.2.6.2c.2.1.3.2.5.3a.9.9 0 0 0 .5.1c.2 0 .3-.1.4-.3l.6-.9c-.2-.2-.5-.4-.7-.6s-.6-.3-.9-.4-.7-.2-1.1-.3-.8-.1-1.2-.1c-.9 0-1.6.1-2.3.4s-1.3.6-1.8 1.1-.9 1.1-1.1 1.8-.4 1.4-.4 2.2.1 1.5.4 2.2a3.21 3.21 0 0 0 1 2.1zM65.9 42.2c.4.4.9.7 1.4.9s1.2.3 1.9.3 1.3-.1 1.9-.3 1-.5 1.4-.9.7-.9.9-1.4.3-1.1.3-1.8v-6.5h-2V39c0 .4-.1.8-.2 1.1s-.3.6-.5.9c-.2.2-.5.4-.8.5s-.7.2-1 .2c-.4 0-.7-.1-1-.2s-.6-.3-.8-.6c-.2-.2-.4-.5-.5-.9-.1-.3-.2-.7-.2-1.1v-6.5h-2v6.5c0 .6.1 1.2.3 1.8s.5 1.1.9 1.5zm18.3 1.1c.1.1.2.1.4.1h1V32.6h-1.8v7.6l-5.7-7.3c-.1-.1-.1-.1-.1-.2l-.1-.1h-1.5v10.8h1.8v-7.6l5.7 7.2.3.3zm8.5-10.8h-4.1v10.8h4.1c.8 0 1.6-.1 2.2-.4.7-.3 1.3-.6 1.7-1.1a5.38 5.38 0 0 0 1.5-3.9 5.38 5.38 0 0 0-1.5-3.9c-.5-.5-1.1-.8-1.7-1.1s-1.4-.4-2.2-.4zm3.2 3.8c.2.5.2 1 .2 1.6s-.1 1.1-.2 1.6-.4.9-.7 1.2a4.44 4.44 0 0 1-1.1.8c-.4.2-.9.3-1.4.3h-2.1v-7.7h2.1c.5 0 1 .1 1.4.3s.8.4 1.1.8.5.6.7 1.1zm11.5 5.4h-4.9v-3h3.8v-1.6h-3.8v-3h4.9v-1.6h-6.9v10.8h6.9zm8.9 1.6h1.8l-2.7-4c-.1-.1-.2-.3-.3-.4s-.2-.2-.4-.3c.4-.1.7-.3 1-.5s.5-.4.8-.7c.2-.3.4-.6.5-.9s.2-.7.2-1c0-.5-.1-.9-.2-1.3-.2-.4-.4-.7-.7-1s-.8-.5-1.3-.6-1.2-.2-1.9-.2h-3.3v10.8h2v-4.1h.9c.2 0 .4 0 .5.1s.2.1.3.3l2.3 3.5c-.1.2.2.3.5.3zm-2.3-5.8c-.3.1-.6.1-1 .1h-1.3v-3.5h1.3c.7 0 1.3.1 1.7.4s.5.7.5 1.3c0 .3 0 .5-.1.8-.1.2-.2.4-.4.6-.2.1-.5.2-.7.3zm13.2-5c-.2 0-.3 0-.4.1s-.2.2-.2.3l-2.5 6.6c-.1.2-.2.5-.2.7-.1.3-.1.5-.2.8-.1-.3-.1-.5-.2-.8s-.2-.5-.2-.7l-2.6-6.6c-.1-.1-.1-.2-.2-.3s-.3-.1-.4-.1h-1.6l4.4 10.8h1.8l4.4-10.8h-1.9zm3.3 0h2v10.8h-2zm6.7 10.9c.3.1.7.1 1 .1.6 0 1.1-.1 1.6-.3s.9-.4 1.2-.8c.3-.3.6-.7.7-1.1s.3-.9.3-1.4-.1-.8-.2-1.1-.3-.6-.6-.8c-.2-.2-.5-.4-.8-.5s-.6-.3-.9-.4l-.9-.3-.8-.3c-.2-.1-.4-.3-.6-.4s-.2-.4-.2-.6 0-.4.1-.6a1.38 1.38 0 0 1 .3-.4c.1-.1.3-.2.5-.3s.5-.1.7-.1c.3 0 .6 0 .8.1l.6.3a1.38 1.38 0 0 1 .4.3c.1.1.2.1.3.1s.2 0 .3-.1c.1 0 .1-.1.2-.2l.5-1c-.4-.4-.8-.6-1.4-.8a4.84 4.84 0 0 0-3.3 0c-.4.2-.8.4-1.1.7s-.5.6-.7 1-.2.8-.2 1.2a3.73 3.73 0 0 0 .2 1.2c.1.3.3.6.6.8.2.2.5.4.8.5s.6.3.9.4l.9.3.8.3c.2.1.4.3.6.5.1.2.2.4.2.7 0 .5-.2.9-.5 1.2s-.8.4-1.3.4c-.4 0-.7-.1-1-.2s-.5-.2-.7-.3-.4-.2-.5-.3a.76.76 0 0 0-.4-.2c-.1 0-.2 0-.3.1-.1 0-.1.1-.2.2l-.6 1c.2.2.4.4.7.6s.6.3.9.5c.4-.2.7-.1 1.1 0zm14.4-.4.3.3c.1.1.2.1.4.1h1V32.6h-1.8v7.6l-5.7-7.3c-.1-.1-.1-.1-.1-.2l-.1-.1h-1.5v10.8h1.8v-7.6l5.7 7.2zm4.7-10.5h2v10.8h-2zm6.8 4.2v-.9l5.7 7.2.3.3c.1.1.2.1.4.1h1V32.6h-1.8v7.6l-5.7-7.3-.3-.3h-1.5v10.8h1.8v-6.7h.1zm19.3 5.6v-4.4h-3.6V39c0 .1 0 .2.1.3s.2.1.3.1h1.4v2c-.3.1-.6.3-.9.3-.3.1-.7.1-1.1.1-.6 0-1.1-.1-1.5-.3-.5-.2-.8-.4-1.2-.8-.3-.3-.6-.8-.8-1.2-.2-.5-.3-1-.3-1.7 0-.6.1-1.1.2-1.6.2-.5.4-.9.7-1.2a4.44 4.44 0 0 1 1.1-.8c.4-.2.9-.3 1.5-.3.3 0 .6 0 .9.1.3 0 .5.1.7.2s.4.2.6.2.3.2.5.3a.9.9 0 0 0 .5.1c.1 0 .3-.1.4-.3l.6-.9c-.2-.2-.5-.4-.7-.6-.3-.2-.6-.3-.9-.4s-.7-.2-1.1-.3-.8-.1-1.2-.1c-.9 0-1.6.1-2.3.4s-1.3.6-1.8 1.1-.9 1.1-1.1 1.8c-.3.7-.4 1.4-.4 2.2a5.38 5.38 0 0 0 1.6 4c.5.5 1.1.9 1.8 1.1.7.3 1.5.4 2.4.4.7 0 1.4-.1 2-.3.4.1 1-.2 1.6-.6zm8.9-2.4c0-.5-.1-.8-.2-1.1s-.3-.6-.6-.8c-.2-.2-.5-.4-.8-.5s-.6-.3-.9-.4l-.9-.3-.8-.3c-.2-.1-.4-.3-.6-.4s-.2-.4-.2-.6 0-.4.1-.6a1.38 1.38 0 0 1 .3-.4c.1-.1.3-.2.5-.3s.5-.1.7-.1c.3 0 .6 0 .8.1l.6.3a1.38 1.38 0 0 1 .4.3c.1.1.2.1.3.1s.2 0 .3-.1l.2-.2.5-1c-.4-.4-.8-.6-1.4-.8a4.84 4.84 0 0 0-3.3 0c-.4.2-.8.4-1.1.7s-.5.6-.7 1-.2.8-.2 1.2a3.73 3.73 0 0 0 .2 1.2c.1.3.3.6.6.8.2.2.5.4.8.5s.6.3.9.4l.9.3.8.3c.2.1.4.3.6.5.1.2.2.4.2.7 0 .5-.2.9-.5 1.2s-.8.4-1.3.4c-.4 0-.7-.1-1-.2s-.5-.2-.7-.3-.4-.2-.5-.3a.76.76 0 0 0-.4-.2c-.1 0-.2 0-.3.1-.1 0-.1.1-.2.2l-.6 1c.2.2.5.4.7.6.3.2.6.3.9.5l1 .3c.3.1.7.1 1 .1.6 0 1.1-.1 1.6-.3s.9-.4 1.2-.8c.3-.3.6-.7.7-1.1s.4-1.2.4-1.7zm12.3-7.4h-.2c-.1 0-.1.1-.1.1s-.1.1-.1.2l-3.2 6c-.1.2-.2.3-.2.5-.1.2-.1.4-.2.5-.1-.2-.1-.4-.2-.5s-.2-.3-.2-.5l-3.2-6c0-.1-.1-.1-.1-.2l-.1-.1h-1.9v10.8h1.8v-7.9l3.3 6.2c.2.3.4.4.7.4h.3c.3 0 .6-.1.7-.4l3.3-6.2v7.9h1.8V32.5h-2.2zm4.7 0h2v10.8h-2zm12.4 6.6v1l-5.7-7.3c-.1-.1-.1-.1-.1-.2l-.1-.1h-1.5v10.8h1.8v-7.6l5.7 7.2.3.3c.1.1.2.1.4.1h1V32.5h-1.8v6.6zm4.7-6.6h2v10.8h-2zm7.8 9.3c-.4 0-.7-.1-1-.2s-.5-.2-.7-.3-.4-.2-.5-.3a.76.76 0 0 0-.4-.2c-.1 0-.2 0-.3.1-.1 0-.1.1-.2.2l-.6 1c.2.2.4.4.7.6s.6.3.9.5.6.2 1 .3.7.1 1 .1c.6 0 1.1-.1 1.6-.3s.9-.4 1.2-.8c.3-.3.6-.7.7-1.1a3.2 3.2 0 0 0 .1-2.5c-.1-.3-.3-.6-.6-.8s-.5-.4-.8-.5-.6-.3-.9-.4l-.9-.3-.8-.3c-.2-.1-.4-.3-.6-.4s-.2-.4-.2-.6 0-.4.1-.6a1.38 1.38 0 0 1 .3-.4c.1-.1.3-.2.5-.3s.5-.1.7-.1c.3 0 .6 0 .8.1l.6.3a1.38 1.38 0 0 1 .4.3c.1.1.2.1.3.1s.2 0 .2-.1c.1 0 .1-.1.2-.2l.5-1c-.4-.4-.8-.6-1.4-.8a5.23 5.23 0 0 0-1.8-.3c-.6 0-1.1.1-1.5.3s-.8.4-1.1.7-.5.6-.7 1-.2.8-.2 1.2a3.73 3.73 0 0 0 .2 1.2c.1.3.3.6.6.8.2.2.5.4.8.5s.6.3.9.4l.9.3.8.3c.2.1.4.3.6.5.1.2.2.4.2.7 0 .5-.2.9-.5 1.2s-.5.1-1.1.1zm5-7.6h3.3v9.1h2v-9.1h3.3v-1.7h-8.6zm17.4 7.5h-4.9v-3h3.8v-1.6h-3.8v-3h4.9v-1.6h-6.9v10.8h6.9z\"\n }), /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#a\",\n x: 170,\n y: 18\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M268.1 32.5h2v10.8h-2zm5 10.8h6.8v-1.6h-4.8v-3h3.8v-1.6h-3.8v-3h4.8v-1.6h-6.8zm11.4 0h2v-9.1h3.3v-1.7h-8.6v1.7h3.3z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: \"a\",\n d: \"M89.9 21.1h.9c.2 0 .4 0 .5.1s.2.1.3.3l2.3 3.5c.2.3.4.4.8.4h1.8l-2.7-4c-.1-.1-.2-.3-.3-.4s-.2-.2-.4-.3c.4-.1.7-.3 1-.5s.5-.4.8-.7c.2-.3.4-.6.5-.9s.2-.7.2-1c0-.5-.1-.9-.2-1.3-.2-.4-.4-.7-.7-1s-.8-.5-1.3-.6-1.2-.2-1.9-.2h-3.3v10.8h2v-4.2h-.3zm0-5h1.3c.7 0 1.3.1 1.7.4s.5.7.5 1.3c0 .3 0 .5-.1.8-.1.2-.2.4-.4.6s-.4.3-.7.4-.6.1-1 .1h-1.3v-3.6z\"\n }))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Styrelsen for It og L\\xE6ring\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.309e7bff.svg\";\nexport { ForwardRef as ReactComponent };","var _style, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoCrown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlSpace: \"preserve\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n id: \"Lag_1\",\n style: {\n enableBackground: \"new 0 0 33 34\"\n },\n viewBox: \"0 0 33 34\",\n x: \"0px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n y: \"0px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \" .st0{fill:#020203;}\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M30.8,13c-0.6-0.2-1.6-0.3-2.1-0.3c-0.3,0-0.5,0-0.7,0h-0.3c0.2-0.8,0.3-1.2,0.3-1.6c0-0.7-0.4-1.1-1.3-1.2 c-0.5-0.1-1.1-0.2-2.2-0.2c-2.6,0-5.2,0.6-7.8,2.2c-2.5-1.6-5.2-2.2-7.8-2.2c-1,0-1.8,0.1-2.2,0.2c-0.9,0.1-1.3,0.5-1.3,1.2 c0,0.3,0.1,0.7,0.3,1.6H5.3c-0.2,0-0.4,0-0.7,0c-0.5,0-1.5,0.1-2.1,0.3c-0.8,0.3-1.1,0.9-0.5,2.1c0.7,1.5,4.7,9,4.7,9L6.7,24 c2.7-0.7,7.1-0.9,9.6-0.9h0.3h0.3c2.5,0,6.9,0.2,9.6,0.9l0.1,0.1c0,0,3.9-7.5,4.7-9C31.9,13.8,31.5,13.2,30.8,13z M8.3,22.3 c-0.2,0-0.8,0.1-1,0.2H7.2l-3.9-8.2C3.9,14,5.2,13.9,6,14l2.5,8.2H8.3z M15.8,21.7h-0.5c-2,0-3.5,0.1-5,0.3L9.8,22l-0.1-0.3L7,11.3 c2.7-0.5,6.2,0,8.8,1.6L15.8,21.7L15.8,21.7z M23.4,22.1L22.8,22c-1.4-0.1-3-0.3-5-0.3h-0.5V13c2.6-1.6,6.1-2.2,8.8-1.6l-2.7,10.3 L23.4,22.1z M26,22.5h-0.1c-0.2-0.1-0.8-0.1-1-0.2h-0.1l2.5-8.2c0.7-0.1,2-0.1,2.7,0.2L26,22.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M13.8,7c0,1.2,1.2,2.2,2.7,2.2c1.6,0,2.8-1,2.8-2.2c0-1-0.9-1.9-2.1-2.1V3.3h1.7V1.9h-1.7V0.2h-1.3v1.7h-1.7 v1.3h1.7v1.6C14.7,5.1,13.8,6,13.8,7z M16.5,5.8c0.9,0,1.6,0.5,1.6,1.1c0,0.6-0.7,1.1-1.6,1.1C15.7,8,15,7.6,15,7 C15,6.4,15.7,5.8,16.5,5.8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"_ngcontent-olj-c2\": \"\",\n className: \"st0\",\n d: \"M6.5,26.2l0.1,1.6c0,0,2.9-1.1,10-1.1s9.9,1.1,9.9,1.1l0.1-1.6c0,0-2.8-1.1-10-1.1S6.5,26.2,6.5,26.2z\"\n }))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId || \"Testafvikleren\"\n }, \"Testafvikleren\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId || \"Testafvikleren\"\n }, title) : null);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoCrown);\nexport default __webpack_public_path__ + \"static/media/logo_crown.755699b8.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as Image } from \"../../assets/img/logo.svg\";\nimport { FunctionComponent } from \"react\";\n\nconst Logo: FunctionComponent = () => {\n return (\n
\n
\n \n
\n
\n );\n};\n\nexport default Logo;\n","import { FunctionComponent } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport styles from \"./AccessibilityCookies.module.scss\";\n\nconst AccessibilityCookies: FunctionComponent = () => {\n const history = useHistory();\n\n return (\n
\n

\n Webtilgængelighed og cookies\n

\n
    \n
  • \n \n Tilgængelighedserklæring\n \n
  • \n
  • \n \n
  • \n
  • \n \n
  • \n
  • \n \n
  • \n
\n
\n );\n};\n\nexport default AccessibilityCookies;\n","import { FunctionComponent } from \"react\";\nimport styles from \"./Kontakt.module.scss\";\n\nconst Kontakt: FunctionComponent = () => {\n return (\n
\n

\n Kontakt\n

\n \n
\n );\n};\n\nexport default Kontakt;\n","import { FunctionComponent } from \"react\";\nimport styles from \"./HjaelpendeLinks.module.scss\";\n\nconst HjaelpendeLinks: FunctionComponent = () => {\n return (\n
\n

\n Hjælpende links\n

\n
    \n
  • \n \n Find hjælp her\n \n
  • \n
  • \n \n Testvejledninger (FGU)\n \n
  • \n
  • \n \n Testvejledninger (FVU)\n \n
  • \n
  • \n \n Tekniske krav\n \n
  • \n
\n
\n );\n};\n\nexport default HjaelpendeLinks;\n","import { FunctionComponent } from \"react\";\nimport Logo from \"../Logo\";\nimport AccessibilityCookies from \"../AccessibilityCookies/AccessibilityCookies\";\nimport Kontakt from \"../Kontakt/Kontakt\";\nimport HjaelpendeLinks from \"../HjaelpendeLinks/HjaelpendeLinks\";\nimport styles from \"./Footer.module.scss\";\n\nconst Footer: FunctionComponent = () => {\n return (\n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Footer;\n","import { FunctionComponent, useContext, useEffect, useState } from \"react\";\nimport OpgavesaetContext from \"../OpgavesaetContext\";\n\nconst Logo: FunctionComponent = () => {\n const { testnavn } = useContext(OpgavesaetContext);\n const [tekst, setTekst] = useState(\"Testafvikleren\");\n\n useEffect(() => {\n if (testnavn != undefined) {\n setTekst(testnavn);\n } else {\n setTekst(\"Testafvikleren\");\n }\n }, [testnavn]);\n\n return <>{tekst};\n};\n\nexport default Logo;\n","export enum Roles {\n VEJLEDER = \"vejleder\",\n SUPPORTER = \"supporter\"\n}\n"," export enum SessionStorage {\n SHOW_ARCHIVED = \"showArchived\",\n KC_TOKEN = \"kcToken\",\n KC_REFRESH_TOKEN = \"kcRefreshToken\",\n BRUGERKODE = \"brugerkode\",\n ROLE = \"role\",\n SUPPORTSAG = \"supportsag\"\n }","import { ReactComponent as Image } from \"../../assets/img/logo_crown.svg\";\nimport { FunctionComponent } from \"react\";\n\nconst Logo: FunctionComponent = () => {\n return ;\n};\n\nexport default Logo;\n","import { Roles } from \"../../shared/enums/Roles\";\nimport { SessionStorage } from \"../../shared/enums/Storage\";\n\nexport class AuthorizationService {\n public clearSessionStorage(): void {\n this.deleteTokenInSessionStorage();\n this.deleteRefreshTokenInSessionStorage();\n this.deleteRoleInSessionStorage();\n this.deleteSupportsagInSessionStorage();\n console.log(\"Session storage cleared.\");\n }\n\n public setRoleInSessionStorage(role: string): void {\n sessionStorage.setItem(SessionStorage.ROLE, role);\n }\n\n public setKeycloakTokenInSessionStorage(token: string): void {\n sessionStorage.setItem(SessionStorage.KC_TOKEN, token);\n }\n\n public setKeycloakRefreshTokenInSessionStorage(token: string): void {\n sessionStorage.setItem(SessionStorage.KC_REFRESH_TOKEN, token);\n }\n\n public deleteRoleInSessionStorage(): void {\n sessionStorage.removeItem(SessionStorage.ROLE);\n }\n\n public deleteTokenInSessionStorage(): void {\n sessionStorage.removeItem(SessionStorage.KC_TOKEN);\n }\n\n public deleteRefreshTokenInSessionStorage(): void {\n sessionStorage.removeItem(SessionStorage.KC_REFRESH_TOKEN);\n }\n\n public deleteSupportsagInSessionStorage(): void {\n sessionStorage.removeItem(SessionStorage.SUPPORTSAG);\n }\n\n public getCurrentRole(): string | null {\n const userStr = sessionStorage.getItem(SessionStorage.ROLE);\n\n return (userStr ? userStr : null);\n }\n\n public isVejleder(): boolean {\n return Roles.VEJLEDER === this.getCurrentRole();\n }\n\n public isSupporter(): boolean {\n return Roles.SUPPORTER === this.getCurrentRole();\n }\n\n public inNone(): boolean {\n const userStr = sessionStorage.getItem(SessionStorage.ROLE);\n if (userStr === \"none\") {\n return true;\n }\n return false;\n }\n\n public isUserAuthorized(role = \"\"): boolean {\n switch (role) {\n case (\"\"): {\n return this.getCurrentRole() != null;\n }\n default: {\n return role === this.getCurrentRole();\n }\n }\n }\n}\n\nexport const authorizationService = new AuthorizationService();\n","export enum LanguageOptions {\n DANSK = 1,\n IKKE_DANSK,\n DANSK_OG_ET_ANDET_SPROG\n}\n","import axios from \"axios\";\nimport { SessionStorage } from \"../shared/enums/Storage\";\n\nconst apiVersion = process.env.REACT_APP_API_VERSION;\nconst baseURL = process.env.REACT_APP_BASE_URL;\n\nconst BaseApi = () => {\n if (!baseURL || !apiVersion) {\n throw new Error(\"Undefined environment variables\");\n }\n\n const instance = axios.create({\n baseURL: baseURL + apiVersion,\n });\n\n instance.interceptors.request.use(\n (config) => {\n const token = sessionStorage.getItem(SessionStorage.KC_TOKEN);\n if (token) {\n config.headers!['Authorization'] = 'Bearer ' + token;\n }\n return config;\n },\n (error) => {\n Promise.reject(error);\n });\n\n axios.interceptors.response.use((response) => {\n return response;\n },\n (error) => {\n const originalRequest = error.config;\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n const token = sessionStorage.getItem(SessionStorage.KC_TOKEN);\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n return axios(originalRequest);\n }\n });\n\nreturn instance;\n};\n\nexport default BaseApi();\n","import {AxiosResponse} from \"axios\";\nimport BaseApi from \"./BaseApi\";\nimport {ResponseType} from \"../shared/types/ResponseType\";\nimport {AuthenticatedUserDetails} from \"../shared/types/AuthenticatedUserDetails\";\n\nexport const GetAuthenticatedUserByBrugernavnApi = async (brugernavn: string): Promise> => {\n try {\n const response = await BaseApi.get>(\"AuthenticatedUser/GetByBrugernavn?brugernavn=\" + brugernavn);\n return {\n data: response.data.data as AuthenticatedUserDetails,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error],\n };\n }\n};\n\nexport const GetAuthenticatedUserBySupportsagIdApi = async (supportsagId: string): Promise> => {\n try {\n const response = await BaseApi.get>(\"AuthenticatedUser/GetBySupportsagId?supportsagId=\" + supportsagId);\n return {\n data: response.data.data as AuthenticatedUserDetails,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error],\n };\n }\n};\n\nexport const GetAuthenticatedUserApi = async (): Promise> => {\n try {\n const response = await BaseApi.get>(\"AuthenticatedUser\");\n return {\n data: response.data.data as AuthenticatedUserDetails,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error],\n };\n }\n};\n\nexport const CreateBrugerkoderApi = async (\n count: number,\n opgavesaetId: string,\n holdId: string | undefined\n): Promise> => {\n try {\n const data = holdId ? { count, opgavesaetId, holdId } : { count, opgavesaetId };\n const response = await BaseApi.post>(\"AuthenticatedUser/CreateBrugerkoder\", data);\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n\nexport const GetRole = async (): Promise => {\n return await BaseApi.get(\"AuthenticatedUser/GetRole\");\n};\n\n","import { useKeycloak } from \"@react-keycloak/web\";\nimport { FC, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport styles from \"./LoginInfo.module.scss\";\nimport { authorizationService } from \"../../../services/auth/authorization.service\";\nimport { GetAuthenticatedUserApi } from \"../../../apiService/AuthenticatedUserApi\";\n\nexport const LoginInfo: FC = () => {\n const { keycloak } = useKeycloak();\n const history = useHistory();\n const [name, setName] = useState();\n const [brugernavn, setBrugernavn] = useState();\n\n const handleLogout = () => {\n const logoutOptions = { redirectUri : window.location.origin };\n keycloak.logout(logoutOptions);\n authorizationService.clearSessionStorage();\n };\n\n const handleLogin = () => {\n history.push(\"/auth/login\");\n };\n\n const toDashboard = () => {\n if (authorizationService.isSupporter()) {\n history.push(\"/vejleder\");\n } else if (authorizationService.isVejleder()) {\n history.push(\"/vejleder\");\n } else if (authorizationService.inNone()){\n history.push(\"/auth/noaccess\");\n }\n };\n\n const signedIn = (\n
\n \n \n
\n );\n\n const signedOut = (\n
\n \n
\n );\n\n useEffect(() => {\n if (keycloak.authenticated) {\n GetAuthenticatedUserApi().then((response) => {\n if (response.succeeded && response.data) {\n setName(`${response.data.fornavn} ${response.data.efternavn}`);\n setBrugernavn(response.data.brugernavn);\n }\n }).catch((error) => {\n console.log(\"GetAuthenticatedUserApi failed: \", error);\n });\n\n } else {\n authorizationService.clearSessionStorage();\n setName(undefined);\n setBrugernavn(undefined);\n }\n }, [keycloak.authenticated]);\n\n return keycloak.authenticated ? signedIn : signedOut;\n};\n","import { FunctionComponent } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport HeaderTitle from \"../HeaderTitle\";\nimport LogoCrown from \"../LogoCrown\";\nimport { LoginInfo } from \"../../auth/LoginInfo/LoginInfo\";\nimport styles from \"./Header.module.scss\";\n\nconst Header: FunctionComponent = () => {\n const history = useHistory();\n\n return (\n
\n
\n
\n \n \n
\n
\n
\n );\n};\n\nexport default Header;\n","import { PropsWithChildren } from \"react\";\nimport Footer from \"../../footer/Footer/Footer\";\nimport Header from \"../../header/Header/Header\";\nimport styles from \"./Page.module.scss\";\n\nconst Page = (props: PropsWithChildren): JSX.Element => {\n return (\n
\n
\n
{props.children}
\n
\n
\n );\n};\n\nexport default Page;\n","import { Elev } from \"../shared/types/Elev\";\nimport BaseApi from \"./BaseApi\";\n\nexport const UpdateElevAsElevApi = async (elev: Elev): Promise => {\n return await BaseApi.put(\"Elev/UpdateAsElev\", elev);\n};\n\nexport const UpdateElevApi = async (elev: Elev): Promise => {\n return await BaseApi.put(\"Elev\", elev);\n};\n\nexport const GetElevByBrugerkodeAsElevApi = async (brugerkode: string): Promise => {\n return await BaseApi.get(\"Elev/GetByBrugerkodeAsElev?brugerkode=\" + brugerkode);\n};\n\nexport const GetElevByBrugerkodeAsAuthenticatedUserApi = async (brugerkode: string): Promise => {\n return await BaseApi.get(\"Elev/GetByBrugerkodeAsAuthenticatedUser?brugerkode=\" + brugerkode);\n};\n","export const invalidBrugerkodeWarning: JSX.Element = (\n
\n
\n

Brugerkode findes ikke

\n

Der findes ingen test på den anvendte brugerkode

\n
\n
\n);\n\nexport const closedTesttagningWarning: JSX.Element = (\n
\n
\n

Testtagning afsluttet

\n

Testtagning er afsluttet og kan derfor ikke åbnes

\n
\n
\n);\n\nexport const genericWarning = (props: string): JSX.Element => {\n return (\n
\n
\n

{props}

\n
\n
\n );\n};\n\nexport const noWarning: JSX.Element =
;\n","import { AxiosResponse } from \"axios\";\nimport { Opgavesaet } from \"../shared/types/Opgavesaet\";\nimport BaseApi from \"./BaseApi\";\nimport {ResponseType} from \"../shared/types/ResponseType\";\n\nexport const GetOpgavesaetByBrugerkodeApi = async (brugerkode: string): Promise => {\n try {\n const response = await BaseApi.get(\"Opgavesaet/GetByBrugerkode?brugerkode=\" + brugerkode);\n return response.data;\n } catch (err) {\n return err;\n }\n};\n\nexport const getAllVisibleOpgavesaetApi = async (): Promise => {\n try {\n const response = await BaseApi.get(\"Opgavesaet/GetAllVisible\");\n return response.data.data;\n } catch (err) {\n return err;\n }\n};\n\nexport const GetOpgavesaetByRule = async (): Promise> => {\n try {\n const response = await BaseApi.get>(\"Opgavesaet/GetByRule\");\n return {\n data: response.data.data as Opgavesaet[],\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n\n\n","import BaseApi from \"./BaseApi\";\nimport { ResponseType } from \"../shared/types/ResponseType\";\nimport { AxiosResponse } from \"axios\";\nimport { TesttagningDetails } from \"../shared/types/TesttagningDetails\";\n\nexport const GetTesttagningByBrugerkode = async (brugerkode: string, isFrontpageRequest: boolean): Promise> => {\n try {\n const response = await BaseApi.get>(\"Testtagning/GetByBrugerkode?brugerkode=\" + brugerkode + \"&isFrontpageRequest=\" + isFrontpageRequest);\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error],\n };\n }\n};\n\nexport const GetTesttagningDetailsByBrugerkode = async (brugerkode: string): Promise> => {\n try {\n const response = await BaseApi.get>(\"Testtagning/GetDetailsByBrugerkode?brugerkode=\" + brugerkode);\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error],\n };\n }\n};\n\nexport const GetTesttagningerAsAuthenticatedUserApi = async (inUse: boolean): Promise => {\n return await BaseApi.get(\"Testtagning/GetByAuthenticatedUser?inUse=\" + inUse);\n};\n\nexport const GetTesttagningerBySupportsagIdApi = async (supportsagId: string): Promise => {\n return await BaseApi.get(\"Testtagning/GetBySupportsagId?supportsagId=\" + supportsagId);\n};\n\nexport const UpdateTesttagningOpgavesaetAsElevApi = async (brugerkode: string): Promise => {\n return await BaseApi.put(\"Testtagning/UpdateOpgavesaetByBrugerkodeAsElev\", { brugerkode });\n};\n\nexport const UpdateTesttagningByBrugerkodeApi = async (brugerkode: string | undefined | null, tekstlaesning: boolean | undefined, ordforraad: boolean | undefined, ordlaesning: boolean | undefined): Promise => {\n return await BaseApi.put(\"Testtagning/UpdateByBrugerkode\", { brugerkode, tekstlaesning, ordforraad, ordlaesning });\n};\n","export enum TakeFullTestOptions {\n TAKE_FULL_TEST = \"takeFullTest\",\n NOT_TAKE_FULL_TEST = \"notTakeFullTest\",\n}\n","export enum TestNames {\n VLV = \"Vejledende Læsetest for Voksne\",\n FGUL = \"FGU Læsetest\",\n FVU = \"Vejledende Matematiktest for Voksne\",\n FGU = \"FGU Matematiktest\",\n DEMO = \"Demo\",\n A = \"A\",\n B = \"B\"\n}\n","import {TestNames} from \"../enums/TestNames\";\n\nexport class IsTest {\n public static isA = (testName: string): boolean => {\n if (testName === TestNames.A) {\n return true;\n }\n\n return false;\n };\n\n public static isB = (testName: string): boolean => {\n if (testName === TestNames.B) {\n return true;\n }\n\n return false;\n };\n\n public static isDemo = (testName: string): boolean => {\n if (testName === TestNames.DEMO) {\n return true;\n }\n\n return false;\n };\n\n public static isFGU = (testName: string): boolean => {\n if (testName === TestNames.FGU) {\n return true;\n }\n\n return false;\n };\n\n public static isFVU = (testName: string): boolean => {\n if (testName === TestNames.FVU) {\n return true;\n }\n\n return false;\n };\n\n public static isFGUL = (testName: string): boolean => {\n if (testName === TestNames.FGUL) {\n return true;\n }\n\n return false;\n };\n\n public static isVLV = (testName: string): boolean => {\n if (testName === TestNames.VLV) {\n return true;\n }\n\n return false;\n };\n\n public static isLaesetest = (testName: string | undefined): boolean => {\n if (testName === TestNames.VLV ||\n testName === TestNames.FGUL) {\n return true;\n }\n\n return false;\n };\n\n public static isMatematiktest = (testName: string | undefined): boolean => {\n if (testName === TestNames.FGU ||\n testName === TestNames.FVU ||\n testName === TestNames.DEMO ||\n testName === TestNames.A ||\n testName === TestNames.B) {\n return true;\n }\n\n return false;\n };\n\n public static getTestName = (testName: string | undefined): string => {\n if (testName === undefined) {\n return \"\";\n }\n if (this.isDemo(testName))\n {\n return \"DEMO\";\n } else if (this.isA(testName))\n {\n return \"A\";\n } else if (this.isB(testName))\n {\n return \"B\";\n } else if (this.isFGU(testName))\n {\n return \"FGUMAT\";\n } else if (this.isFVU(testName))\n {\n return \"VMAT\";\n } else if (this.isFGUL(testName))\n {\n return \"FGUL\";\n } else if (this.isVLV(testName))\n {\n return \"VLV\";\n }\n\n return \"\";\n };\n}\n","import axios, { AxiosError } from \"axios\";\nimport React, {FC, useContext, useEffect, useState} from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {GetElevByBrugerkodeAsElevApi, UpdateElevAsElevApi} from \"../../../apiService/ElevApi\";\nimport { ResponseType } from \"../../../shared/types/ResponseType\";\nimport { genericWarning, noWarning } from \"../../common/Warnings\";\nimport moment from \"moment\";\nimport { Elev } from \"../../../shared/types/Elev\";\nimport { SessionStorage } from \"../../../shared/enums/Storage\";\nimport {GetOpgavesaetByBrugerkodeApi} from \"../../../apiService/OpgavesaetApi\";\nimport styles from \"./RegisterElev.module.scss\";\nimport {LanguageOptions} from \"../../../shared/enums/LanguageOptions\";\nimport { UpdateTesttagningOpgavesaetAsElevApi} from \"../../../apiService/TesttagningApi\";\nimport { faVolumeUp } from \"@fortawesome/free-solid-svg-icons\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {TakeFullTestOptions} from \"../../../shared/enums/TakeFullTestOptions\";\nimport OpgavesaetContext from \"../../OpgavesaetContext\";\nimport {IsTest} from \"../../../shared/utils/IsTest\";\n\nconst RegisterElev: FC = () => {\n const [fornavn, setFornavn] = useState(\"\");\n const [efternavn, setEfternavn] = useState(\"\");\n const [holdId, setHoldId] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [month, setMonth] = useState(\"\");\n const [year, setYear] = useState(\"\");\n const [opgavesaetName, setOpgavesaetName] = useState(\"\");\n const [bedsteSprog, setBedsteSprog] = useState();\n const [sprog, setSprog] = useState();\n const [takeFullTest, setTakeFullTest] = useState(TakeFullTestOptions.TAKE_FULL_TEST);\n const [warning, setWarning] = useState(noWarning);\n const history = useHistory();\n const [birthdayValidateError, setBirthdayValidateError] = useState(false);\n const [birthdayValidateMessage, setBirthdayValidateMessage] = useState(\"\");\n const audio = new Audio(\"/api/v1/Sound?name=Register_checkSound\");\n const { setOpgavesaet, setTestnavn } = useContext(OpgavesaetContext);\n\n useEffect(() => {\n const brugerkode = window.sessionStorage.getItem(SessionStorage.BRUGERKODE);\n if (brugerkode != undefined) {\n GetElevByBrugerkodeAsElevApi(brugerkode).then((response) => {\n const elev: any = response.data.data;\n if (elev.foedselsdag != null) {\n const foedselsdag: Date = new Date(elev.foedselsdag);\n const offset = foedselsdag.getTimezoneOffset();\n const foedselsdagKorrigeret = new Date(foedselsdag.getTime() - offset * 60 * 1000);\n setDay(foedselsdagKorrigeret.getDate().toString());\n setMonth((foedselsdagKorrigeret.getMonth() + 1).toString());\n setYear(foedselsdagKorrigeret.getFullYear().toString());\n }\n if (elev.fornavn) {\n setFornavn(elev.fornavn);\n }\n if (elev.efternavn) {\n setEfternavn(elev.efternavn);\n }\n\n if (elev.sprog) {\n setSprog(elev.sprog);\n }\n\n if (elev.bedsteSprog) {\n setBedsteSprog(elev.bedsteSprog.toString());\n }\n \n setHoldId(elev.holdId);\n GetOpgavesaetByBrugerkodeApi(brugerkode).then((opgavesaetResponse) => {\n setOpgavesaetName(opgavesaetResponse.data.navn);\n if (IsTest.isFGUL(opgavesaetName) && elev.takeFullTest !== null) {\n elev.takeFullTest ? setTakeFullTest(TakeFullTestOptions.TAKE_FULL_TEST) : setTakeFullTest(TakeFullTestOptions.NOT_TAKE_FULL_TEST);\n }\n });\n });\n }\n }, [opgavesaetName]);\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n setBirthdayValidateError(false);\n setBirthdayValidateMessage(\"\");\n event.preventDefault();\n const regexpDay = new RegExp(\"\\\\b(0?[1-9]|[12][0-9]|3[01])\\\\b\");\n const regexpMonth = new RegExp(\"^(0?[1-9]|1[012])$\");\n const regexpYear = new RegExp(\"^(19|20)\\\\d{2}$\");\n\n if (!regexpDay.test(day)) {\n setBirthdayValidateError(true);\n setBirthdayValidateMessage(\"Indtast en dag i tal mellem 1 og 31\");\n return;\n }\n\n if (!regexpMonth.test(month)) {\n setBirthdayValidateError(true);\n setBirthdayValidateMessage(\"Indtast en måned i tal mellem 1 og 12\");\n return;\n }\n\n if (!regexpYear.test(year)) {\n setBirthdayValidateError(true);\n setBirthdayValidateMessage(\"Indtast et årstal mellem 1900 og 2099\");\n return;\n }\n\n const date = `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n\n if (!moment(date).isValid()) {\n setBirthdayValidateError(true);\n setBirthdayValidateMessage(\"Indtast en gyldig dato\");\n return;\n }\n\n const elev: Elev = {\n brugerkode: window.sessionStorage.getItem(SessionStorage.BRUGERKODE)!,\n fornavn: fornavn,\n efternavn: efternavn,\n foedselsdato: date,\n holdId: holdId,\n takeFullTest: shouldTakeFullTest(),\n sprog: sprog,\n bedsteSprog: Number(bedsteSprog)\n };\n\n try {\n await UpdateElevAsElevApi(elev);\n if (IsTest.isLaesetest(opgavesaetName)) {\n if (!shouldTakeFullTest()) {\n UpdateTesttagningOpgavesaetAsElevApi(elev.brugerkode).then(() => {\n GetOpgavesaetByBrugerkodeApi(elev.brugerkode).then((opgavesaetResponse) => {\n if (opgavesaetResponse.succeeded) {\n setOpgavesaet!(opgavesaetResponse.data);\n setTestnavn!(opgavesaetResponse.data.navn);\n history.push(`/test/${elev.brugerkode}`);\n }\n });\n });\n } else {\n history.push(`/test/${elev.brugerkode}`);\n }\n } else {\n history.push(`/test/${elev.brugerkode}`);\n }\n } catch (error: unknown | AxiosError>) {\n if (axios.isAxiosError(error)) {\n const e = error as AxiosError>;\n if (e.response != undefined) {\n setWarning(genericWarning(e.response.data.Message));\n }\n } else {\n setWarning(genericWarning(\"Unknown error\"));\n }\n }\n };\n\n const shouldTakeFullTest = (): boolean | null => {\n if (takeFullTest === TakeFullTestOptions.TAKE_FULL_TEST) {\n return true;\n } else if (takeFullTest === TakeFullTestOptions.NOT_TAKE_FULL_TEST) {\n return false;\n }\n\n return null;\n };\n\n\n const birthdayError = () => {\n if (birthdayValidateError) {\n return (\n \n Fejl:\n {birthdayValidateMessage}\n \n );\n } else {\n return <>;\n }\n };\n\n const disabled = (): boolean => {\n if (IsTest.isVLV(opgavesaetName)) {\n return !fornavn || !efternavn || !day || !month || !year || !bedsteSprog;\n } else if (IsTest.isFGUL(opgavesaetName)) {\n if (bedsteSprog === LanguageOptions.IKKE_DANSK.toString()) {\n return !fornavn || !efternavn || !day || !month || !year || !bedsteSprog || !sprog || !takeFullTest;\n }\n\n return !fornavn || !efternavn || !day || !month || !year || !bedsteSprog || !takeFullTest;\n }\n\n return !fornavn || !efternavn || !day || !month || !year;\n };\n\n const playSound = () => {\n audio.pause();\n audio.currentTime = 0;\n audio.play();\n };\n\n return (\n
\n

Dine oplysninger

\n {warning}\n { IsTest.isLaesetest(opgavesaetName) &&\n \n }\n
\n
\n \n setFornavn(e.target.value)}>\n \n
\n
\n \n setEfternavn(e.target.value)}>\n \n
\n
\n Fødselsdato\n For eksempel: 27 9 2001\n
{birthdayError()}
\n
\n
\n \n setDay(e.target.value)} />\n
\n
\n \n setMonth(e.target.value)} />\n
\n
\n \n setYear(e.target.value)} />\n
\n
\n { IsTest.isLaesetest(opgavesaetName) &&\n
\n \n
\n
\n {\n setBedsteSprog(e.target.value);\n setSprog(undefined);\n }}/>\n \n
\n
\n setBedsteSprog(e.target.value)}/>\n \n
\n { IsTest.isVLV(opgavesaetName) &&\n
\n setBedsteSprog(e.target.value)}/>\n \n
\n }\n
\n
\n }\n { IsTest.isFGUL(opgavesaetName) && bedsteSprog === LanguageOptions.IKKE_DANSK.toString() &&\n
\n \n setSprog(e.target.value)}>\n \n
\n }\n { IsTest.isFGUL(opgavesaetName) &&\n
\n \n
\n
\n setTakeFullTest(e.target.value)}/>\n \n
\n
\n setTakeFullTest(e.target.value)}/>\n \n
\n
\n
\n }\n
\n \n \n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default RegisterElev;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Page from \"../../components/common/Page/Page\";\nimport RegisterElev from \"../../components/vejleder/RegisterElev/RegisterElev\";\nimport { SessionStorage } from \"../../shared/enums/Storage\";\n\nconst Elev: FunctionComponent = () => {\n const history = useHistory();\n\n useEffect(() => {\n if (window.sessionStorage.getItem(SessionStorage.BRUGERKODE) === null) {\n history.push(\"/\");\n }\n }, [history]);\n\n return (\n \n
\n \n
\n
\n );\n};\n\nexport default Elev;\n","import { useKeycloak } from \"@react-keycloak/web\";\nimport { FunctionComponent, useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {GetOpgavesaetByBrugerkodeApi} from \"../apiService/OpgavesaetApi\";\nimport OpgavesaetContext from \"./OpgavesaetContext\";\nimport {GetTesttagningByBrugerkode} from \"../apiService/TesttagningApi\";\nimport {genericWarning, noWarning} from \"./common/Warnings\";\nimport { SessionStorage } from \"../shared/enums/Storage\";\n\nconst TestSelector: FunctionComponent = () => {\n const [brugerkode, setBrugerkode] = useState(\"\");\n const [warning, setWarning] = useState();\n const [response, setResponse] = useState();\n const { opgavesaet, setOpgavesaet, setTestnavn } = useContext(OpgavesaetContext);\n const history = useHistory();\n const { keycloak } = useKeycloak();\n\n useEffect(() => {\n if (opgavesaet !== \"\" && response !== undefined && response.isAxiosError === undefined) {\n sessionStorage.clear();\n sessionStorage.setItem(SessionStorage.BRUGERKODE, brugerkode);\n if (keycloak.authenticated) {\n const logoutOptions = { redirectUri : window.location.origin + \"/register\" };\n keycloak.logout(logoutOptions);\n } else {\n history.push(`/register`);\n }\n }\n }, [opgavesaet, brugerkode, history, response, keycloak]);\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n\n GetOpgavesaetByBrugerkodeApi(brugerkode).then((opgavesaetResponse) => {\n if (opgavesaetResponse.isAxiosError && opgavesaetResponse.response.data.Message !== undefined) {\n GetTesttagningByBrugerkode(brugerkode, true).then((testtagningResponse) => {\n if(testtagningResponse.succeeded && testtagningResponse.data != undefined) {\n sessionStorage.setItem(SessionStorage.BRUGERKODE, brugerkode);\n history.push(`/resultat`);\n } else {\n setWarning(genericWarning(opgavesaetResponse.response.data.Message));\n setOpgavesaet!(\"\");\n }\n });\n } else {\n setOpgavesaet!(opgavesaetResponse.data);\n setTestnavn!(opgavesaetResponse.data.navn);\n setWarning(noWarning);\n }\n setResponse(opgavesaetResponse);\n });\n };\n\n return (\n
\n {warning}\n
\n
\n \n setBrugerkode(e.target.value.toUpperCase())}>\n \n
\n
\n \n \n
\n
\n
\n );\n};\n\nexport default TestSelector;\n","export default __webpack_public_path__ + \"static/media/frontpage_math.8fd1f301.jpg\";","import { FunctionComponent } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\nimport TestSelector from \"../../components/TestSelector\";\nimport styles from \"./Frontpage.module.scss\";\nimport Image from \"../../assets/img/frontpage_math.jpg\";\n\nconst Frontpage: FunctionComponent = () => {\n return (\n \n
\n
\n
\n \n
\n Tal med din vejleder, hvis du ikke har fået\n udleveret en kode.\n
\n
\n
\n \"Forside\n
\n
\n
\n
\n );\n};\n\nexport default Frontpage;\n","import BaseApi from \"./BaseApi\";\n\nexport const GetHovedopgaveByIdApi = async (hovedopgaveid: string): Promise => {\n const id = hovedopgaveid.substring(0, hovedopgaveid.length - 2);\n const hovedopgave = await BaseApi.get(\"Hovedopgave?id=\" + id);\n return hovedopgave.data.data.opgavenummer;\n};\n","import { FunctionComponent, useState } from \"react\";\nimport {GetHovedopgaveByIdApi} from \"../apiService/HovedopgaveApi\";\nimport { useLocation } from \"react-router-dom\";\nimport React from \"react\";\nimport {IsTest} from \"../shared/utils/IsTest\";\n\nconst Opgavenummer: FunctionComponent<{\n opgavesaetNavn: string;\n}> = ({opgavesaetNavn}) => {\n const location = useLocation();\n const isComplete = document.readyState === \"complete\";\n\n const [opgavenummer, setOpgavenummer] = useState(\"\");\n\n React.useEffect(() => {\n const multId = document.querySelector(\".megatron-opgave-svarmuligheder\")\n ? document.querySelector(\".megatron-opgave-svarmuligheder\")?.id\n : \"\";\n const dropdownId = document.querySelector(\".form-select\") ? document.querySelector(\".form-select\")?.id : \"\";\n\n const getOpgavenummer = async (hovedopgaveId: any) => {\n const response: any = await GetHovedopgaveByIdApi(hovedopgaveId);\n setOpgavenummer(response);\n };\n\n if (IsTest.isLaesetest(opgavesaetNavn)) {\n setOpgavenummer(\"\");\n } else if (multId) {\n getOpgavenummer(multId);\n } else if (dropdownId) {\n getOpgavenummer(dropdownId);\n } else {\n setOpgavenummer(\"\");\n }\n }, [location, isComplete, opgavesaetNavn]);\n\n const content: JSX.Element =
Opgavenummer: {opgavenummer}
;\n\n return opgavenummer ? content :
;\n};\n\nexport default Opgavenummer;\n","import $ from \"jquery\";\n\nexport class Helpers {\n public static setExampleHeadline(): void {\n $(\".megatron-pagecontent.megatron-ot-sammensat span strong\").html(\"Eksempel\");\n }\n\n public static hideOriginalBtn = (): void => {\n const buttonContainers = document.getElementsByClassName(\"action-buttons mt-4\");\n buttonContainers[0].className = \"action-buttons mt-4 hide-button\";\n };\n\n public static displayOriginalBtn = (): void => {\n const buttonContainers = document.getElementsByClassName(\"action-buttons mt-4 hide-button\");\n buttonContainers[0].className = \"action-buttons mt-4\";\n };\n\n public static removeElementById = (id: string): void => {\n document.getElementById(id)?.remove();\n };\n}\n","import $ from \"jquery\";\nimport { Helpers} from \"./helpers\";\n\nexport class Afsnit1Examples {\n private audio = new Audio(\"/api/v1/Sound?name=VLV_Del_01_Eksempel_01\");\n private example3Answered = false;\n private example4Answered = false;\n private timeout_example_01 = 30000;\n private timeout_example_02 = 16000;\n\n public start(): void {\n Helpers.hideOriginalBtn();\n Helpers.setExampleHeadline();\n Afsnit1Examples.example01();\n this.displayNextBtn01();\n this.playSound01();\n setTimeout(() => {\n this.setCorrectAnswer(\"correct_1_1\");\n }, this.timeout_example_01);\n }\n\n private static example01(): void {\n const example = document.createElement(\"span\");\n example.className = \"example-afsnit-1\";\n example.id = \"example_1\";\n example.innerHTML = `Henrik arbejder som postbud. \n \n Det\n Han\n De\n Hun\n bor i en lille by uden for Roskilde.\n `;\n\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(example);\n }\n\n private setCorrectAnswer = (correctElementId: string): void => {\n const correctElement = document.getElementById(correctElementId);\n if (correctElement != null) {\n correctElement.className = \"answer correct-1\";\n }\n };\n\n private playSound01(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_01_Eksempel_01\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn01;\n }\n\n private activateNextBtn01 = (): void => {\n const btn = document.getElementById(\"nextButton_1\") as HTMLButtonElement;\n btn.disabled = false;\n };\n\n\n private displayNextBtn01 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_1Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn01Handler;\n btn.disabled = true;\n btn.id = \"nextButton_1\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private nextBtn01Handler = (): void => {\n Helpers.removeElementById(\"nextButton_1Container\");\n this.startExample02();\n };\n\n // Example 2\n private startExample02 = (): any => {\n Afsnit1Examples.example02();\n this.displayNextBtn02();\n this.playSound02();\n setTimeout(() => {\n this.setCorrectAnswer(\"correct_1_2\");\n }, this.timeout_example_02);\n };\n\n private static example02(): void {\n const example = document.createElement(\"span\");\n example.className = \"example-afsnit-1\";\n example.id = \"example_2\";\n example.innerHTML = ` Han plejer at stå tidligt op om morgenen, \n \n mens\n skønt\n fordi\n efter\n han skal være på posthuset i Roskilde kl. 6.`;\n\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(example);\n }\n\n private displayNextBtn02 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_2Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn02Handler;\n btn.disabled = true;\n btn.id = \"nextButton_2\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private playSound02(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_01_Eksempel_02\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn02;\n }\n\n private activateNextBtn02 = (): void => {\n const btn = document.getElementById(\"nextButton_2\") as HTMLButtonElement;\n btn.disabled = false;\n };\n\n private nextBtn02Handler = (): void => {\n Helpers.removeElementById(\"nextButton_2Container\");\n this.startExample03();\n };\n\n // Example 3 and 4\n private startExample03 = (): any => {\n Afsnit1Examples.example03();\n Afsnit1Examples.example04();\n this.displayNextBtn03();\n this.playSound03();\n };\n\n private static example03(): void {\n const example = document.createElement(\"span\");\n example.className = \"example-afsnit-1\";\n example.id = \"example_3\";\n example.innerHTML = `Men denne morgen har \n \n det\n han\n hun\n den\n høj feber, hoster og kan ikke stå på sine ben.`;\n\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(example);\n }\n\n private static example04(): void {\n const example = document.createElement(\"span\");\n example.className = \"example-afsnit-1\";\n example.id = \"example_4\";\n example.innerHTML = `Henrik føler sig meget \n \n vred\n sur\n forsinket\n syg\n . Derfor bliver han hjemme.`;\n\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(example);\n }\n\n private displayNextBtn03 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_3Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn_3Handler;\n btn.disabled = true;\n btn.id = \"nextButton_3\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private playSound03(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_01_Eksempel_03\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.addEventListeners;\n }\n\n private addEventListeners = (): void => {\n this.addEventListenerForExample3();\n this.addEventListenerForExample4();\n };\n\n private addEventListenerForExample3 = (): void => {\n const example_3_1 = document.getElementById(\"example_3_1\");\n const example_3_2 = document.getElementById(\"example_3_2\");\n const example_3_3 = document.getElementById(\"example_3_3\");\n const example_3_4 = document.getElementById(\"example_3_4\");\n if (example_3_1 != null &&\n example_3_2 != null &&\n example_3_3 != null &&\n example_3_4 != null ) {\n example_3_1.onclick = this.example3_1ClickHandler;\n example_3_2.onclick = this.example3_2ClickHandler;\n example_3_3.onclick = this.example3_3ClickHandler;\n example_3_4.onclick = this.example3_4ClickHandler;\n }\n };\n\n private addEventListenerForExample4 = (): void => {\n const example_4_1 = document.getElementById(\"example_4_1\");\n const example_4_2 = document.getElementById(\"example_4_2\");\n const example_4_3 = document.getElementById(\"example_4_3\");\n const example_4_4 = document.getElementById(\"example_4_4\");\n if (example_4_1 != null &&\n example_4_2 != null &&\n example_4_3 != null &&\n example_4_4 != null ) {\n example_4_1.onclick = this.example4_1ClickHandler;\n example_4_2.onclick = this.example4_2ClickHandler;\n example_4_3.onclick = this.example4_3ClickHandler;\n example_4_4.onclick = this.example4_4ClickHandler;\n }\n };\n\n\n private example3_1ClickHandler = (): void => {\n this.resetExample3();\n $(\"#example_3_1\").addClass(\"correct-1\");\n };\n\n private example3_2ClickHandler = (): void => {\n this.resetExample3();\n $(\"#example_3_2\").addClass(\"correct-1\");\n };\n\n private example3_3ClickHandler = (): void => {\n this.resetExample3();\n $(\"#example_3_3\").addClass(\"correct-1\");\n };\n\n private example3_4ClickHandler = (): void => {\n this.resetExample3();\n $(\"#example_3_4\").addClass(\"correct-1\");\n };\n\n private resetExample3 = (): void => {\n $(\"#example_3_1\").removeClass(\"correct-1\");\n $(\"#example_3_2\").removeClass(\"correct-1\");\n $(\"#example_3_3\").removeClass(\"correct-1\");\n $(\"#example_3_4\").removeClass(\"correct-1\");\n this.example3Answered = true;\n\n if (this.example3Answered && this.example4Answered) {\n this.activateNextBtn03();\n }\n };\n\n private activateNextBtn03 = (): void => {\n const btn = document.getElementById(\"nextButton_3\") as HTMLButtonElement;\n btn.disabled = false;\n };\n\n private example4_1ClickHandler = (): void => {\n this.resetExample4();\n $(\"#example_4_1\").addClass(\"correct-1\");\n };\n\n private example4_2ClickHandler = (): void => {\n this.resetExample4();\n $(\"#example_4_2\").addClass(\"correct-1\");\n };\n\n private example4_3ClickHandler = (): void => {\n this.resetExample4();\n $(\"#example_4_3\").addClass(\"correct-1\");\n };\n\n private example4_4ClickHandler = (): void => {\n this.resetExample4();\n $(\"#example_4_4\").addClass(\"correct-1\");\n };\n\n private resetExample4 = (): void => {\n $(\"#example_4_1\").removeClass(\"correct-1\");\n $(\"#example_4_2\").removeClass(\"correct-1\");\n $(\"#example_4_3\").removeClass(\"correct-1\");\n $(\"#example_4_4\").removeClass(\"correct-1\");\n this.example4Answered = true;\n if (this.example3Answered && this.example4Answered) {\n this.activateNextBtn03();\n }\n };\n\n private nextBtn_3Handler = (): void => {\n Helpers.removeElementById(\"nextButton_3Container\");\n Helpers.removeElementById(\"exampleHeadline\");\n Helpers.removeElementById(\"example_1\");\n Helpers.removeElementById(\"example_2\");\n Helpers.removeElementById(\"example_3\");\n Helpers.removeElementById(\"example_4\");\n this.endExample();\n };\n\n // End Example\n private endExample = (): any => {\n Afsnit1Examples.setEndExample();\n this.displayNextBtn01();\n this.playSound4();\n };\n\n private static setEndExample(): void {\n $(\".megatron-pagecontent.megatron-ot-sammensat span strong\").html(\"LYT!\");\n }\n\n private playSound4(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_01_Eksempel_04\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = Afsnit1Examples.onEndPlaySound4Handler;\n }\n\n private static onEndPlaySound4Handler(): void {\n Helpers.removeElementById(\"nextButton_1Container\");\n Helpers.displayOriginalBtn();\n }\n}\n\nexport const afsnit1Examples = new Afsnit1Examples();\n","import React, {FC} from \"react\";\nimport styles from \"./TestResultInfo.module.scss\";\nimport {ITestApprovalProps} from \"../../../shared/interfaces/ITestApprovalProps\";\nimport {ITesttagningProps} from \"../../../shared/interfaces/ITesttagningProps\";\nimport {IElevProps} from \"../../../shared/interfaces/IElevProps\";\n\ntype Props = ITestApprovalProps | ITesttagningProps | IElevProps;\n\nenum ResultApprovalOptions {\n TEKSTLAESNING = \"Tekstlæsning\",\n ORDFORRAAD = \"Ordforråd\",\n ORDLAESNING = \"Ordlæsning\"\n}\n\nconst TestResultInfo: FC = (props) => {\n const { setTekstlaesning, tekstlaesning, setOrdforraad, ordforraad, setOrdlaesning, ordlaesning } = props as ITestApprovalProps;\n const { testtagning } = props as ITesttagningProps;\n const { elev } = props as IElevProps;\n\n const CalculateAfsnit_1 = (): string | null => {\n if (!testtagning) {\n return null;\n }\n\n const sluttidspunkt = new Date(testtagning.del1Sluttidspunkt);\n const starttidspunkt = new Date(testtagning.del1Starttidspunkt);\n const totalTime = sluttidspunkt.getTime() - starttidspunkt.getTime();\n return totalTime < 240000 ? \"Testen af læseforståelse gik nok for hurtigt\" : null;\n };\n\n const CalculateAfsnit_2 = (): string | null => {\n if (!testtagning) {\n return null;\n }\n\n const sluttidspunkt = new Date(testtagning.del2Sluttidspunkt);\n const starttidspunkt = new Date(testtagning.del2Starttidspunkt);\n const totalTime = sluttidspunkt.getTime() - starttidspunkt.getTime();\n return totalTime < 60000 ? \"Testen af ordforråd gik nok for hurtigt\" : null;\n };\n\n const CalculateAfsnit_3 = (): string | null => {\n if (!testtagning || !elev.takeFullTest) {\n return null;\n }\n\n const sluttidspunkt = new Date(testtagning.del3Sluttidspunkt);\n const starttidspunkt = new Date(testtagning.del3Starttidspunkt);\n const totalTime = sluttidspunkt.getTime() - starttidspunkt.getTime();\n return totalTime < 140000 ? \"Testen af afkodning gik nok for hurtigt\" : null;\n };\n\n return (\n
\n
\n { CalculateAfsnit_1() &&\n {CalculateAfsnit_1()}\n }\n { CalculateAfsnit_2() &&\n {CalculateAfsnit_2()}\n }\n { CalculateAfsnit_3() &&\n {CalculateAfsnit_3()}\n }\n
\n\n
\n Testlederens godkendelse. Testen er gennemført pålideligt:\n setTekstlaesning(!tekstlaesning)}/>\n \n setOrdforraad(!ordforraad)}/>\n \n { elev.takeFullTest &&\n
\n setOrdlaesning(!ordlaesning)}/>\n \n
\n }\n
\n
\n );\n};\n\nexport default TestResultInfo;\n","import { Helpers } from \"./helpers\";\nimport $ from \"jquery\";\n\nexport class Afsnit2Examples {\n private audio = new Audio(\"/api/v1/Sound?name=VLV_Del_02_Eksempel_01\");\n private timeout = 500;\n\n public start(): void {\n Helpers.hideOriginalBtn();\n Helpers.setExampleHeadline();\n Afsnit2Examples.example(\"VLV_Del_02_Eksempel_01_01\", \"VLV_Del_02_Eksempel_01_02\",\"VLV_Del_02_Eksempel_01_03\",\"VLV_Del_02_Eksempel_01_04\");\n this.displayNextBtn_1();\n this.playSound_1(\"VLV_Del_02_Eksempel_01\");\n }\n\n private static example(image01: string, image02: string, image03: string, image04: string): void {\n const img_01 = document.createElement(\"img\");\n img_01.id = \"example-picture-01\";\n img_01.src = \"/api/v1/Image?name=\" + image01;\n\n const img_02 = document.createElement(\"img\");\n img_02.id = \"example-picture-02\";\n img_02.src = \"/api/v1/Image?name=\" + image02;\n\n const img_03 = document.createElement(\"img\");\n img_03.id = \"example-picture-03\";\n img_03.src = \"/api/v1/Image?name=\" + image03;\n\n const img_04 = document.createElement(\"img\");\n img_04.id = \"example-picture-04\";\n img_04.src = \"/api/v1/Image?name=\" + image04;\n\n const exampleContainer = document.createElement(\"div\");\n exampleContainer.className = \"example-afsnit-2-container\";\n exampleContainer.id = \"example_1\";\n exampleContainer.innerHTML = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`;\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(exampleContainer);\n $(\"#example-picture-01-container\").append(img_01);\n $(\"#example-picture-02-container\").append(img_02);\n $(\"#example-picture-03-container\").append(img_03);\n $(\"#example-picture-04-container\").append(img_04);\n }\n\n private playSound_1(soundPath: string): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=\" + soundPath;\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateEventListeners;\n }\n\n private activateEventListeners = (): void => {\n const img_01 = document.getElementById(\"example-picture-01\") as HTMLElement;\n img_01.onclick = this.img01Handler;\n\n const img_02 = document.getElementById(\"example-picture-02\") as HTMLElement;\n img_02.onclick = this.img02Handler;\n\n const img_03 = document.getElementById(\"example-picture-03\") as HTMLElement;\n img_03.onclick = this.img03Handler;\n\n const img_04 = document.getElementById(\"example-picture-04\") as HTMLElement;\n img_04.onclick = this.img04Handler;\n };\n\n private img01Handler = (): void => {\n const img_01 = document.getElementById(\"example-picture-01\") as HTMLElement;\n img_01.className = \"picture-answer\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n Afsnit2Examples.setCorrectAnswer(\"example-picture-01\", \"example-picture-04\");\n this.playSound_wrong();\n }, this.timeout);\n };\n\n private img02Handler = (): void => {\n const img_01 = document.getElementById(\"example-picture-02\") as HTMLElement;\n img_01.className = \"picture-answer\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n Afsnit2Examples.setCorrectAnswer(\"example-picture-02\", \"example-picture-04\");\n this.playSound_wrong();\n }, this.timeout);\n };\n\n private img03Handler = (): void => {\n const img_01 = document.getElementById(\"example-picture-03\") as HTMLElement;\n img_01.className = \"picture-answer\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n Afsnit2Examples.setCorrectAnswer(\"example-picture-03\", \"example-picture-04\");\n this.playSound_wrong();\n }, this.timeout);\n };\n\n private img04Handler = (): void => {\n const img_01 = document.getElementById(\"example-picture-04\") as HTMLElement;\n img_01.className = \"picture-answer\";\n\n this.disableImgEventListener();\n this.playSound_correct();\n };\n\n private disableImgEventListener = (): void => {\n const img_01 = document.getElementById(\"example-picture-01\") as HTMLElement;\n img_01.onclick = null;\n\n const img_02 = document.getElementById(\"example-picture-02\") as HTMLElement;\n img_02.onclick = null;\n\n const img_03 = document.getElementById(\"example-picture-03\") as HTMLElement;\n img_03.onclick = null;\n\n const img_04 = document.getElementById(\"example-picture-04\") as HTMLElement;\n img_04.onclick = null;\n };\n\n private static setCorrectAnswer(idWrong: string, idCorrect: string): void {\n const wrongAnswer = document.getElementById(idWrong) as HTMLElement;\n wrongAnswer.className = \"\";\n\n const correctAnser = document.getElementById(idCorrect) as HTMLElement;\n correctAnser.className = \"picture-answer\";\n }\n\n private playSound_correct(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_02_Rigtigt\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn;\n }\n\n private playSound_wrong(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_02_Forkert\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn;\n }\n\n private activateNextBtn = (): void => {\n const btn = document.getElementById(\"nextButton\") as HTMLButtonElement;\n btn.disabled = false;\n };\n\n private displayNextBtn_1 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn_1Handler;\n btn.disabled = true;\n btn.id = \"nextButton\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private nextBtn_1Handler = (): void => {\n Helpers.removeElementById(\"nextButton_Container\");\n Helpers.removeElementById(\"example_1\");\n this.startExample_2();\n };\n\n // Example 2\n private startExample_2 = (): any => {\n Afsnit2Examples.example( \"VLV_Del_02_Eksempel_02_02\",\"VLV_Del_02_Eksempel_02_03\",\"VLV_Del_02_Eksempel_02_04\",\"VLV_Del_02_Eksempel_02_01\");\n this.displayNextBtn_2();\n this.playSound_1(\"VLV_Del_02_Eksempel_02\");\n };\n\n private displayNextBtn_2 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn_2Handler;\n btn.disabled = true;\n btn.id = \"nextButton\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private nextBtn_2Handler = (): void => {\n Helpers.removeElementById(\"nextButton_Container\");\n Helpers.removeElementById(\"example_1\");\n this.endExample();\n };\n\n // End Example\n private endExample = (): any => {\n Afsnit2Examples.setEndExample();\n this.displayNextBtn_1();\n this.playSound_4();\n };\n\n private static setEndExample(): void {\n $(\".megatron-pagecontent.megatron-ot-sammensat span strong\").html(\"LYT!\");\n }\n\n private playSound_4(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_02_Eksempel_03\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = Afsnit2Examples.onEndPlaySound4Handler;\n }\n\n private static onEndPlaySound4Handler(): void {\n Helpers.removeElementById(\"nextButton_Container\");\n Helpers.displayOriginalBtn();\n }\n}\n\nexport const afsnit2Examples = new Afsnit2Examples();\n","import {Helpers} from \"./helpers\";\nimport $ from \"jquery\";\n\nexport class Afsnit3Examples {\n private audio = new Audio(\"/api/v1/Sound?name=VLV_Del_02_Eksempel_01\");\n private timeout = 500;\n private isExample01 = true;\n private timeout_example_tutorial = 12000;\n\n public start(): void {\n Helpers.hideOriginalBtn();\n Helpers.setExampleHeadline();\n Afsnit3Examples.example(\"san\", \"syb\", \"læl\", \"syf\");\n this.displayTutorialNextButton();\n this.playSoundTutorial();\n setTimeout(() => {\n this.setCorrectAnswerTutorial(\"button-01\");\n }, this.timeout_example_tutorial);\n }\n\n // Tutorial\n private setCorrectAnswerTutorial = (correctElementId: string): void => {\n const correctElement = document.getElementById(correctElementId) as HTMLElement;\n correctElement.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n };\n\n private playSoundTutorial(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_03_Eksempel_01\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn;\n }\n\n private displayTutorialNextButton = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_1Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.tutorialNextButtonHandler;\n btn.disabled = true;\n btn.id = \"nextButton_1\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private tutorialNextButtonHandler = (): void => {\n Helpers.removeElementById(\"nextButton_1Container\");\n Helpers.removeElementById(\"example_1\");\n this.startExample_1();\n };\n\n // Example 1\n private startExample_1 = (): any => {\n Afsnit3Examples.example(\"tyfd\", \"fæsd\", \"kruf\", \"føse\");\n this.displayNextBtn01();\n this.playSound(\"VLV_Del_03_Eksempel_02\");\n };\n\n private static example(btn_01_textcontent: string, btn_02_textcontent: string, btn_03_textcontent: string, btn_04_textcontent: string): void {\n const btn_01 = document.createElement(\"button\");\n btn_01.id = \"button-01\";\n btn_01.className = \"button-afsnit-3\";\n btn_01.textContent = btn_01_textcontent;\n\n const btn_02 = document.createElement(\"button\");\n btn_02.id = \"button-02\";\n btn_02.className = \"button-afsnit-3\";\n btn_02.textContent = btn_02_textcontent;\n\n const btn_03 = document.createElement(\"button\");\n btn_03.id = \"button-03\";\n btn_03.className = \"button-afsnit-3\";\n btn_03.textContent = btn_03_textcontent;\n\n const btn_04 = document.createElement(\"button\");\n btn_04.id = \"button-04\";\n btn_04.className = \"button-afsnit-3\";\n btn_04.textContent = btn_04_textcontent;\n\n const exampleContainer = document.createElement(\"div\");\n exampleContainer.className = \"example-afsnit-3-container-ramme\";\n exampleContainer.id = \"example_1\";\n exampleContainer.innerHTML = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
`;\n\n $(\".megatron-pagecontent.megatron-ot-sammensat span.megatron-opgave-sammensat-tekst\").append(exampleContainer);\n $(\"#button-container-01\").append(btn_01);\n $(\"#button-container-02\").append(btn_02);\n $(\"#button-container-03\").append(btn_03);\n $(\"#button-container-04\").append(btn_04);\n }\n\n private displayNextBtn01 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_1Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn01Handler;\n btn.disabled = true;\n btn.id = \"nextButton_1\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private playSound(soundPath: string): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=\" + soundPath;\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateEventListeners;\n }\n\n private activateEventListeners = (): void => {\n const btn_01 = document.getElementById(\"button-01\") as HTMLElement;\n btn_01.onclick = this.btn01Handler;\n\n const btn_02 = document.getElementById(\"button-02\") as HTMLElement;\n btn_02.onclick = this.btn02Handler;\n\n const btn_03 = document.getElementById(\"button-03\") as HTMLElement;\n btn_03.onclick = this.btn03Handler;\n\n const btn_04 = document.getElementById(\"button-04\") as HTMLElement;\n btn_04.onclick = this.btn04Handler;\n };\n\n private btn01Handler = (): void => {\n const btn_01 = document.getElementById(\"button-01\") as HTMLElement;\n btn_01.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n this.setCorrectAnswer(\"button-01\", \"button-02\");\n this.playSoundWrong();\n }, this.timeout);\n };\n\n private btn02Handler = (): void => {\n const btn_02 = document.getElementById(\"button-02\") as HTMLElement;\n btn_02.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n\n this.disableImgEventListener();\n this.playSoundCorrect();\n };\n\n private btn03Handler = (): void => {\n const btn_03 = document.getElementById(\"button-03\") as HTMLElement;\n btn_03.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n this.setCorrectAnswer(\"button-03\", \"button-02\");\n this.playSoundWrong();\n }, this.timeout);\n };\n\n private btn04Handler = (): void => {\n const btn_04 = document.getElementById(\"button-04\") as HTMLElement;\n btn_04.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n\n this.disableImgEventListener();\n setTimeout(() => {\n this.setCorrectAnswer(\"button-04\", \"button-02\");\n this.playSoundWrong();\n }, this.timeout);\n };\n\n private disableImgEventListener = (): void => {\n const btn_01 = document.getElementById(\"button-01\") as HTMLElement;\n btn_01.onclick = null;\n\n const btn_02 = document.getElementById(\"button-02\") as HTMLElement;\n btn_02.onclick = null;\n\n const btn_03 = document.getElementById(\"button-03\") as HTMLElement;\n btn_03.onclick = null;\n\n const btn_04 = document.getElementById(\"button-04\") as HTMLElement;\n btn_04.onclick = null;\n };\n\n private setCorrectAnswer(idWrong: string, idCorrect: string): void {\n const wrongAnswer = document.getElementById(idWrong) as HTMLElement;\n wrongAnswer.className = \"button-afsnit-3\";\n\n const correctAnser = document.getElementById(idCorrect) as HTMLElement;\n correctAnser.className = \"picture-answer button-afsnit-3 button-afsnit-3-correct\";\n }\n\n private playSoundCorrect(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_03_Rigtigt\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn;\n }\n\n private playSoundWrong(): void {\n this.audio.pause();\n if (this.isExample01) {\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_03_faesd\";\n } else {\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_03_sdaa\";\n }\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = this.activateNextBtn;\n }\n\n private activateNextBtn = (): void => {\n const btn = document.getElementById(\"nextButton_1\") as HTMLButtonElement;\n btn.disabled = false;\n };\n\n private nextBtn01Handler = (): void => {\n Helpers.removeElementById(\"nextButton_1Container\");\n Helpers.removeElementById(\"example_1\");\n this.startExample02();\n };\n\n // Example 2\n private startExample02 = (): any => {\n Afsnit3Examples.example(\"sgø\", \"sdå\", \"sgå\", \"sgæ\");\n this.displayNextBtn02();\n this.playSound(\"VLV_Del_03_Eksempel_03\");\n this.isExample01 = false;\n };\n\n private displayNextBtn02 = (): void => {\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"action-buttons mt-4 button-right\";\n btnContainer.id = \"nextButton_2Container\";\n const btn = document.createElement(\"button\");\n btn.className = \"button button-primary button-long\";\n btn.innerHTML = \"\\u25B6\";\n btn.onclick = this.nextBtn02Handler;\n btn.disabled = true;\n btn.id = \"nextButton_1\";\n btnContainer.append(btn);\n $(\".megatron-pagecontent\").append(btnContainer);\n };\n\n private nextBtn02Handler = (): void => {\n Helpers.removeElementById(\"nextButton_2Container\");\n Helpers.removeElementById(\"example_1\");\n this.endExample();\n };\n\n // End Example\n private endExample = (): any => {\n Afsnit3Examples.setEndExample();\n this.playSoundEnd();\n this.displayNextBtn01();\n };\n\n private static setEndExample(): void {\n $(\".megatron-pagecontent.megatron-ot-sammensat span strong\").html(\"LYT!\");\n }\n\n private playSoundEnd(): void {\n this.audio.pause();\n this.audio.src = \"/api/v1/Sound?name=VLV_Del_03_Eksempel_04\";\n this.audio.currentTime = 0;\n this.audio.play();\n this.audio.onended = Afsnit3Examples.onEndPlaySound4Handler;\n }\n\n private static onEndPlaySound4Handler(): void {\n Helpers.removeElementById(\"nextButton_1Container\");\n Helpers.displayOriginalBtn();\n }\n}\n\nexport const afsnit3Examples = new Afsnit3Examples();\n","import { Transformer } from \"@ftop/megatron\";\nimport React, { FunctionComponent, useContext, useEffect, useState } from \"react\";\nimport Page from \"../../../components/common/Page/Page\";\nimport { useLocation, useRouteMatch } from \"react-router-dom\";\nimport $ from \"jquery\";\nimport Opgavenummer from \"../../../components/Opgavenummer\";\nimport OpgavesaetContext from \"../../../components/OpgavesaetContext\";\nimport { GetOpgavesaetByBrugerkodeApi} from \"../../../apiService/OpgavesaetApi\";\nimport { genericWarning, noWarning } from \"../../../components/common/Warnings\";\nimport {Opgavevisning, Submittype, TransformSettings} from \"@ftop/megatron/dist/typeindex\";\nimport {afsnit1Examples} from \"../shared/examples/afsnit1Examples\";\nimport {afsnit2Examples} from \"../shared/examples/afsnit2Examples\";\nimport {afsnit3Examples} from \"../shared/examples/afsnit3Examples\";\nimport {IsTest} from \"../../../shared/utils/IsTest\";\n\nconst apiVersion = process.env.REACT_APP_API_VERSION;\n\nconst settings: TransformSettings = {\n opgavevisning: Opgavevisning.PerOpgave,\n readonly: false,\n submittype: Submittype.Async,\n storage: \"session\",\n endpoints: {\n apiPrefix: \"api/\" + apiVersion + \"/megatron\",\n },\n onSubmitRedirectLink: \"/resultat\"\n};\n\nconst settingsLaesetest: TransformSettings = {\n opgavevisning: Opgavevisning.NoWizardWithNextButton,\n readonly: false,\n submittype: Submittype.Async,\n storage: \"session\",\n endpoints: {\n apiPrefix: \"api/\" + apiVersion + \"/megatron\"\n },\n onSubmitRedirectLink: \"/resultat\",\n nextButtonText: \"\\u25B6\",\n sendResponsesWithoutChange: true\n\n};\n\nconst Opgavesaet: FunctionComponent = () => {\n const [brugerkode, setBrugerkode] = useState(\"\");\n const [contentComponent, setContentComponent] = useState();\n const [warning, setWarning] = useState();\n const location = useLocation();\n const isComplete = document.readyState === \"complete\";\n const { opgavesaet, setOpgavesaet, setTestnavn } = useContext(OpgavesaetContext);\n const afsnit_01 = 1;\n const afsnit_02 = 3;\n const afsnit_03 = 5;\n\n const GetBrugerkode = () => {\n const match: any = useRouteMatch(\"/test/:brugerkode\")?.params;\n if (!brugerkode && match && match.brugerkode) {\n setBrugerkode(match.brugerkode);\n }\n };\n\n GetBrugerkode();\n\n useEffect(() => {\n const AddEmptyOpgave = () => {\n for (const opgave of opgavesaet.afsnit[afsnit_01].opgaver) {\n if (opgave.opgaver.length == 1) {\n opgave.opgaver.push({\n svarmuligheder: [\"tomOpgave\", \"tomOpgave\", \"tomOpgave\", \"tomOpgave\", \"tomOpgave\"],\n type: 7\n });\n }\n }\n };\n\n const SetDisableButton = () => {\n if (!IsTest.isLaesetest(opgavesaet.navn)) {\n return;\n }\n\n for (const opgave of opgavesaet.afsnit[afsnit_02].opgaver) {\n for (const delOpgave of opgave.opgaver) {\n delOpgave.initiallyDisabledMs = 1000;\n }\n }\n\n if (opgavesaet.afsnit[afsnit_03] != null) {\n for (const opgave of opgavesaet.afsnit[afsnit_03].opgaver) {\n for (const delOpgave of opgave.opgaver) {\n delOpgave.initiallyDisabledMs = 1000;\n }\n }\n }\n };\n\n const SetGridAndAudioTag = () => {\n for (const opgave of opgavesaet.afsnit[afsnit_02].opgaver) {\n for (const delopgave of opgave.opgaver) {\n delopgave.grid = [2, 2];\n const audio = delopgave.audio;\n delopgave.audio = {source: [{src: \"/api/v1/Sound?name=\" + audio, type: \"audio/mpeg\"}], autoplay: true};\n }\n }\n\n\n if (opgavesaet.afsnit[afsnit_03] != null) {\n for (const opgave of opgavesaet.afsnit[afsnit_03].opgaver) {\n for (const delopgave of opgave.opgaver) {\n delopgave.grid = [4, 1];\n }\n }\n }\n };\n\n const RemoveNullTimeInSec = () => {\n for (const afsnit of opgavesaet.afsnit) {\n if (afsnit.timeInSec === null) {\n delete afsnit.timeInSec;\n }\n\n for (const opgave of afsnit.opgaver) {\n if (opgave.timeInSec === null) {\n delete opgave.timeInSec;\n }\n }\n }\n };\n\n if (!contentComponent) {\n GetOpgavesaetByBrugerkodeApi(brugerkode).then((opgavesaetResponse) => {\n if (opgavesaetResponse.isAxiosError && opgavesaetResponse.response.data.Message !== undefined) {\n setWarning(genericWarning(opgavesaetResponse.response.data.Message));\n setOpgavesaet!(\"\");\n } else {\n setOpgavesaet!(opgavesaetResponse.data);\n setTestnavn!(opgavesaetResponse.data.navn);\n setWarning(noWarning);\n }\n });\n\n if (opgavesaet !== \"\" && IsTest.isLaesetest(opgavesaet.navn)) {\n SetGridAndAudioTag();\n AddEmptyOpgave();\n RemoveNullTimeInSec();\n SetDisableButton();\n setContentComponent(new Transformer().transformString(JSON.stringify(opgavesaet), settingsLaesetest));\n } else if (opgavesaet !== \"\") {\n RemoveNullTimeInSec();\n setContentComponent(new Transformer().transformString(JSON.stringify(opgavesaet), settings));\n }\n }\n\n $(\".megatron-opgave-tekst\").appendTo(\".megatron-ot-optilenudafxtekst\");\n $(\".megatron-ot-optilenudafxtekst\").not(\".megatron-ot-optilenudafxtekst:last\").remove();\n $(\".mb-3 label img\").parent().parent().addClass(\"svarmulighed-image\");\n $('h1:contains(\"Afslut\")').parent().parent().parent().siblings(\".megatron-sidemenu\").remove();\n const lastIndex = ($('[role=\"tablist\"]').children().length - 2).toString();\n const currentIndex = $('[role=\"tablist\"]').find('[aria-selected=\"true\"]').attr(\"id\")?.substring(3);\n\n if ($( \".sidenav-list li\" ).last().hasClass(\"active\")) {\n $('button:contains(\"Næste\")').html(\"Gå til Del \" + (parseInt(currentIndex!) + 2) .toString());\n }\n\n if (lastIndex === currentIndex) {\n $('button:contains(\"Gå til Del\")').html(\"Afslut\");\n }\n\n if (IsTest.isLaesetest(opgavesaet.navn)) {\n if (contentComponent != null) {\n if ($(\".megatron-pagecontent span strong\").text() === \"Eksempel_01\") {\n afsnit1Examples.start();\n } else if ($(\".megatron-pagecontent span strong\").text() === \"Eksempel_02\") {\n afsnit2Examples.start();\n } else if ($(\".megatron-pagecontent span strong\").text() === \"Eksempel_03\") {\n afsnit3Examples.start();\n }\n }\n }\n }, [brugerkode, location, isComplete, contentComponent, opgavesaet, setOpgavesaet, setTestnavn]);\n\n return (\n \n
\n {warning}\n {contentComponent}\n \n
\n
\n );\n};\n\nexport default Opgavesaet;\n","import { FC, useEffect, useState } from \"react\";\nimport { IBrugerkodeProps } from \"../../../shared/interfaces/IBrugerkodeProps\";\nimport { HovedopgaveResult } from \"../../../shared/types/Result\";\nimport { IDisplayProps } from \"../ToggleResultDisplay\";\nimport {IResultProps} from \"../../../shared/interfaces/IResultProps\";\nimport styles from \"./Details.module.scss\";\nimport {IOpgavebesvarelserProps} from \"../../../shared/interfaces/IOpgavebesvarelserProps\";\n\ntype ResultRow = {\n name: string;\n correct: number;\n total: number;\n class: string;\n group: number;\n};\n\ntype Props = IDisplayProps | IBrugerkodeProps | IResultProps | IOpgavebesvarelserProps | any;\n\nconst Details: FC = (props) => {\n const { display } = props as IDisplayProps;\n const { brugerkode } = props as IBrugerkodeProps;\n const { result } = props as IResultProps;\n const [resultHeader, setResultHeader] = useState(new Array());\n\n useEffect(() => {\n let results: ResultRow[] = [];\n let group = 0;\n if (result?.afsnit?.length > 0) {\n console.log(\"result\", result);\n result.afsnit.map(\n (a: { navn: string; correct: number; total: number; hovedopgaver: Array }) => {\n results = [\n ...results,\n {\n name: a.navn,\n correct: a.correct,\n total: a.total,\n class: \"hovedopgave\",\n group: group,\n },\n ];\n a.hovedopgaver.forEach((h) => {\n results = [\n ...results,\n {\n name: \"Opgave \" + h.overskrift,\n correct: h.correct,\n total: h.total,\n class: \"opgave displayNone\",\n group: group,\n },\n ];\n });\n group += 1;\n }\n );\n setResultHeader(results);\n }\n }, [brugerkode, result]);\n\n const ToggleDisplay = (className: string, group: string) => {\n if (className === \"hovedopgave\") {\n const opgaver = document.getElementsByClassName(\"opgave\");\n Array.from(opgaver).forEach((element) => {\n if (element.classList.contains(group)) {\n element.classList.toggle(\"displayNone\");\n }\n });\n\n const hovedopgaver = document.getElementsByClassName(\"detailResultat\");\n Array.from(hovedopgaver).forEach((element) => {\n if (element.classList.contains(group)) {\n element.classList.toggle(\"detail_open\");\n element.classList.toggle(\"detail_closed\");\n }\n });\n }\n };\n\n const resultInPercentange: string =\n result != undefined && result?.resultInPercentange != undefined\n ? parseFloat(result?.resultInPercentange).toFixed(1).replaceAll(\".\", \",\")\n : \"\";\n const resultAsFraction: string =\n result != undefined && result.correct != undefined && result.total != undefined\n ? `${result.correct} af ${result.total}`\n : \"\";\n\n const displayResultatoversigt = () => {\n return (\n \n \n {result?.testNavn}, samlet resultat\n {resultAsFraction}\n {`(${resultInPercentange} %)`} \n \n {resultHeader.map((row) => (\n ToggleDisplay(row.class, row.group.toString())}>\n (e.key === 'Enter' || e.key === 'Space' || e.key === ' ') && ToggleDisplay(row.class, row.group.toString())}\n className={\n (row.class === \"hovedopgave\" ? \"detail detail_closed detailResultat \" : \" \") + row.group.toString()\n }>\n {row.name}\n \n \n {row.correct} af {row.total}{\" \"}\n \n \n {row.class === \"hovedopgave\" &&\n \"(\" +\n ((row.correct / row.total) * 100).toFixed(1).toString().replaceAll(\".\", \",\") +\n \" %)\"}\n \n \n ))}\n \n );\n };\n\n if (!display) {\n return <>;\n } else {\n return (\n <>\n

Resultatoversigt

\n \n \n \n \n \n \n \n { displayResultatoversigt() }\n
NavnPoint\n
\n \n );\n }\n};\n\nexport default Details;\n","export enum MessageTypes {\n Error = \"error\",\n Success = \"success\",\n Info = \"info\",\n Warning = \"warning\"\n}\n","import moment from \"moment\";\nimport {FC} from \"react\";\nimport {IBrugerkodeProps} from \"../../../shared/interfaces/IBrugerkodeProps\";\nimport {IDisplayProps} from \"../ToggleResultDisplay\";\nimport {IResultProps} from \"../../../shared/interfaces/IResultProps\";\nimport styles from \"./Summary.module.scss\";\nimport {IElevProps} from \"../../../shared/interfaces/IElevProps\";\nimport {LanguageOptions} from \"../../../shared/enums/LanguageOptions\";\nimport TestResultInfo from \"../TestResultInfo/TestResultInfo\";\nimport {ITestApprovalProps} from \"../../../shared/interfaces/ITestApprovalProps\";\nimport {ITesttagningProps} from \"../../../shared/interfaces/ITesttagningProps\";\nimport {IsTest} from \"../../../shared/utils/IsTest\";\n\ntype Props = IDisplayProps | IBrugerkodeProps | IResultProps | IElevProps | ITestApprovalProps | ITesttagningProps;\n\nconst Summary: FC = (props) => {\n const { display } = props as IDisplayProps;\n const { brugerkode } = props as IBrugerkodeProps;\n const { result } = props as IResultProps;\n const { elev } = props as IElevProps;\n const { setTekstlaesning, tekstlaesning, setOrdforraad, ordforraad, setOrdlaesning, ordlaesning } = props as ITestApprovalProps;\n const { testtagning } = props as ITesttagningProps;\n\n const foedselsdag: string =\n result != undefined && result?.foedselsdag != undefined\n ? moment(new Date(result.foedselsdag)).format(\"DD-MM-YYYY\")\n : \"\";\n const testDate: string =\n result != undefined && result?.sluttidspunkt != undefined\n ? moment(new Date(result.sluttidspunkt)).format(\"DD-MM-YYYY\")\n : \"\";\n const resultDate: string =\n result != undefined && result?.resultDate != undefined\n ? moment(new Date(result.resultDate)).format(\"DD-MM-YYYY\")\n : \"\";\n\n const setVLVBedsteSprog = (): string => {\n if (elev.bedsteSprog === LanguageOptions.DANSK) {\n return \"Dansk\";\n } else if (elev.bedsteSprog === LanguageOptions.IKKE_DANSK) {\n return \"Et andet sprog end dansk\";\n } else if (elev.bedsteSprog === LanguageOptions.DANSK_OG_ET_ANDET_SPROG) {\n return \"Både dansk og et andet sprog\";\n }\n\n return \"\";\n };\n\n const setFGULBedsteSprog = (): string | undefined => {\n if (elev.bedsteSprog === LanguageOptions.DANSK) {\n return \"Dansk\";\n } else if (elev.bedsteSprog === LanguageOptions.IKKE_DANSK) {\n return elev.sprog;\n }\n\n return \"\";\n };\n\n if (!display) {\n return <>;\n } else {\n return (\n
\n

{result?.testNavn}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n { IsTest.isVLV(result?.testNavn) &&\n \n \n \n \n }\n { IsTest.isFGUL(result?.testNavn) &&\n \n \n \n \n }\n \n
Navn:{result?.testtagerNavn}
Fødselsdato:{foedselsdag}
Brugerkode:{brugerkode}
Dato for test:{testDate}
Dato for udskrift:{resultDate}
Testtagers bedste sprog:{setVLVBedsteSprog()}
Testtagers bedste sprog:{setFGULBedsteSprog()}
\n { IsTest.isFGUL(result?.testNavn) &&\n \n }\n
\n );\n }\n};\n\nexport default Summary;\n","import { FC } from \"react\";\n\nexport interface IDisplayProps {\n display: boolean;\n setDisplay: React.Dispatch>;\n}\n\nconst ToggleResultDisplay: FC = ({ display, setDisplay }) => {\n return (\n
\n {\n setDisplay(!display);\n }}>\n {display ? \"Skjul resultat\" : \"Vis resultat\"}\n \n
\n );\n};\n\nexport default ToggleResultDisplay;\n","import BaseApi from \"./BaseApi\";\nimport { AxiosResponse } from \"axios\";\nimport { ResponseType } from \"../shared/types/ResponseType\";\n\nexport const GetResultByBrugerkodeAsElevApi = async (brugerkode: string): Promise => {\n return await BaseApi.get(\"Result/GetByBrugerkodeAsElev?brugerkode=\" + brugerkode);\n};\n\nexport const GetResultAsPdfByBrugerkodeAsElevApi = async (brugerkode: string | undefined | null): Promise => {\n return await BaseApi.get(\"Result/GetAsPdfByBrugerkodeAsElev?brugerkode=\" + brugerkode);\n};\n\nexport const GetResultByBrugerkodeApi = async (brugerkode: string): Promise => {\n return await BaseApi.get(\"Result/GetByBrugerkode?brugerkode=\" + brugerkode);\n};\n\nexport const GetOpgavebesvarelserByBrugerkode = async (brugerkode: string): Promise => {\n return await BaseApi.get(\"Result/GetOpgavebesvarelserByBrugerkode?brugerkode=\" + brugerkode);\n};\n\nexport const GetResultAsPdfByBrugerkodeApi = async (brugerkode: string | undefined | null): Promise => {\n return await BaseApi.get(\"Result/GetAsPdfByBrugerkode?brugerkode=\" + brugerkode);\n};\n\nexport const CreateResultsAsPdfZippedApi = async (brugerkoder: string[]): Promise> => {\n try {\n const response = await BaseApi.post>(\"Result/CreateAsPdfZipped\", { brugerkoder });\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: error.response.data.Message,\n };\n }\n};\n\n\n\n","import { FC, useEffect, useState } from \"react\";\nimport { IBrugerkodeProps } from \"../../../shared/interfaces/IBrugerkodeProps\";\nimport { HovedopgaveResult } from \"../../../shared/types/Result\";\nimport { IDisplayProps } from \"../ToggleResultDisplay\";\nimport {IResultProps} from \"../../../shared/interfaces/IResultProps\";\nimport styles from \"./DetailsLaesetest.module.scss\";\nimport {ITesttagningProps} from \"../../../shared/interfaces/ITesttagningProps\";\nimport {IsTest} from \"../../../shared/utils/IsTest\";\n\ntype ResultRow = {\n name: string;\n correct: number;\n wrong: number;\n skipped: number;\n unanswererd: number;\n class: string;\n group: number;\n};\n\ntype Props = IDisplayProps | IBrugerkodeProps | IResultProps |ITesttagningProps;\n\nconst DetailsLaesetest: FC = (props) => {\n const { display } = props as IDisplayProps;\n const { brugerkode } = props as IBrugerkodeProps;\n const { result } = props as IResultProps;\n const { testtagning } = props as ITesttagningProps;\n const [resultHeader, setResultHeader] = useState(new Array());\n\n useEffect(() => {\n let results: ResultRow[] = [];\n let group = 0;\n if (result?.afsnit?.length > 0) {\n result.afsnit.map(\n (a: { navn: string; correct: number; wrong: number; skipped: number; unanswered: number; hovedopgaver: Array }) => {\n results = [\n ...results,\n {\n name: a.navn,\n correct: a.correct,\n wrong: a.wrong,\n skipped: a.skipped,\n unanswererd: a.unanswered,\n class: \"hovedopgave\",\n group: group,\n },\n ];\n group += 1;\n }\n );\n setResultHeader(results);\n }\n }, [brugerkode, result]);\n\n const renderResult = (row: ResultRow): string => {\n if (row.group === 0) {\n const sluttidspunkt = new Date(testtagning.del1Sluttidspunkt);\n const starttidspunkt = new Date(testtagning.del1Starttidspunkt);\n const totalTime = sluttidspunkt.getTime() - starttidspunkt.getTime();\n let time = (row.correct - (row.wrong / 3)) * 600000 / totalTime;\n\n if (time <= 0)\n {\n time = 0;\n\n return time.toString();\n } else {\n return time.toFixed(1).replaceAll(\".\", \",\").toString();\n }\n }\n\n return row.correct.toString();\n };\n\n const renderSkipped = (row: ResultRow): number => {\n if (row.group === 0 || row.group === 1) {\n return row.skipped + row.unanswererd;\n } else if (row.group === 2) {\n return row.skipped;\n }\n\n return Number.NaN;\n };\n\n const tableBody = () => {\n return (\n \n \n {result?.testNavn}\n Rigtige\n Forkerte\n Oversprungne\n { IsTest.isFGUL(result.testNavn) &&\n Resultat\n }\n \n {resultHeader.map((row) => (\n \n \n {row.name + \"?\"}\n \n \n {row.correct}{\" \"}\n \n \n {row.wrong}{\" \"}\n \n \n {renderSkipped(row)}{\" \"}\n \n { IsTest.isFGUL(result.testNavn) &&\n \n {renderResult(row)}{\" \"}\n \n }\n \n ))}\n \n );\n };\n\n if (!display) {\n return <>;\n } else {\n return (\n <>\n

Resultatoversigt

\n \n \n \n \n \n {tableBody()}\n
\n \n \n \n { IsTest.isFGUL(result.testNavn) &&\n \n }\n
\n \n );\n }\n};\n\nexport default DetailsLaesetest;\n","import { FunctionComponent, useEffect, useState } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\nimport Details from \"../../components/results/Details/Details\";\nimport Summary from \"../../components/results/Summary/Summary\";\nimport ToggleResultDisplay from \"../../components/results/ToggleResultDisplay\";\nimport {GetResultAsPdfByBrugerkodeAsElevApi, GetResultByBrugerkodeAsElevApi} from \"../../apiService/ResultApi\";\nimport { Result } from \"../../shared/types/Result\";\nimport { SessionStorage } from \"../../shared/enums/Storage\";\nimport {GetElevByBrugerkodeAsElevApi} from \"../../apiService/ElevApi\";\nimport {Elev} from \"../../shared/types/Elev\";\nimport {GetTesttagningDetailsByBrugerkode, UpdateTesttagningByBrugerkodeApi} from \"../../apiService/TesttagningApi\";\nimport {TesttagningDetails} from \"../../shared/types/TesttagningDetails\";\nimport DetailsLaesetest from \"../../components/results/DetailsLaesetest/DetailsLaesetest\";\nimport {IsTest} from \"../../shared/utils/IsTest\";\n\nconst Resultater: FunctionComponent = () => {\n const [display, setDisplay] = useState(false);\n const [brugerkode, setBrugerkode] = useState();\n const [result, setResult] = useState();\n const [elev, setElev] = useState();\n const [tekstlaesning, setTekstlaesning] = useState(false);\n const [ordforraad, setOrdforraad] = useState(false);\n const [ordlaesning, setOrdlaesning] = useState(false);\n const [testtagning, setTesttagning] = useState();\n\n useEffect(() => {\n const brugerkodeInSession = sessionStorage.getItem(SessionStorage.BRUGERKODE);\n sessionStorage.clear();\n if (brugerkodeInSession) {\n setBrugerkode(brugerkodeInSession);\n }\n if (brugerkode != undefined) {\n GetResultByBrugerkodeAsElevApi(brugerkode).then(response => {\n if (response == 1) {\n return;\n }\n setResult(response.data.data);\n });\n\n GetElevByBrugerkodeAsElevApi(brugerkode).then((response) => {\n setElev(response.data.data);\n });\n\n GetTesttagningDetailsByBrugerkode(brugerkode).then(response => {\n setTesttagning(response.data);\n });\n\n }\n }, [brugerkode]);\n\n useEffect(() => {\n if (brugerkode != undefined)\n {\n UpdateTesttagningByBrugerkodeApi(brugerkode, tekstlaesning, ordforraad, ordlaesning);\n }\n },[tekstlaesning, ordforraad, ordlaesning, brugerkode]);\n\n const downloadPdf = (brugerkode: string | null | undefined): void => {\n UpdateTesttagningByBrugerkodeApi(brugerkode, tekstlaesning, ordforraad, ordlaesning).then(() => {\n GetResultAsPdfByBrugerkodeAsElevApi(brugerkode).then(response => {\n window.open(response.request.responseURL, '');\n });\n });\n };\n\n return (\n \n
\n

Din test er nu afsluttet, og dine svar er gemt

\n

Luk ikke dette vindue, før du har talt med din testvejleder.

\n
\n \n \n { IsTest.isLaesetest(result?.testNavn) &&\n \n }\n { IsTest.isMatematiktest(result?.testNavn) &&\n
\n }\n {display && }\n
\n
\n );\n};\n\nexport default Resultater;\n","import { FunctionComponent } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport styles from \"./NavigateModule.module.scss\";\n\nconst NavigateModule: FunctionComponent<{\n label: string;\n path: string }> =\n ({label, path,}) => {\n const history = useHistory();\n\n return (\n <>\n
  • -1 ? `current ${styles.link}` : `${styles.link}`}>\n \n
  • \n \n );\n};\n\nexport default NavigateModule;\n","import { FunctionComponent } from \"react\";\nimport {useHistory, useLocation} from \"react-router-dom\";\nimport styles from \"./NavigatePage.module.scss\";\n\nconst NavigatePage: FunctionComponent<{\n label: string;\n path: string }> =\n ({label, path,}) => {\n const location = useLocation();\n const history = useHistory();\n\n return (\n <>\n
  • \n \n
  • \n \n );\n};\n\nexport default NavigatePage;\n","import { FC } from \"react\";\nimport styles from \"./Navigation.module.scss\";\nimport {authorizationService} from \"../../../../services/auth/authorization.service\";\nimport NavigateModule from \"../NavigateModule/NavigateModule\";\nimport NavigatePage from \"../NavigatePage/NavigatePage\";\n\nexport const Navigation: FC = () => {\n return (\n <>\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n \n );\n};\n","import { PropsWithChildren } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\nimport { Navigation } from \"../../components/common/navigation/Navigation/Navigation\";\n\nconst VejlederPage = (props: PropsWithChildren): JSX.Element => {\n return (\n \n \n
    {props.children}
    \n
    \n );\n};\n\nexport default VejlederPage;\n","import React, {useEffect, useState} from \"react\";\nimport styles from \"./Toast.module.scss\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck, faTimes, IconDefinition, faExclamationTriangle, faInfoCircle, faExclamation} from '@fortawesome/free-solid-svg-icons';\nimport {MessageTypes} from \"../shared/enums/MessageTypes\";\n\n\nexport interface ToastProps {\n id: string;\n destroy: () => void;\n content: string;\n messageType: MessageTypes;\n duration?: number;\n}\n\nconst Toast: React.FC = (props) => {\n const { destroy, content, messageType, duration = 5000 } = props;\n const [messageIcon, setMessageIcon] = useState(faCheck);\n const [color, setColor] = useState();\n\n useEffect(() => {\n if (!duration) {\n return;\n }\n\n setIcon(messageType);\n\n setBackgroundColor(messageType);\n\n const timer = setTimeout(() => {\n destroy();\n }, duration);\n\n return () => clearTimeout(timer);\n }, [destroy, duration, messageType]);\n\n const setIcon = (messageType: MessageTypes): void => {\n switch(messageType) {\n case MessageTypes.Success: {\n setMessageIcon(faCheck);\n break;\n }\n case MessageTypes.Error: {\n setMessageIcon(faExclamation);\n break;\n }\n case MessageTypes.Info: {\n setMessageIcon(faInfoCircle);\n break;\n }\n case MessageTypes.Warning: {\n setMessageIcon(faExclamationTriangle);\n break;\n }\n default: {\n break;\n }\n }\n };\n\n const setBackgroundColor = (messageType: MessageTypes): void => {\n switch(messageType) {\n case MessageTypes.Success: {\n setColor(`${styles.toastMain} ${styles.toastSuccess}`);\n break;\n }\n case MessageTypes.Error: {\n setColor(`${styles.toastMain} ${styles.toastError}`);\n break;\n }\n case MessageTypes.Info: {\n setColor(`${styles.toastMain} ${styles.toastInfo}`);\n break;\n }\n case MessageTypes.Warning: {\n setColor(`${styles.toastMain} ${styles.toastWarning}`);\n break;\n }\n default: {\n break;\n }\n }\n };\n\n return (\n
    \n
    \n \n {content}\n \n
    \n
    \n );\n};\n\nconst shouldRerender = (prevProps: ToastProps, nextProps: ToastProps) => {\n return prevProps.id === nextProps.id;\n};\n\nexport default React.memo(Toast, shouldRerender);\n\n","import ReactDOM from \"react-dom\";\nimport Toast, { ToastProps } from \"../Toast/Toast\";\nimport styles from \"./ToastManager.module.scss\";\nimport { MessageTypes } from \"../shared/enums/MessageTypes\";\n\ninterface ToastOptions {\n content: string;\n messageType: MessageTypes;\n}\n\nexport class ToastManager {\n private readonly containerRef: HTMLDivElement;\n private toasts: ToastProps[] = [];\n\n constructor() {\n const body = document.getElementsByTagName(\"body\")[0] as HTMLBodyElement;\n const toastContainer = document.createElement(\"div\") as HTMLDivElement;\n body.insertAdjacentElement(\"beforeend\", toastContainer);\n this.containerRef = toastContainer;\n }\n\n public error(message: string): void {\n this.display({\n content: message,\n messageType: MessageTypes.Error\n });\n }\n\n public success(message: string): void {\n this.display({\n content: message,\n messageType: MessageTypes.Success\n });\n }\n\n public info(message: string): void {\n this.display({\n content: message,\n messageType: MessageTypes.Info\n });\n }\n\n public warning(message: string): void {\n this.display({\n content: message,\n messageType: MessageTypes.Warning\n });\n }\n\n private display(options: ToastOptions): void {\n const toastId = Math.random().toString(36).substr(2, 9);\n this.setStyle();\n const toast: ToastProps = {\n id: toastId,\n ...options,\n destroy: () => this.destroy( toastId),\n };\n\n this.toasts = [toast, ...this.toasts];\n this.render();\n }\n\n private setStyle(): void {\n this.containerRef.className = `${styles.toastContainerMain}`;\n }\n\n private destroy(id: string): void {\n this.toasts = this.toasts.filter((toast: ToastProps) => toast.id !== id);\n this.render();\n }\n\n private render(): void {\n const toastsList = this.toasts.map((toastProps: ToastProps) => (\n \n ));\n ReactDOM.render(toastsList, this.containerRef);\n }\n}\n\nexport const toastManager = new ToastManager();\n","const createDownloadLink = (byteArray: string, format: string, fileName: string): void => {\n const binaryString = window.atob(byteArray);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n for (let i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const blob = new Blob([bytes], {type: `application/${format}`});\n const link = window.URL.createObjectURL(blob);\n const downloadLink = document.createElement(\"a\");\n downloadLink.href = link;\n downloadLink.download = `${fileName}.${format}`;\n downloadLink.click();\n};\n\nexport default createDownloadLink;\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { fas, faCheck, } from '@fortawesome/free-solid-svg-icons';\nimport { far, faSquare, faSquareCheck } from '@fortawesome/free-regular-svg-icons';\n\nlibrary.add(far, faSquare, faSquareCheck, fas, faCheck);\n\nconst DetailsSvarmulighed = (props: {opgaver: any, opgavebesvarelser: any}): JSX.Element => {\n const svarMuligheder = [] as JSX.Element[];\n\n props.opgaver.map((opgave: any) => {\n switch (opgave.type) {\n //This case corresponds to assignments with radiobutton answers\n case 6: {\n const besvarelse = props.opgavebesvarelser.find((e: any) => e.opgaveId === opgave.id)?.svarmulighed?.svar;\n const korrektBesvarelse = opgave.svarmuligheder[opgave.korrektSvar];\n opgave.svarmuligheder.map((svar: string) => {\n const indexOfImageApi = svar.indexOf(\"/api/\");\n if(indexOfImageApi !== -1){\n const imagePath = svar.substring(indexOfImageApi, svar.lastIndexOf(\")\"));\n const imageDescription = svar.substring(svar.indexOf(\"[\") + 1,svar.lastIndexOf(\"]\"));\n svarMuligheder.push(
    \n

    {svar == besvarelse ?\n (\n \n ) : (\n \n )}\n

    \n\n \n\n

    \n {svar == korrektBesvarelse &&\n \n }\n

    \n
    );\n }\n else{\n svarMuligheder.push(
    \n

    {svar == besvarelse ?\n (\n \n ) : (\n \n )}\n

    \n\n

    \n\n

    \n {svar == korrektBesvarelse &&\n \n }\n

    \n
    );}\n }\n );\n break;\n }\n //This case corresponds to assignments with DropDown answers\n case 7:\n break;\n }\n });\n return (<>{svarMuligheder});\n};\n\nexport default DetailsSvarmulighed;","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport styles from \"./AnswerLineText.module.scss\";\n\nconst AnswerLine = (props: { opgaver: any, opgavebesvarelser: any }): JSX.Element => {\n const answerLines = [] as JSX.Element[];\n props.opgaver.forEach((opgave: any) => {\n const isKorrektBesvarelse = props.opgavebesvarelser.find((e: any) => e.opgaveId === opgave.id)?.svarmulighed?.korrekt;\n const besvarelse = props.opgavebesvarelser.find((e: any) => e.opgaveId === opgave.id)?.svarmulighed?.svar;\n const korrektBesvarelse = opgave.svarmuligheder[opgave.korrektSvar];\n\n answerLines.push(
    {answerLineImage(isKorrektBesvarelse)} {answerLineText(opgave.type, isKorrektBesvarelse, besvarelse, korrektBesvarelse)}
    );\n });\n return (
    {answerLines}
    );\n};\n\nfunction answerLineText(questionType: any, isKorrektBesvarelse: any, besvarelse: any, korrektBesvarelse: any) {\n switch (questionType) {\n //This case corresponds to assignments with radiobutton answers\n case 6:\n if (isKorrektBesvarelse == undefined) {\n return

    {\"Spørgsmålet blev ikke besvaret.\"}

    ;\n }\n else if (isKorrektBesvarelse) {\n return

    {\"Svaret var rigtigt\"}

    ;\n }\n else if (!isKorrektBesvarelse) {\n return

    {\"Svaret var forkert\"}

    ;\n }\n break;\n //This case corresponds to assignments with DropDown answers\n case 7:\n if (isKorrektBesvarelse == undefined) {\n return

    {\"Spørgsmålet blev ikke besvaret.\"}

    ;\n }\n else if (isKorrektBesvarelse) {\n return

    ${besvarelse}.`}}/>;\n }\n else if (!isKorrektBesvarelse) {\n return

    ${besvarelse}. Det rigtige svar er ${korrektBesvarelse}.`}}/>;\n }\n break;\n }\n return \"\";\n}\n\nfunction answerLineImage(isKorrektBesvarelse: boolean | undefined) {\n if (isKorrektBesvarelse == undefined) {\n return ;\n }\n else if (isKorrektBesvarelse) {\n return ;\n }\n else if (!isKorrektBesvarelse) {\n return ;\n }\n return <>;\n}\n\nexport default AnswerLine;","import styles from \"./OpgaveText.module.scss\";\n\nconst OpgaveText = (props: { opgaver: any }): JSX.Element => {\n let opgaveText = \"\";\n \n props.opgaver.forEach((opgave: any) => {\n let svarOptions = \"\";\n switch (opgave.type) {\n //This case corresponds to assignments with radiobutton answers\n case 6:\n opgaveText += opgave.tekst.replaceAll(\"#\", \"\") + \" \";\n break;\n //This case corresponds to assignments with DropDown answers\n case 7:\n svarOptions += \" (\";\n opgave.svarmuligheder.forEach((svar: string) => {\n svarOptions += svar + \", \";\n });\n svarOptions = svarOptions.substring(0, svarOptions.lastIndexOf(\",\"));\n svarOptions += \")\";\n opgaveText += opgave.tekst.replaceAll(\" \", ` ${svarOptions} `).replaceAll(\" ,\", \",\") + \" \";\n break;\n }\n });\n return (

    );\n};\n\nexport default OpgaveText;","import { FC, useEffect, useState } from \"react\";\nimport { IBrugerkodeProps } from \"../../../shared/interfaces/IBrugerkodeProps\";\nimport { HovedopgaveResult } from \"../../../shared/types/Result\";\nimport { IDisplayProps } from \"../ToggleResultDisplay\";\nimport { IResultProps } from \"../../../shared/interfaces/IResultProps\";\nimport styles from \"./DetailsOpgaveBesvarelseMatematik.module.scss\";\nimport { IOpgavebesvarelserProps } from \"../../../shared/interfaces/IOpgavebesvarelserProps\";\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { fas, faCheck, faXmark, faRadiation, faCircleExclamation } from '@fortawesome/free-solid-svg-icons';\nimport DetailsSvarmulighed from \"./DetailsSvarmulighed\";\nimport AnswerLineText from \"./AnswerLineText\";\nimport OpgaveText from \"./OpgaveText\";\n\nlibrary.add(fas, faRadiation, faCheck, faXmark, faCircleExclamation);\n\ntype ResultRow = {\n name: string;\n correct: number;\n total: number;\n class: string;\n group: number;\n};\n\ntype Props = IDisplayProps | IBrugerkodeProps | IResultProps | IOpgavebesvarelserProps | any;\n\nconst DetailsOpgaveBesvarelseMatematik: FC = (props) => {\n const { display } = props as IDisplayProps;\n const { brugerkode } = props as IBrugerkodeProps;\n const { result } = props as IResultProps;\n const { opgavebesvarelser } = props as IOpgavebesvarelserProps;\n const [resultHeader, setResultHeader] = useState(new Array());\n const { opgavesaet } = props as any;\n const opgaveLinjer = [] as JSX.Element[];\n\n useEffect(() => {\n let results: ResultRow[] = [];\n let group = 0;\n if (result?.afsnit?.length > 0) {\n console.log(\"result\", result);\n result.afsnit.map(\n (a: { navn: string; correct: number; total: number; hovedopgaver: Array }) => {\n results = [\n ...results,\n {\n name: a.navn,\n correct: a.correct,\n total: a.total,\n class: \"hovedopgave\",\n group: group,\n },\n ];\n a.hovedopgaver.forEach((h) => {\n results = [\n ...results,\n {\n name: \"Opgave \" + h.overskrift,\n correct: h.correct,\n total: h.total,\n class: \"opgave displayNone\",\n group: group,\n },\n ];\n });\n group += 1;\n }\n );\n setResultHeader(results);\n }\n }, [brugerkode, result]);\n\n const ToggleDisplay = (className: string, group: string) => {\n if (className === \"hovedopgave\") {\n const opgaver = document.getElementsByClassName(\"opgavebesvarelseDetail\");\n Array.from(opgaver).forEach((element) => {\n if (element.classList.contains(group)) {\n element.classList.toggle(\"displayNone\");\n }\n });\n\n const hovedopgaver = document.getElementsByClassName(\"opgavebesvarelse\");\n Array.from(hovedopgaver).forEach((element) => {\n if (element.classList.contains(group)) {\n element.classList.toggle(\"detail_open\");\n element.classList.toggle(\"detail_closed\");\n }\n });\n }\n };\n\n let i = 1;\n resultHeader?.map((row) => {\n if (row.class === \"hovedopgave\") {\n opgaveLinjer.push(\n ToggleDisplay(row.class, row.group.toString())}>\n (e.key === 'Enter' || e.key === 'Space' || e.key === ' ') && ToggleDisplay(row.class, row.group.toString())}\n className={\n (\"opgavebesvarelse detail detail_closed \") + row.group.toString()\n }>\n {row.name}\n \n \n );\n\n opgavesaet?.afsnit[row.group]?.opgaver?.forEach((hovedOpgave: any) => {\n const opgaveNummer = `Opgave ${i}: `;\n\n opgaveLinjer.push(\n \n \n {

    {opgaveNummer}

    }\n {}\n {}\n {}\n \n );\n i++;\n });\n }\n });\n\n if (!display) {\n return <>;\n } else {\n return (\n <>\n {opgavebesvarelser != null &&\n <>\n

    Opgavebesvarelser

    \n \n \n \n \n \n \n \n {opgaveLinjer}\n \n
    Spørgsmål
    \n \n }\n \n );\n }\n};\n\nexport default DetailsOpgaveBesvarelseMatematik;","import { FunctionComponent, useEffect, useState, useContext } from \"react\";\nimport Summary from \"../../components/results/Summary/Summary\";\nimport Details from \"../../components/results/Details/Details\";\nimport {\n GetOpgavebesvarelserByBrugerkode,\n GetResultAsPdfByBrugerkodeApi,\n GetResultByBrugerkodeApi\n} from \"../../apiService/ResultApi\";\nimport VejlederPage from \"./VejlederPage\";\nimport { Result } from \"../../shared/types/Result\";\nimport { toastManager } from \"../../components/common/Toast/ToastManager/ToastManager\";\nimport createDownloadLink from \"../../shared/utils/createDownloadLink\";\nimport { GetElevByBrugerkodeAsAuthenticatedUserApi } from \"../../apiService/ElevApi\";\nimport { Elev } from \"../../shared/types/Elev\";\nimport { GetTesttagningDetailsByBrugerkode, UpdateTesttagningByBrugerkodeApi } from \"../../apiService/TesttagningApi\";\nimport { TesttagningDetails } from \"../../shared/types/TesttagningDetails\";\nimport DetailsLaesetest from \"../../components/results/DetailsLaesetest/DetailsLaesetest\";\nimport { IsTest } from \"../../shared/utils/IsTest\";\nimport OpgavesaetContext from \"../../components/OpgavesaetContext\";\nimport { GetOpgavesaetByBrugerkodeApi } from \"../../apiService/OpgavesaetApi\";\nimport DetailsOpgaveBesvarelseMatematik from \"../../components/results/DetailsOpgaveBesvarelseMatematik/DetailsOpgaveBesvarelseMatematik\";\nimport { genericWarning, noWarning } from \"../../components/common/Warnings\";\n\nconst VejlederElevResultat: FunctionComponent = () => {\n const [display, setDisplay] = useState(true);\n const [warning, setWarning] = useState();\n const [brugerkode, setBrugerkode] = useState();\n const [result, setResult] = useState();\n const [opgavebesvarelser, setOpgavebesvarelser] = useState();\n const [elev, setElev] = useState();\n const [tekstlaesning, setTekstlaesning] = useState();\n const [ordforraad, setOrdforraad] = useState();\n const [ordlaesning, setOrdlaesning] = useState();\n const [testtagning, setTesttagning] = useState();\n const { opgavesaet, setOpgavesaet, setTestnavn } = useContext(OpgavesaetContext);\n\n useEffect(() => {\n const queryParams = new URLSearchParams(window.location.search);\n setBrugerkode(queryParams.get(\"brugerkode\"));\n if (brugerkode != undefined) {\n GetOpgavebesvarelserByBrugerkode(brugerkode).then(response => {\n setOpgavebesvarelser(response.data.data);\n });\n GetResultByBrugerkodeApi(brugerkode).then(response => {\n setResult(response.data.data);\n });\n\n GetElevByBrugerkodeAsAuthenticatedUserApi(brugerkode).then((response) => {\n setElev(response.data.data);\n });\n\n GetTesttagningDetailsByBrugerkode(brugerkode).then(response => {\n setTesttagning(response.data);\n setTekstlaesning(response?.data?.tekstlaesning);\n setOrdforraad(response?.data?.ordforraad);\n setOrdlaesning(response?.data?.ordlaesning);\n });\n\n GetOpgavesaetByBrugerkodeApi(brugerkode).then((opgavesaetResponse) => {\n if (opgavesaetResponse.isAxiosError && opgavesaetResponse.response?.data?.Message !== undefined) {\n setWarning(genericWarning(opgavesaetResponse.response.data.Message));\n setOpgavesaet!(\"\");\n } else {\n setOpgavesaet!(opgavesaetResponse.data);\n setTestnavn!(opgavesaetResponse.data?.navn);\n setWarning(noWarning);\n }\n });\n }\n }, [brugerkode, setOpgavesaet, setTestnavn]);\n\n useEffect(() => {\n if (brugerkode != undefined)\n {\n UpdateTesttagningByBrugerkodeApi(brugerkode, tekstlaesning, ordforraad, ordlaesning);\n }\n },[tekstlaesning, ordforraad, ordlaesning, brugerkode]);\n\n const downloadPdf = (brugerkode: string | null | undefined): void => {\n UpdateTesttagningByBrugerkodeApi(brugerkode, tekstlaesning, ordforraad, ordlaesning).then(() => {\n GetResultAsPdfByBrugerkodeApi(brugerkode).then(response => {\n const byteArray = response.data.data;\n if (byteArray != undefined) {\n createDownloadLink(byteArray, \"pdf\", `${elev?.fornavn}_${elev?.efternavn}_${elev?.brugerkode}_${IsTest.getTestName(testtagning?.opgavesaet.navn)}`);\n } else {\n toastManager.error(\"Der skete en fejl. Prøv igen.\");\n }\n });\n });\n };\n\n return (\n \n
    \n {warning}\n {elev != undefined && <>\n

    Afsluttet test for {result?.testtagerNavn}

    \n \n {IsTest.isLaesetest(result?.testNavn) &&\n \n }\n {IsTest.isMatematiktest(result?.testNavn) &&\n
    \n }\n \n {IsTest.isMatematiktest(result?.testNavn) &&\n \n }\n }\n
    \n
    \n );\n};\n\nexport default VejlederElevResultat;\n","export const localization = {\n pagination: {\n labelRowsSelect: \"Rækker\",\n labelDisplayedRows: \"Viser {from} til {to} af {count}\",\n firstAriaLabel: \"Første side\",\n firstTooltip: \"\",\n previousAriaLabel: \"Forige side\",\n previousTooltip: \"\",\n nextAriaLabel: \"Næste side\",\n nextTooltip: \"\",\n lastAriaLabel: \"Sidste side\",\n lastTooltip: \"\",\n },\n toolbar: {\n searchPlaceholder: \"Søg i tabellen\",\n searchTooltip: \"\",\n exportPDFName: \"Eksportér som PDF\",\n exportCSVName: \"Eksportér som CSV\",\n exportTitle: \"Eksportér\",\n exportAriaLabel: \"Eksportér\",\n nRowsSelected: \"\"\n },\n body: {\n emptyDataSourceMessage: \"Ingen data at vise\",\n filterRow: {\n filterTooltip: \"Filter\",\n },\n },\n};\n","import { forwardRef } from \"react\";\nimport AddBox from \"@material-ui/icons/AddBox\";\nimport ArrowUpward from \"@material-ui/icons/ArrowUpward\";\nimport Check from \"@material-ui/icons/Check\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport Clear from \"@material-ui/icons/Clear\";\nimport DeleteOutline from \"@material-ui/icons/DeleteOutline\";\nimport FilterList from \"@material-ui/icons/FilterList\";\nimport FirstPage from \"@material-ui/icons/FirstPage\";\nimport LastPage from \"@material-ui/icons/LastPage\";\nimport Remove from \"@material-ui/icons/Remove\";\nimport Search from \"@material-ui/icons/Search\";\nimport ViewColumn from \"@material-ui/icons/ViewColumn\";\nimport { Icons } from \"@material-table/core\";\n\nexport const tableIcons: Icons = {\n // eslint-disable-next-line react/display-name\n Add: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n Check: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n Clear: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n Delete: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n DetailPanel: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n Filter: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n FirstPage: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n LastPage: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n NextPage: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n PreviousPage: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n ResetSearch: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n Search: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n SortArrow: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n ThirdStateCheck: forwardRef((props, ref) => ),\n // eslint-disable-next-line react/display-name\n ViewColumn: forwardRef((props, ref) => ),\n};\n","import React from \"react\";\n\nexport const search = true;\nexport const searchFieldAlignment = \"left\";\nexport const pageSize = 20;\nexport const pageSizeOptions = [10, 20, 50];\nexport const headerStyle: React.CSSProperties = {\n fontSize: 14,\n fontWeight: \"bold\",\n backgroundColor: \"#f5f5f5\",\n};\n\nexport const searchFieldStyle: React.CSSProperties = {\n fontSize: 14,\n};\nexport const selection = true;\nexport const emptyRowsWhenPaging = false;\n","import moment from \"moment\";\nimport {ExportCsv, ExportPdf} from \"@material-table/exporters\";\n\nconst formatDates = (cols: any[], datas: any[]): [any[], any[]] => {\n const dateArr: string[] = [];\n\n cols.forEach((currentValue): void => {\n if(currentValue.type == \"date\" ) {\n dateArr.push(currentValue.field);\n }\n });\n\n datas.forEach((currentValue): void => {\n for (const key in currentValue) {\n if (dateArr.includes(key) && currentValue[key] != \"-\") {\n currentValue[key] = moment(new Date(currentValue[key])).format(\"DD-MM-YYYY\");\n }\n }\n });\n\n return [cols, datas];\n};\n\nconst removeEmptyColoumns = (cols: any[], datas: any[]): [any[], any[]] => {\n let index = 0;\n cols.forEach((currentValue): void => {\n for (const key in currentValue) {\n if (currentValue[key] == \"internal_action\") {\n cols.splice(index, 1);\n }\n }\n index++;\n });\n\n return [cols, datas];\n};\n\nconst removeEmptyFormattedResult = (cols: any[], datas: any[]): [any[], any[]] => {\n datas.forEach((currentValue): void => {\n if (currentValue?.formattedResult == \"-\") {\n currentValue.formattedResult = \"\";\n }\n });\n\n return [cols, datas];\n};\n\nconst addPlaceholderForEmptyValues = (cols: any[], datas: any[]): [any[], any[]] => {\n datas.forEach((currentValue): void => {\n for (const key in currentValue) {\n if (currentValue[key] == \"\" || currentValue[key] == undefined || currentValue[key] == null) {\n currentValue[key] = \"-\";\n }\n }\n });\n\n return [cols, datas];\n};\n\nexport const exportPdf = (cols: any[], datas: any[], title: string): void => {\n [cols, datas] = removeEmptyColoumns(cols, datas);\n [cols, datas] = addPlaceholderForEmptyValues(cols, datas);\n [cols, datas] = formatDates(cols, datas);\n ExportPdf(cols, datas, title);\n};\n\nexport const exportCSV = (cols: any[], datas: any[], title: string): void => {\n [cols, datas] = removeEmptyColoumns(cols, datas);\n [cols, datas] = formatDates(cols, datas);\n [cols, datas] = removeEmptyFormattedResult(cols, datas);\n ExportCsv(cols, datas, title, \";\");\n};\n\nexport const pdfLabel = \"Eksportér PDF\";\nexport const csvLabel = \"Eksportér CSV\";\n\n","import {search, searchFieldAlignment, pageSize, pageSizeOptions, headerStyle, searchFieldStyle, emptyRowsWhenPaging, selection } from \"../../common/table/shared/Options\";\nimport {csvLabel, exportCSV, exportPdf, pdfLabel} from \"../../common/table/shared/utils/exportData\";\nimport {Options} from \"@material-table/core\";\n\nconst exportMenu: any = [{\n label: pdfLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportPdf(cols, datas, \"Brugerkoder\");\n }\n},\n {\n label: csvLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportCSV(cols, datas, \"Brugerkoder\");\n }\n }];\n\nexport const options: Options = {\n selection,\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n exportMenu,\n emptyRowsWhenPaging,\n};\n\n","import jsPDF from \"jspdf\";\r\n\r\nexport type BrugerkodePdf = {\r\n brugerkode: string,\r\n testName: string\r\n};\r\n\r\nfunction shouldInsertNewPage(index: number) : boolean {\r\n const maxNumberOfBrugerkoderPerPage = 9; // This is found by trial and error and is based on current FontSize used.\r\n\r\n return (index + 1) % maxNumberOfBrugerkoderPerPage === 0;\r\n}\r\n\r\nfunction calculateYPosition(index: number) : number {\r\n const distanceFromTop = 20;\r\n const distanceBetweenBrugerkoder = 30;\r\n const positionOnPage = index % 9;\r\n\r\n return distanceBetweenBrugerkoder * positionOnPage + distanceFromTop;\r\n}\r\n\r\nfunction saveBrugerkoderToFile(brugerkoder: BrugerkodePdf[]) : void {\r\n\r\n const filename = \"Brugerkoder.pdf\";\r\n\r\n const pdf = new jsPDF('portrait', 'mm', 'a4');\r\n\r\n pdf.setFont(\"times\", \"normal\");\r\n brugerkoder.map(brugerkode => [brugerkode.brugerkode, brugerkode.testName, \"Testafvikleren.dk\"])\r\n .forEach((brugerkodeBlok, index) => {\r\n pdf.text(brugerkodeBlok, 30, calculateYPosition(index));\r\n\r\n if (shouldInsertNewPage(index)) {\r\n pdf.addPage(\"a4\", \"portrait\");\r\n }\r\n });\r\n\r\n pdf.save(filename);\r\n}\r\n\r\nexport default saveBrugerkoderToFile;","import { FunctionComponent, useEffect, useState } from \"react\";\nimport { TesttagningDetails } from \"../../../shared/types/TesttagningDetails\";\nimport { Paper } from \"@material-ui/core\";\nimport { localization } from \"../../common/table/shared/Localization\";\nimport { tableIcons } from \"../../common/table/shared/Icons\";\nimport moment from \"moment\";\nimport MaterialTable from \"@material-table/core\";\nimport { options } from \"./Options\";\nimport styles from \"./VejlederBrugerkoderTable.module.scss\";\nimport { toastManager } from \"../../common/Toast/ToastManager/ToastManager\";\nimport saveBrugerkoderToFile, { BrugerkodePdf } from \"./SaveBrugerkoderToFile\";\n\nconst VejlederBrugerkoderTable: FunctionComponent<{\n testtagninger: TesttagningDetails[]\n}> = ({ testtagninger }) => {\n const [testtagning, setTesttagning] = useState([]);\n const [selectedRows, setSelectedRows] = useState([]);\n const [columns] = useState([\n {\n title: \"Brugerkode\",\n field: \"elev.brugerkode\",\n type: \"string\" as const,\n cellStyle: {\n width: '25%',\n maxWidth: '25%'\n },\n headerStyle: {\n width: '25%',\n maxWidth: '25%'\n }\n },\n {\n title: \"Opgavesæt\",\n field: \"opgavesaet.navn\",\n type: \"string\" as const,\n },\n {\n title: \"Hold\",\n field: \"elev.hold.navn\",\n type: \"string\" as const,\n render: (rowData: any) => (rowData?.elev?.hold?.navn != undefined ? rowData.elev.hold.navn : \"-\"),\n },\n {\n title: \"Oprettet d.\",\n field: \"createdAt\",\n type: \"date\" as const,\n render: (rowData: any) =>\n rowData?.createdAt != undefined ? moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\") : \"-\",\n customFilterAndSearch: (term: string, rowData: { createdAt: Date }) => {\n const formated = moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\");\n const formatedArr = formated.split(\"-\");\n return (formatedArr[0] + \"-\" + formatedArr[1] + \"-\" + formatedArr[2]).indexOf(term) != -1;\n },\n cellStyle: {\n width: '25%',\n maxWidth: '25%'\n },\n headerStyle: {\n width: '25%',\n maxWidth: '25%'\n }\n },\n ]);\n\n useEffect(() => {\n const sorted = testtagninger.sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n );\n setTesttagning(sorted);\n\n }, [testtagninger]);\n\n const downloadBrugerkoderAsPdf = () => {\n const brugerkoder: BrugerkodePdf[] = [];\n selectedRows.map((row) => {\n brugerkoder.push({brugerkode: row.elev.brugerkode, testName:row.opgavesaet.navn});\n });\n if (brugerkoder != undefined) {\n saveBrugerkoderToFile(brugerkoder);\n } else {\n toastManager.error('Der skete en fejl. Prøv igen.');\n }\n };\n\n return (\n <>\n {\n setSelectedRows(rows);\n }}\n components={{\n Container: (props) => ,\n }}\n localization={localization}>\n \n\n downloadBrugerkoderAsPdf()}\n disabled={selectedRows.length < 1}>\n Udskriv valgte brugerkoder\n \n \n );\n};\n\nexport default VejlederBrugerkoderTable;\n","import { FC } from \"react\";\n\nexport const ModalBackdrop: FC = () => {\n return
    ;\n};\n","import {AxiosResponse} from \"axios\";\nimport {HoldDetails} from \"../shared/types/HoldDetails\";\nimport BaseApi from \"./BaseApi\";\nimport {ResponseType} from \"../shared/types/ResponseType\";\n\n\nexport const GetHoldAsVejlederApi = async (): Promise => {\n return BaseApi.get>(\"Hold/GetByAuthenticatedUser\").then((response) => {\n const hold = response.data.data as HoldDetails[];\n return hold.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n });\n};\n\nexport const GetHoldBySupportsagIdApi = async (supportsagId: string): Promise => {\n return await BaseApi.get(\"Hold/GetBySupportsagId?supportsagId=\" + supportsagId);\n};\n\nexport const UpdateArchiveHold = async (holdNavn: string, archived: boolean): Promise> => {\n try {\n const response = await BaseApi.put>(\"Hold/UpdateArchive\", { holdNavn, archived });\n return {\n data: undefined,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n\nexport const CreateHoldApi = async (navn: string): Promise> => {\n try {\n const response = await BaseApi.post>(\"Hold\", { navn });\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: error.response.data.Message,\n };\n }\n};\n","const updateTable = (): number => {\n return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n};\n\nexport default updateTable;\n","import { ChangeEvent, Dispatch, FunctionComponent, SetStateAction, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { getAllVisibleOpgavesaetApi, GetOpgavesaetByRule } from \"../../../apiService/OpgavesaetApi\";\nimport { CreateBrugerkoderApi } from \"../../../apiService/AuthenticatedUserApi\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../common/ModalBackdrop\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport { CreateHoldApi, GetHoldAsVejlederApi } from \"../../../apiService/HoldApi\";\nimport { Opgavesaet } from \"../../../shared/types/Opgavesaet\";\nimport styles from \"./VejlederCreateBrugerkoderModal.module.scss\";\nimport { toastManager } from \"../../common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../shared/utils/updateTable\";\nimport { authorizationService } from \"../../../services/auth/authorization.service\";\n\nconst VejlederCreateBrugerkoderModal: FunctionComponent<{\n forceUpdate: number,\n setForceUpdate: Dispatch>;\n}> = ({ forceUpdate, setForceUpdate }) => {\n\n enum HoldOptions {\n NOHOLD = \"noHold\",\n EXISTINGHOLD = \"existingHold\",\n NEWHOLD = \"newHold\"\n }\n\n const [opgavesaet, setOpgavesaet] = useState([]);\n const [selectedOpgavesetId, setSelectedOpgavesaetId] = useState();\n const [selectedOpgavesetValue, setSelectedOpgavesaetValue] = useState();\n const [selectedHoldId, setSelectedHoldId] = useState();\n const [selectedHoldValue, setSelectedHoldValue] = useState();\n const [numberToCreate, setNumberToCreate] = useState(1);\n const [holdDetails, setHoldDetails] = useState([]);\n const [hold, setHold] = useState(HoldOptions.NOHOLD);\n const [newHoldName, setNewHoldName] = useState(\"\");\n\n const history = useHistory();\n\n useEffect(() => {\n if (authorizationService.isSupporter()) {\n getAllVisibleOpgavesaetApi().then((response) => {\n setOpgavesaet(response);\n });\n } else if (authorizationService.isVejleder()) {\n GetOpgavesaetByRule().then((response) => {\n if (response.succeeded && response.data) {\n setOpgavesaet(response.data);\n }\n });\n }\n\n GetHoldAsVejlederApi().then((hold: HoldDetails[]) => {\n setHoldDetails(hold.filter(function (hold) {\n return !hold?.archived;\n }));\n });\n }, [history, forceUpdate]);\n\n const handleSelectedChangeOpgavesaet = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n const value = event.target.options[selectedIndex].getAttribute(\"value\");\n setSelectedOpgavesaetId(id!);\n setSelectedOpgavesaetValue(value!);\n };\n\n const handleSelectedChangeHold = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n const value = event.target.options[selectedIndex].getAttribute(\"value\");\n setSelectedHoldValue(value!);\n setSelectedHoldId(id!);\n };\n\n const opgavesaetOptions =\n opgavesaet.length > 0 &&\n opgavesaet.map((item) => {\n return (\n \n );\n });\n\n const holdOptions =\n holdDetails.length > 0 &&\n holdDetails.map((item) => {\n return (\n \n );\n });\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n const requestHoldId = await getRequestHoldId();\n if (hold == HoldOptions.NEWHOLD) {\n if (requestHoldId == undefined) {\n return;\n }\n }\n\n const response = await CreateBrugerkoderApi(numberToCreate, selectedOpgavesetId!, requestHoldId);\n if (response.succeeded) {\n toastManager.success(response.Message);\n // a new random number will make the VejlederBrugerkoderTable fetch data again including new brugerkoder\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n\n toggleOpretBrugerkoderModal();\n };\n\n const getRequestHoldId = async (): Promise => {\n switch (hold) {\n case HoldOptions.NOHOLD:\n return undefined;\n case HoldOptions.EXISTINGHOLD:\n return selectedHoldId;\n case HoldOptions.NEWHOLD:\n if (newHoldName != \"\") {\n const response = await CreateHoldApi(newHoldName);\n if (response.succeeded && response.data) {\n return response.data;\n } else {\n toastManager.error(response.errors.toString());\n }\n } else {\n toastManager.error(\"Du kan ikke oprette et hold uden et navn.\");\n }\n\n return undefined;\n default:\n break;\n }\n };\n\n const toggleOpretBrugerkoderModal = () => {\n setSelectedOpgavesaetId(\"\");\n setSelectedOpgavesaetValue(\"\");\n setSelectedHoldId(undefined);\n setSelectedHoldValue(\"\");\n setNumberToCreate(1);\n setHold(HoldOptions.NOHOLD);\n setNewHoldName(\"\");\n\n $(\"#modal-brugerkoder\").toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n const handleHoldChange = (event: any) => {\n setHold(event.target.value);\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Opret brugerkoder

    \n
    \n
    \n
    \n \n {\n setNumberToCreate(e.target.valueAsNumber);\n }}>\n \n
    \n
    \n \n handleSelectedChangeOpgavesaet(e)}\n className=\"item form-select\"\n style={{ width: \"auto\" }}\n value={selectedOpgavesetValue}>\n
    \n
    \n \n
    \n
    \n Intet hold\n
    \n
    \n
    \n Eksisterende hold\n
    \n handleSelectedChangeHold(e)}\n className={`item form-select ${styles.input}`}\n style={{ width: \"auto\" }}\n value={selectedHoldValue}\n disabled={hold != HoldOptions.EXISTINGHOLD}>\n
    \n
    \n
    \n Nyt hold\n
    \n {\n setNewHoldName(e.target.value);\n }}>\n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n );\n};\n\nexport default VejlederCreateBrugerkoderModal;\n","import { FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederBrugerkoderTable from \"../../components/vejleder/VejlederBrugerkoderTable/VejlederBrugerkoderTable\";\nimport VejlederPage from \"./VejlederPage\";\nimport VejlederCreateBrugerkoderModal from \"../../components/vejleder/VejlederCreateBrugerkoderModal/VejlederCreateBrugerkoderModal\";\nimport { GetTesttagningerAsAuthenticatedUserApi } from \"../../apiService/TesttagningApi\";\nimport { TesttagningDetails } from \"../../shared/types/TesttagningDetails\";\n\nconst VejlederBrugerkoder: FunctionComponent = () => {\n const [forceUpdate, setForceUpdate] = useState(0);\n const [testtagning, setTesttagning] = useState([]);\n\n useEffect(() => {\n GetTesttagningerAsAuthenticatedUserApi(false).then((response) => {\n const testtagninger = response.data.data as TesttagningDetails[];\n setTesttagning(testtagninger);\n });\n }, [forceUpdate]);\n\n return (\n \n

    Brugerkoder

    \n

    Opret brugerkoder til at give adgang til en ny test. En brugerkode er unik og giver adgang til én test pr. person.\n Når brugerkoderne er oprettet, fremgår de i listen nedenfor. Ubrugte brugerkoder slettes efter 30 dage.\n

    \n \n

    Eksisterende brugerkoder

    \n

    Brugerkoderne i listen nedenfor er ubrugte og kan distribueres. Når en test påbegyndes, fjernes koden fra oversigten.\n Igangværende og afsluttede test kan ses under {\"'Resultater'\"}.\n

    \n \n
    \n );\n};\n\nexport default VejlederBrugerkoder;\n","import { ElevDetails } from \"./ElevDetails\";\nimport { OpgavesaetDetails } from \"./OpgavesaetDetails\";\n\nexport type TesttagningDetails = {\n starttidspunkt: Date;\n sluttidspunkt: Date;\n procentKorrekteOpgaver: string;\n elev: ElevDetails;\n opgavesaet: OpgavesaetDetails;\n createdAt: Date;\n antalForkerteOpgaver: number;\n antalIkkeBesvaredeOpgaver: number;\n antalKorrekteOpgaver: number;\n antalOversprungneOpgaver: number;\n formattedResult: string;\n del1Starttidspunkt: Date;\n del1Sluttidspunkt: Date;\n del2Starttidspunkt: Date;\n del2Sluttidspunkt: Date;\n del3Starttidspunkt: Date;\n del3Sluttidspunkt: Date;\n ordforraad: boolean;\n ordlaesning: boolean;\n tekstlaesning: boolean;\n\n};\n\nexport const formattedResult = (item: TesttagningDetails): string => {\n const total = item.antalForkerteOpgaver + item.antalIkkeBesvaredeOpgaver + item.antalKorrekteOpgaver + item.antalOversprungneOpgaver;\n if (total == 0) {\n return \"-\";\n } else {\n return `${item.antalKorrekteOpgaver} af ${total}`;\n }\n};\n","import { ChangeEvent, Dispatch, FunctionComponent, SetStateAction, useState } from \"react\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport $ from \"jquery\";\nimport { ElevDetails } from \"../../../shared/types/ElevDetails\";\nimport { UpdateElevApi } from \"../../../apiService/ElevApi\";\nimport { Elev } from \"../../../shared/types/Elev\";\nimport styles from \"./VejlederChangeHoldForTesttagningModal.module.scss\";\nimport updateTable from \"../../shared/utils/updateTable\";\n\nconst VejlederChangeHoldForTesttagningModal: FunctionComponent<{ elev: ElevDetails; setForceUpdate: Dispatch>; hold: HoldDetails[] }> = ({\n elev,\n setForceUpdate,\n hold\n}) => {\n const [selectedHold, setSelectedHold] = useState(elev.hold);\n\n const holdOptions =\n hold.length > 0 &&\n hold.map((item) => {\n return (\n \n );\n });\n\n const toggleHoldModal = () => {\n $(`#modal-hold-${elev.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n const handleSelectedChangeHold = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n setSelectedHold(hold.find((h) => h.id == id));\n };\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n const updatedElev: Elev = { ...elev, holdId: selectedHold?.id, foedselsdato: elev.foedselsdag?.toString() };\n await UpdateElevApi(updatedElev);\n setForceUpdate(updateTable());\n toggleHoldModal();\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Skift hold

    \n
    \n
    \n
    \n \n handleSelectedChangeHold(e)}\n className=\"item form-select\"\n style={{ width: \"auto\" }}\n value={selectedHold?.navn ?? \"\"}>\n
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default VejlederChangeHoldForTesttagningModal;\n","import { FC } from \"react\";\nimport {IDisplayProps} from \"../../shared/interfaces/IDisplayProps\";\n\ntype Props = IDisplayProps;\n\nconst ToggleArchiveHoldButton: FC = (props) => {\n const { display, setDisplay } = props as IDisplayProps;\n return (\n
    \n {\n setDisplay(!display);\n }}/>\n \n
    \n );\n};\n\nexport default ToggleArchiveHoldButton;\n","import {exportCSV, exportPdf, pdfLabel, csvLabel} from \"../shared/utils/exportData\";\nimport {\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n selection,\n emptyRowsWhenPaging\n} from \"../shared/Options\";\nimport {Options} from \"@material-table/core\";\n\nconst exportMenu: any = [{\n label: pdfLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportPdf(cols, datas, \"Testresultater\");\n }\n },\n {\n label: csvLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportCSV(cols, datas, \"Testresultater\");\n }\n }];\n\nexport const options: Options = {\n selection,\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n exportMenu,\n emptyRowsWhenPaging\n};\n\n","import { useState, useEffect } from 'react';\n\nfunction getSessionStorageOrDefault(key: string, defaultValue: string | boolean) {\n const stored = sessionStorage.getItem(key);\n if (!stored) {\n return defaultValue;\n }\n return JSON.parse(stored);\n}\n\nexport function useSessionStorage(key: string, defaultValue: string | boolean) : any[] {\n const [value, setValue] = useState(\n getSessionStorageOrDefault(key, defaultValue)\n );\n\n useEffect(() => {\n sessionStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue];\n}","import React, { Dispatch, FunctionComponent, SetStateAction, useCallback, useEffect, useState } from \"react\";\nimport { TesttagningDetails } from \"../../../../shared/types/TesttagningDetails\";\nimport moment from \"moment\";\nimport { Paper } from \"@material-ui/core\";\nimport { localization } from \"../shared/Localization\";\nimport { tableIcons } from \"../shared/Icons\";\nimport MaterialTable from \"@material-table/core\";\nimport { useHistory } from \"react-router-dom\";\nimport VejlederChangeHoldForTesttagningModal from \"../../../vejleder/VejlederChangeHoldForTesttagningModal/VejlederChangeHoldForTesttagningModal\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../ModalBackdrop\";\nimport styles from \"./TestResultTable.module.scss\";\nimport ToggleArchiveHoldButton from \"../../ToggleArchiveHoldButton\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { toastManager } from \"../../Toast/ToastManager/ToastManager\";\nimport { CreateResultsAsPdfZippedApi } from \"../../../../apiService/ResultApi\";\nimport { options } from \"./Options\";\nimport { faEdit } from '@fortawesome/free-solid-svg-icons';\nimport createDownloadLink from \"../../../../shared/utils/createDownloadLink\";\nimport { HoldDetails } from \"../../../../shared/types/HoldDetails\";\nimport { GetHoldAsVejlederApi } from \"../../../../apiService/HoldApi\";\nimport { useSessionStorage } from \"../shared/utils/useSessionStorage\";\nimport { SessionStorage } from \"../../../../shared/enums/Storage\";\n\nconst TestResultTable: FunctionComponent<{\n testtagninger: TesttagningDetails[];\n tableInfo: JSX.Element;\n setForceUpdate: Dispatch>;\n mutable: boolean;\n}> = ({ testtagninger, tableInfo, setForceUpdate, mutable }) => {\n const [filteredTesttagninger, setFilteredTesttagninger] = useState([]);\n const [selectedRows, setSelectedRows] = useState([]);\n const [hold, setHold] = useState([]);\n const [showArchived, setShowArchived] = useSessionStorage(SessionStorage.SHOW_ARCHIVED, false);\n\n const history = useHistory();\n const columnsDef = useCallback(() => {\n const renderNavn = (rowData: TesttagningDetails) => {\n if (rowData.sluttidspunkt == undefined) {\n return {rowData.elev.fullName};\n }\n const link = `/vejleder/elev/resultat?brugerkode=${rowData.elev.brugerkode}`;\n return (\n history.push(link)}>\n {rowData.elev.fullName}\n \n );\n };\n\n const renderHold = (rowData: TesttagningDetails) => {\n if (mutable) {\n return (\n <>\n {rowData?.elev?.hold?.navn != undefined ? rowData.elev.hold.navn : \"-\"}\n {\n $(`#modal-hold-${rowData.elev.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n }}>\n \n \n \n \n );\n } else {\n return {rowData?.elev?.hold?.navn != undefined ? rowData.elev.hold.navn : \"-\"};\n }\n };\n\n return [\n {\n title: \"Navn\",\n field: \"elev.fullName\",\n width: \"25%\",\n type: \"string\" as const,\n render: (rowData: TesttagningDetails) => renderNavn(rowData),\n },\n {\n title: \"Gennemført d.\",\n field: \"sluttidspunkt\",\n type: \"date\" as const,\n render: (rowData: any) =>\n rowData?.sluttidspunkt != undefined\n ? moment(new Date(rowData.sluttidspunkt)).format(\"DD-MM-YYYY\")\n : \"Ikke afsluttet\",\n customFilterAndSearch: (term: string, rowData: { sluttidspunkt: Date }) => {\n const formated = moment(new Date(rowData.sluttidspunkt)).format(\"DD-MM-YYYY\");\n const formatedArr = formated.split(\"-\");\n return (formatedArr[0] + \"-\" + formatedArr[1] + \"-\" + formatedArr[2]).indexOf(term) != -1;\n },\n },\n {\n title: \"Test\",\n field: \"opgavesaet.navn\",\n type: \"string\" as const,\n },\n {\n title: \"Brugerkode\",\n field: \"elev.brugerkode\",\n type: \"string\" as const,\n },\n {\n title: \"Hold\",\n field: \"elev.hold.navn\",\n type: \"string\" as const,\n render: (rowData: any) => renderHold(rowData),\n }\n ];\n }, [history, mutable, setForceUpdate, hold]);\n const [columns, setColumns] = useState(columnsDef());\n\n const downloadTestResultsAsZip = (): void => {\n toastManager.info(\"Vent et øjeblik imens testresultaterne bliver genereret.\");\n const unfinishedRows = selectedRows.filter(x => x.sluttidspunkt == undefined);\n if (unfinishedRows.length >= 1) {\n toastManager.error(\"Du kan ikke downloade resultater for prøver der ikke er afsluttet.\");\n }\n const finishedRows = selectedRows.filter(x => x.sluttidspunkt != undefined);\n if (finishedRows.length >= 1) {\n CreateResultsAsPdfZippedApi(finishedRows.map(x => x.elev.brugerkode)).then((response) => {\n const byteArray = response.data;\n if (byteArray != undefined) {\n createDownloadLink(byteArray, \"zip\", \"testresultater\");\n toastManager.success(\"Testresultater er downloadet.\");\n } else {\n toastManager.error(\"Der skete en fejl. Prøv igen.\");\n }\n });\n }\n };\n\n useEffect(() => {\n if (!showArchived) {\n setFilteredTesttagninger(testtagninger.filter((testtagning) => {\n return !testtagning?.elev?.hold?.archived;\n }));\n } else {\n setFilteredTesttagninger(testtagninger);\n }\n setColumns(columnsDef());\n }, [testtagninger, columnsDef, showArchived, hold]);\n\n useEffect(() => {\n let isMounted = true;\n GetHoldAsVejlederApi().then((hold) => {\n if (isMounted) {\n setHold(hold.filter(function (hold) {\n return !hold?.archived;\n }));\n }\n });\n return () => {\n isMounted = false;\n };\n }, []);\n\n return (\n
    \n
    \n {tableInfo}\n
    \n
    \n \n
    \n
    \n
    \n {\n setSelectedRows(rows);\n }}\n components={{\n Container: (props) => ,\n }}\n localization={localization}>\n \n {mutable ? : <>}\n\n downloadTestResultsAsZip()}\n disabled={selectedRows.length < 1}>\n Download testresultater\n \n \n Hent resultaterne for de valgte testdeltagere. Vær opmærksom på, at du gemmer personfølsomt data på din computer.\n
    \n );\n};\n\nexport default TestResultTable;\n","export enum RuleTypes {\n CVR = \"cvr\",\n P_NUMMER = \"pNummer\",\n PREFERRED_USERNAME = \"preferred_username\",\n RID = \"rid\"\n}\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederPage from \"../VejlederPage\";\nimport { GetTesttagningerAsAuthenticatedUserApi } from \"../../../apiService/TesttagningApi\";\nimport { formattedResult, TesttagningDetails } from \"../../../shared/types/TesttagningDetails\";\nimport TestResultTable from \"../../../components/common/table/Table/TestResultTable\";\nimport { useSessionStorage } from \"../../../components/common/table/shared/utils/useSessionStorage\";\nimport { SessionStorage } from \"../../../shared/enums/Storage\";\n\nconst VejlederResultat: FunctionComponent = () => {\n const [testtagninger, setTesttagninger] = useState([]);\n const [forceUpdate, setForceUpdate] = useState(0);\n const [showArchived] = useSessionStorage(SessionStorage.SHOW_ARCHIVED, false);\n\n useEffect(() => {\n GetTesttagningerAsAuthenticatedUserApi(true).then((response) => {\n const testtagninger = response.data.data as TesttagningDetails[];\n\n for (const item of testtagninger) {\n if (item.elev.fornavn != null) {\n item.elev.fullName = item.elev.fornavn + \" \" + item.elev.efternavn;\n } else {\n item.elev.fullName = \"-\";\n }\n }\n\n for (const item of testtagninger) {\n item.formattedResult = formattedResult(item);\n }\n\n const sortedTesttagninger = testtagninger.sort(\n (a, b) => new Date(b.sluttidspunkt).getTime() - new Date(a.sluttidspunkt).getTime()\n );\n setTesttagninger(sortedTesttagninger);\n });\n }, [forceUpdate, showArchived]);\n\n return (\n \n

    Resultater

    \n \n Se oplysninger om igangværende og afsluttede test.
    \n Hvis testen er afsluttet, kan resultatoversigten tilgås ved at klikke på navnet.\n

    \n Bemærk: \n Testresultater opbevares i to år, hvorefter de kasseres. Du bør undersøge, om din\n institution gemmer resultater centralt, og i så fald overføre dem fra Testafvikleren.\n

    \n \n }\n setForceUpdate={setForceUpdate}\n mutable={true}\n />\n
    \n );\n};\n\nexport default VejlederResultat;\n","import { FunctionComponent } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { authorizationService } from \"../../services/auth/authorization.service\";\nimport { Roles } from \"../../shared/enums/Roles\";\n\nconst AuthRedirect: FunctionComponent = () => {\n const history = useHistory();\n \n switch(authorizationService.getCurrentRole()) {\n case Roles.VEJLEDER:\n history.push(\"/vejleder/brugerkoder\");\n break;\n case Roles.SUPPORTER:\n history.push(\"/supporter/searchVejleder\");\n break;\n default:\n history.push(\"/auth/noaccess\");\n break;\n }\n return <>;\n};\n\nexport default AuthRedirect;\n","import { Dispatch, FunctionComponent, SetStateAction, useState } from \"react\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../common/ModalBackdrop\";\nimport { CreateHoldApi } from \"../../../apiService/HoldApi\";\nimport styles from \"./VejlederCreateHoldModal.module.scss\";\nimport {toastManager} from \"../../common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../shared/utils/updateTable\";\n\nconst VejlederCreateHoldModal: FunctionComponent<{\n setForceUpdate: Dispatch>;\n}> = ({ setForceUpdate }) => {\n const [nameToCreate, setNameToCreate] = useState(\"\");\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n const response = await CreateHoldApi(nameToCreate);\n if (response.succeeded) {\n toastManager.success(`Hold ${nameToCreate} oprettet`);\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n\n toggleOpretHoldModal();\n };\n\n const toggleOpretHoldModal = () => {\n setNameToCreate(\"\");\n\n $(\"#modal-hold\").toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Opret hold

    \n
    \n
    \n
    \n \n {\n setNameToCreate(e.target.value);\n }}>\n \n
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n );\n};\n\nexport default VejlederCreateHoldModal;\n","import {Dispatch, FunctionComponent, SetStateAction, useEffect, useState} from \"react\";\nimport { UpdateArchiveHold } from \"../../../apiService/HoldApi\";\nimport $ from 'jquery';\nimport {HoldDetails} from \"../../../shared/types/HoldDetails\";\nimport styles from \"./VejlederArchiveHoldModal.module.scss\";\nimport {toastManager} from \"../../common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../shared/utils/updateTable\";\n\nconst VejlederArchiveHoldModal: FunctionComponent<{\n hold: HoldDetails;\n archive: boolean;\n setForceUpdate: Dispatch>;\n}> = ({hold, setForceUpdate, archive }) => {\n const [archivedText, setArchivedText] = useState(\"\");\n const [archived, setArchived] = useState(\"\");\n\n const toggleArchiveHoldModal = () => {\n $(`#modal-archive-hold-${hold.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n await UpdateArchiveHold(hold.navn, archive).then(response => {\n const isArchived = archive ? \"arkiveret\" : \"genåbnet\";\n if (response.succeeded) {\n toastManager.success(\"'\" + hold.navn + \"'\" + \" er blevet \" + isArchived + \".\");\n } else {\n toastManager.error(response.errors.toString());\n }\n });\n\n toggleArchiveHoldModal();\n setForceUpdate(updateTable());\n };\n\n useEffect(() => {\n archive ? setArchivedText(\"Arkivér hold\") : setArchivedText(\"Genåbn hold\");\n archive ? setArchived(\"arkivere\") : setArchived(\"genåbne\");\n }, [archive]);\n\n return (\n <>\n
    \n
    \n
    \n

    {archivedText}

    \n
    \n
    \n Er du sikker på at du gerne vil {archived} '{hold.navn}'?
    \n {archive && Du kan godt aktivere et hold igen.}\n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default VejlederArchiveHoldModal;\n","import {search, searchFieldAlignment, pageSize, pageSizeOptions, headerStyle, searchFieldStyle, emptyRowsWhenPaging } from \"../../common/table/shared/Options\";\nimport {csvLabel, exportCSV, exportPdf, pdfLabel} from \"../../common/table/shared/utils/exportData\";\nimport {Options} from \"@material-table/core\";\n\nconst exportMenu: any = [{\n label: pdfLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportPdf(cols, datas, \"Hold\");\n }\n},\n {\n label: csvLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportCSV(cols, datas, \"Hold\");\n }\n }];\n\nexport const options: Options = {\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n exportMenu,\n emptyRowsWhenPaging,\n};\n\n","import {Dispatch, FunctionComponent, SetStateAction, useCallback, useEffect, useState} from \"react\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport moment from \"moment\";\nimport MaterialTable from \"@material-table/core\";\nimport { tableIcons } from \"../../common/table/shared/Icons\";\nimport { Paper } from \"@material-ui/core\";\nimport { localization } from \"../../common/table/shared/Localization\";\nimport $ from \"jquery\";\nimport VejlederArchiveHoldModal from \"../VejlederArchiveHoldModal/VejlederArchiveHoldModal\";\nimport styles from \"./VejlederHoldTable.module.scss\";\nimport ToggleArchiveHoldButton from \"../../common/ToggleArchiveHoldButton\";\nimport { options } from \"./Options\";\nimport { useSessionStorage } from \"../../common/table/shared/utils/useSessionStorage\";\nimport { SessionStorage } from \"../../../shared/enums/Storage\";\n\nconst VejlederHoldTable: FunctionComponent<{\n forceUpdate: number,\n setForceUpdate: Dispatch>,\n hold: HoldDetails[]\n}> = ({ forceUpdate, setForceUpdate, hold }) => {\n const [filteredHold, setFilteredHold] = useState([]);\n const [showArchived, setShowArchived ] = useSessionStorage(SessionStorage.SHOW_ARCHIVED, false);\n const columnsDef = useCallback(() => {\n const renderArchiveButton = (rowData: HoldDetails) => {\n const buttonValue = rowData.archived ? \"Genåbn hold\" : \"Arkivér hold\";\n return (\n <>\n {\n $(`#modal-archive-hold-${rowData.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n }}>\n {buttonValue}\n \n \n \n );\n };\n\n return [\n {\n title: \"Navn\",\n field: \"navn\",\n type: \"string\" as const,\n },\n {\n title: \"Oprettet d.\",\n field: \"createdAt\",\n type: \"date\" as const,\n render: (rowData: any) =>\n rowData?.createdAt != undefined ? moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\") : \"-\",\n customFilterAndSearch: (term: string, rowData: { createdAt: Date }) => {\n const formated = moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\");\n const formatedArr = formated.split(\"-\");\n return (formatedArr[0] + \"-\" + formatedArr[1] + \"-\" + formatedArr[2]).indexOf(term) != -1;\n },\n },\n {\n title: \"Arkivér/genåbn hold\",\n field: \"internal_action\",\n type: \"string\" as const,\n render: (rowData: any) => renderArchiveButton(rowData),\n customFilterAndSearch: ( term: string, rowData: HoldDetails ) => {\n const formated = rowData.archived ? \"Genåbn hold\" : \"Arkivér hold\";\n return (formated).indexOf(term) != -1;\n },\n customSort: (a: HoldDetails, b: HoldDetails) => holdStatusSort(a, b)\n }\n ];\n }, [setForceUpdate]);\n const [columns, setColumns] = useState(columnsDef());\n\n useEffect(() => {\n if (!showArchived) {\n setFilteredHold(hold.filter((hold) => {\n return !hold?.archived;\n }));\n } else {\n setFilteredHold(hold);\n }\n setColumns(columnsDef());\n }, [forceUpdate, showArchived, columnsDef, setForceUpdate, hold]);\n\n const holdStatusSort = (a: HoldDetails, b: HoldDetails) => {\n if (a.archived == b.archived) {\n return 0;\n } else if (a.archived) {\n return 1;\n } else {\n return -1;\n }\n };\n\n return (\n <>\n
    \n Eksisterende hold\n
    \n
    \n \n
    \n
    \n
    \n
    \n ,\n }}\n localization={localization}>\n \n
    \n \n );\n};\n\nexport default VejlederHoldTable;\n","import {FunctionComponent, useEffect, useState} from \"react\";\nimport VejlederCreateHoldModal from \"../../components/vejleder/VejlederCreateHoldModal/VejlederCreateHoldModal\";\nimport VejlederHoldTable from \"../../components/vejleder/VejlederHoldTable/VejlederHoldTable\";\nimport VejlederPage from \"./VejlederPage\";\nimport {GetHoldAsVejlederApi} from \"../../apiService/HoldApi\";\nimport {HoldDetails} from \"../../shared/types/HoldDetails\";\n\nconst VejlederHold: FunctionComponent = () => {\n const [forceUpdate, setForceUpdate] = useState(0);\n const [hold, setHold] = useState([]);\n\n useEffect(() => {\n GetHoldAsVejlederApi().then((hold) => {\n const sorted = hold.sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n );\n setHold(sorted);\n });\n }, [forceUpdate]);\n\n return (\n \n

    Hold

    \n

    Opret hold til at inddele brugerkoder. Benyt hold til f.eks. at sortere i resultatvisningen over gennemførte tests. \n Det er muligt at arkivere hold, der ikke længere er i brug

    \n \n \n
    \n );\n};\n\nexport default VejlederHold;\n","import * as React from 'react';\nimport { Route, Redirect, RouteComponentProps } from 'react-router-dom';\nimport type { RouteProps } from 'react-router-dom';\nimport { useKeycloak } from '@react-keycloak/web';\nimport {authorizationService} from \"../../services/auth/authorization.service\";\n\ninterface PrivateRouteParams extends RouteProps {\n component:\n | React.ComponentType>\n | React.ComponentType\n}\n\nexport const PrivateRoute = ({\n component: Component,\n ...rest\n}: PrivateRouteParams): JSX.Element => {\n const { initialized } = useKeycloak();\n\n if (!initialized) {\n return
    Loading...
    ;\n }\n\n return (\n {\n return authorizationService.isUserAuthorized() ?\n :\n ;\n }}\n />\n );\n};\n","import { FC } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { authorizationService } from \"../../services/auth/authorization.service\";\nimport { useKeycloak } from '@react-keycloak/web';\n\nconst Login: FC = () => {\n const { keycloak } = useKeycloak();\n\n const login = () => {\n const options = {\n redirectUri: window.location.origin + \"/auth\"\n };\n keycloak?.login(options)\n .catch((error) => {\n console.log(\"Error in keycloak login: \", error);\n });\n };\n\n\n if (authorizationService.isUserAuthorized() && keycloak.authenticated) {\n return ;\n } else {\n login();\n }\n\n return <>;\n};\n\nexport default Login;\n","import {AxiosResponse} from \"axios\";\nimport BaseApi from \"./BaseApi\";\nimport { ResponseType } from \"../shared/types/ResponseType\";\n\n\nexport const CreateSupportsagApi = async (begrundelse: string, authenticatedUserBrugernavn: string): Promise> => {\n try {\n const response = await BaseApi.post>(\"Supportsag\", { begrundelse, authenticatedUserBrugernavn });\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n","import { Dispatch, SetStateAction } from \"react\";\nimport { GetAuthenticatedUserBySupportsagIdApi } from \"../../../apiService/AuthenticatedUserApi\";\nimport { GetHoldBySupportsagIdApi } from \"../../../apiService/HoldApi\";\nimport { GetTesttagningerBySupportsagIdApi } from \"../../../apiService/TesttagningApi\";\nimport { AuthenticatedUserDetails } from \"../../../shared/types/AuthenticatedUserDetails\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport { formattedResult, TesttagningDetails } from \"../../../shared/types/TesttagningDetails\";\nimport { toastManager } from \"../../common/Toast/ToastManager/ToastManager\";\n\nconst SupporterRequestUserData:any = (\n supportsagId: string,\n setTesttagningerResult: Dispatch>,\n setTesttagningerBrugerkoder: Dispatch>,\n setHold: Dispatch>,\n setVejleder: Dispatch>\n) => {\n GetTesttagningerBySupportsagIdApi(supportsagId).then((testtagningResponse) => {\n const testtagninger = testtagningResponse.data.data as TesttagningDetails[];\n\n for (const item of testtagninger) {\n if (item.elev.fornavn != null) {\n item.elev.fullName = item.elev.fornavn + \" \" + item.elev.efternavn;\n } else {\n item.elev.fullName = \"-\";\n }\n }\n\n for (const item of testtagninger) {\n item.formattedResult = formattedResult(item);\n }\n\n const sortedTesttagninger = testtagninger.sort(\n (a, b) => new Date(b.sluttidspunkt).getTime() - new Date(a.sluttidspunkt).getTime()\n );\n\n const testtagningerResult = sortedTesttagninger.filter((testtagning) => testtagning.starttidspunkt !== null);\n const testtagningerBrugerkoder = sortedTesttagninger.filter((testtagning) => testtagning.starttidspunkt === null);\n\n setTesttagningerResult(testtagningerResult);\n setTesttagningerBrugerkoder(testtagningerBrugerkoder);\n });\n GetHoldBySupportsagIdApi(supportsagId).then((holdResponse) => {\n const hold = holdResponse.data.data as HoldDetails[];\n const sortedHold = hold.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n setHold(sortedHold);\n });\n GetAuthenticatedUserBySupportsagIdApi(supportsagId).then((authenticatedUser) => {\n const vejleder = authenticatedUser.data as AuthenticatedUserDetails;\n setVejleder(vejleder);\n if (vejleder) {\n toastManager.success(\"Modtaget data for '\" + vejleder.brugernavn + \"'.\");\n } else {\n toastManager.success(\"Kan ikke finde vejlederen på nuværende tidspunkt.\");\n }\n });\n};\n\nexport default SupporterRequestUserData;","import { Dispatch, FunctionComponent, SetStateAction, useState } from \"react\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../common/ModalBackdrop\";\nimport { CreateSupportsagApi } from \"../../../apiService/SupportsagApi\";\nimport { TesttagningDetails } from \"../../../shared/types/TesttagningDetails\";\nimport styles from \"./SupporterRequestUserDataModal.module.scss\";\nimport {toastManager} from \"../../common/Toast/ToastManager/ToastManager\";\nimport SupporterRequestUserData from \"./SupporterRequestUserData\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport { AuthenticatedUserDetails } from \"../../../shared/types/AuthenticatedUserDetails\";\nimport { SessionStorage } from \"../../../shared/enums/Storage\";\n\nconst SupporterRequestUserDataModal: FunctionComponent<{\n vejlederBrugernavn: string;\n setTesttagningerResultat: Dispatch>;\n setTesttagningerBrugerkoder: Dispatch>;\n setHold: Dispatch>;\n setVejleder:Dispatch>;\n}> = ({ vejlederBrugernavn, setTesttagningerResultat, setTesttagningerBrugerkoder, setHold, setVejleder }) => {\n const [begrundelse, setBegrundelse] = useState(\"\");\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n CreateSupportsagApi(begrundelse, vejlederBrugernavn).then((supportsagResponse) => {\n if (supportsagResponse.succeeded && supportsagResponse.data) {\n window.sessionStorage.setItem(SessionStorage.SUPPORTSAG, supportsagResponse.data);\n SupporterRequestUserData(supportsagResponse.data, setTesttagningerResultat, setTesttagningerBrugerkoder, setHold, setVejleder);\n } else {\n toastManager.error(supportsagResponse.errors.toString());\n }\n\n toggleAccessUserData();\n });\n };\n\n const toggleAccessUserData = () => {\n setBegrundelse(\"\");\n $(\"#modal-access-data\").toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Adgang til brugerdata

    \n
    \n
    \n Angiv informationer om supportsagen eller anden begrundelse for adgangen.\n
    \n \n \n \n \n \n \n \n
    Begrundelse:\n {\n setBegrundelse(e.target.value);\n }}>\n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n Fremsøg vejleder\n \n \n \n );\n};\n\nexport default SupporterRequestUserDataModal;\n","import { Dispatch, FunctionComponent, SetStateAction, useEffect, useState } from \"react\";\nimport SupporterRequestUserDataModal from \"../../../components/supporter/SupporterRequestUserDataModal/SupporterRequestUserDataModal\";\nimport { TesttagningDetails } from \"../../../shared/types/TesttagningDetails\";\nimport TestResultTable from \"../../../components/common/table/Table/TestResultTable\";\nimport VejlederPage from \"../../vejleder/VejlederPage\";\nimport VejlederBrugerkoderTable from \"../../../components/vejleder/VejlederBrugerkoderTable/VejlederBrugerkoderTable\";\nimport { HoldDetails } from \"../../../shared/types/HoldDetails\";\nimport VejlederHoldTable from \"../../../components/vejleder/VejlederHoldTable/VejlederHoldTable\";\nimport { AuthenticatedUserDetails } from \"../../../shared/types/AuthenticatedUserDetails\";\nimport { SessionStorage } from \"../../../shared/enums/Storage\";\nimport SupporterRequestUserData from \"../../../components/supporter/SupporterRequestUserDataModal/SupporterRequestUserData\";\n\nconst SupporterSearchVejleder: FunctionComponent = () => {\n const [vejlederBrugernavn, setVejlederBrugernavn] = useState(\"\");\n const [testtagningerResultat, setTesttagningerResultat] = useState([]);\n const [resultaterIsShown, setResultaterIsShown] = useState(true);\n const [testtagningerBrugerkoder, setTesttagningerBrugerkoder] = useState([]);\n const [brugerkoderIsShown, setBrugerkoderIsShown] = useState(false);\n const [hold, setHold] = useState([]);\n const [holdIsShown, setHoldIsShown] = useState(false);\n const [forceUpdate, setForceUpdate] = useState(0);\n const [vejleder, setVejleder] = useState();\n const [supportsag, setSupportsag] = useState();\n\n useEffect(() => {\n const supportsagInSession = window.sessionStorage.getItem(SessionStorage.SUPPORTSAG);\n if (supportsagInSession)\n {\n setSupportsag(supportsagInSession);\n }\n }, []);\n\n useEffect(() => {\n if (supportsag) {\n SupporterRequestUserData(supportsag, setTesttagningerResultat, setTesttagningerBrugerkoder, setHold, setVejleder);\n }\n }, [supportsag]);\n\n return (\n \n

    Fremsøg testresultater

    \n \n {\n setVejlederBrugernavn(e.target.value);\n }}>\n \n
    \n \n
    \n {vejleder &&\n \n }\n \n {testtagningerResultat.length > 0 && resultaterIsShown &&\n <>\n Herunder finder du oplysninger på alle de brugerkoder, som dine testtagere har benyttet.{
    } Hvis testen er afsluttet, kan resultatoversigten ses ved at klikke på navnet.\n }\n setForceUpdate={setForceUpdate}\n mutable={false}\n />\n \n }\n {testtagningerBrugerkoder.length > 0 && brugerkoderIsShown &&\n <>\n \n \n }\n {hold.length > 0 && holdIsShown &&\n <>\n \n \n }\n
    \n );\n};\n\nexport default SupporterSearchVejleder;\n\nconst SupportsagButtons: FunctionComponent<{\n resultaterIsShown: boolean;\n setResultaterIsShown: Dispatch>;\n brugerkoderIsShown: boolean;\n setBrugerkoderIsShown: Dispatch>;\n holdIsShown: boolean;\n setHoldIsShown: Dispatch>;\n}> = ({ resultaterIsShown, setResultaterIsShown, brugerkoderIsShown, setBrugerkoderIsShown, holdIsShown, setHoldIsShown }) => {\n return (\n <>\n
    \n {\n setResultaterIsShown(true);\n setBrugerkoderIsShown(false);\n setHoldIsShown(false);\n }}\n disabled={resultaterIsShown}>\n Resultater\n \n {\n setResultaterIsShown(false);\n setBrugerkoderIsShown(true);\n setHoldIsShown(false);\n }}\n disabled={brugerkoderIsShown}>\n Brugerkoder\n \n {\n setResultaterIsShown(false);\n setBrugerkoderIsShown(false);\n setHoldIsShown(true);\n }}\n disabled={holdIsShown}>\n Hold\n \n
    \n \n );\n};\n\nconst VejlederInfo: FunctionComponent<{ vejleder: AuthenticatedUserDetails }> = ({ vejleder }) => {\n return (\n <>\n
    \n

    Vejleder

    \n {`${vejleder.fornavn} ${vejleder.efternavn}`}\n
    \n \n );\n};","import { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\n\nconst VejlederDashboard: FunctionComponent = () => {\n return ;\n};\n\nexport default VejlederDashboard;\n","import { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\n\nconst SupporterDashboard: FunctionComponent = () => {\n return ;\n};\n\nexport default SupporterDashboard;\n","import {AxiosResponse} from \"axios\";\nimport BaseApi from \"./BaseApi\";\nimport {ResponseType} from \"../shared/types/ResponseType\";\nimport {RuleDetails} from \"../shared/types/RuleDetails\";\n\nexport const GetRulesByType = async (valueType: string): Promise => {\n return BaseApi.get>(\"Rule/GetByType?valueType=\" + valueType).then((response) => {\n const rules = response.data.data as RuleDetails[];\n return rules.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n });\n};\n\nexport const DeleteRule = async (ruleId: string): Promise> => {\n try {\n const response = await BaseApi.delete>(\"Rule?ruleId=\" + ruleId);\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n\nexport const CreateRule = async (value: string, valueType: string, role: string, opgavesaetId?: string): Promise> => {\n try {\n const response = await BaseApi.post>(\"Rule\", { value, valueType, role, opgavesaetId });\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n\nexport const CreateRules = async (values: string[], valueType: string, role: string, opgavesaetId?: string): Promise> => {\n try {\n const response = await BaseApi.post>(\"Rule/createRules\", { values, valueType, role, opgavesaetId });\n return {\n data: response.data.data,\n succeeded: true,\n Message: response.data.message,\n errors: [],\n };\n } catch (error: any) {\n return {\n data: undefined,\n succeeded: false,\n Message: \"\",\n errors: [error.response.data.Message],\n };\n }\n};\n","import {search, searchFieldAlignment, pageSize, pageSizeOptions, headerStyle, searchFieldStyle, emptyRowsWhenPaging } from \"../../common/table/shared/Options\";\nimport {csvLabel, exportCSV, exportPdf, pdfLabel} from \"../../common/table/shared/utils/exportData\";\nimport {Options} from \"@material-table/core\";\n\nconst exportMenu: any = [{\n label: pdfLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportPdf(cols, datas, \"P-numre\");\n }\n },\n {\n label: csvLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportCSV(cols, datas, \"P-numre\");\n }\n }];\n\nexport const options: Options = {\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n exportMenu,\n emptyRowsWhenPaging,\n};\n\n","import { RuleTypes } from \"../../../shared/enums/RuleTypes\";\n\nconst RuleString = (ruleType: RuleTypes) : string | undefined => {\n switch (ruleType) {\n case RuleTypes.CVR: {\n return \"CVR-nummer\";\n }\n case RuleTypes.P_NUMMER: {\n return \"P-nummer\";\n }\n case RuleTypes.RID: {\n return \"RID\";\n }\n }\n};\n\nexport default RuleString;","import {Dispatch, FunctionComponent, SetStateAction} from \"react\";\nimport $ from 'jquery';\nimport styles from \"./SupporterRemoveRuleModal.module.scss\";\nimport {RuleDetails} from \"../../../shared/types/RuleDetails\";\nimport {DeleteRule} from \"../../../apiService/RuleApi\";\nimport {toastManager} from \"../../common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../shared/utils/updateTable\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport RuleString from \"../../shared/utils/RuleString\";\n\nconst SupporterRemoveRuleModal: FunctionComponent<{\n rule: RuleDetails;\n setForceUpdate: Dispatch>;\n ruleType: RuleTypes\n}> = ({rule, setForceUpdate, ruleType }) => {\n\n const toggleRemoveRuleModal = () => {\n $(`#modal-remove-${ruleType}-${rule.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n DeleteRule(rule.id).then((response) => {\n if (response.succeeded) {\n toastManager.success(\"'\" + rule.value + \"'\" + \" er blevet fjernet\");\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n toggleRemoveRuleModal();\n });\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Fjern {RuleString(ruleType)}

    \n
    \n
    \n Er du sikker på at du gerne vil fjerne '{rule.value}'?
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default SupporterRemoveRuleModal;\n","import {Dispatch, FunctionComponent, SetStateAction, useCallback, useEffect, useState} from \"react\";\nimport moment from \"moment\";\nimport { Paper } from \"@material-ui/core\";\nimport { localization } from \"../../common/table/shared/Localization\";\nimport { tableIcons } from \"../../common/table/shared/Icons\";\nimport MaterialTable from \"@material-table/core\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../common/ModalBackdrop\";\nimport styles from \"./SupporterRuleTable.module.scss\";\nimport {options} from \"./Options\";\nimport {RuleDetails} from \"../../../shared/types/RuleDetails\";\nimport SupporterRemoveValueModal from \"../SupporterRemoveRuleModal/SupporterRemoveRuleModal\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport RuleString from \"../../shared/utils/RuleString\";\n\nconst SupportRuleTable: FunctionComponent<{\n rules: RuleDetails[];\n ruleType: RuleTypes;\n setForceUpdate: Dispatch>;\n}> = ({ rules, setForceUpdate, ruleType }) => {\n\n\n const columnsDef = useCallback(() => {\n const removeRID = (rowData: RuleDetails) => {\n return (\n <>\n {\n $(`#modal-remove-${ruleType}-${rowData.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n }}>\n Fjern\n \n \n \n );\n };\n\n return [\n {\n title: RuleString(ruleType),\n field: \"value\",\n type: \"string\" as const,\n cellStyle: {\n width: '10%',\n maxWidth: '10%'\n },\n headerStyle: {\n width:'10%',\n maxWidth: '10%'\n },\n },\n {\n title: \"Tilføjet af\",\n field: \"createdBy\",\n type: \"string\" as const,\n render: (rowData: RuleDetails) => rowData?.createdBy != undefined ? rowData.createdBy : \"-\",\n },\n {\n title: \"Oprettet d.\",\n field: \"createdAt\",\n type: \"date\" as const,\n render: (rowData: any) =>\n rowData?.createdAt != undefined\n ? moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\")\n : \"-\",\n customFilterAndSearch: (term: string, rowData: { createdAt: Date }) => {\n const formated = moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\");\n const formatedArr = formated.split(\"-\");\n return (formatedArr[0] + \"-\" + formatedArr[1] + \"-\" + formatedArr[2]).indexOf(term) != -1;\n },\n cellStyle: {\n width: '10%',\n maxWidth: '10%'\n },\n headerStyle: {\n width:'10%',\n maxWidth: '10%'\n },\n },\n {\n title: \"Test\",\n field: \"opgavesaetName\",\n type: \"string\" as const,\n },\n {\n title: \"Fjern\",\n field: \"internal_action\",\n type: \"string\" as const,\n sorting: false,\n render: (rowData: any) => removeRID(rowData),\n customFilterAndSearch: (term: string ) => {\n return \"Fjern\".indexOf(term) != -1;\n },\n cellStyle: {\n width: '10%',\n maxWidth: '10%'\n },\n headerStyle: {\n width:'10%',\n maxWidth: '10%'\n },\n },\n ];\n }, [setForceUpdate, ruleType]);\n const [columns, setColumns] = useState(columnsDef());\n\n useEffect(() => {\n setColumns(columnsDef());\n }, [rules, columnsDef]);\n\n return (\n
    \n ,\n }}\n localization={localization}>\n \n \n
    \n );\n};\n\nexport default SupportRuleTable;\n","import { ChangeEvent, FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederPage from \"../../vejleder/VejlederPage\";\nimport styles from \"./SupporterPNummer.module.scss\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport { Roles } from \"../../../shared/enums/Roles\";\nimport { CreateRules, GetRulesByType } from \"../../../apiService/RuleApi\";\nimport { RuleDetails } from \"../../../shared/types/RuleDetails\";\nimport { toastManager } from \"../../../components/common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../../components/shared/utils/updateTable\";\nimport { Opgavesaet } from \"../../../shared/types/Opgavesaet\";\nimport { getAllVisibleOpgavesaetApi } from \"../../../apiService/OpgavesaetApi\";\nimport SupportRuleTable from \"../../../components/supporter/SupporterRuleTable/SupporterRuleTable\";\n\nconst SupporterPNummer: FunctionComponent = () => {\n const [pNummers, setPNummers] = useState(\"\");\n const [rules, setRules] = useState([]);\n const [forceUpdate, setForceUpdate] = useState(0);\n const [opgavesaet, setOpgavesaet] = useState([]);\n const [selectedOpgavesetId, setSelectedOpgavesaetId] = useState(\"\");\n\n const addPNummer = () => {\n CreateRules(pNummers.replaceAll(\" \", \"\").split(\",\"), RuleTypes.P_NUMMER, Roles.VEJLEDER, selectedOpgavesetId).then((response) => {\n if (response.succeeded) {\n toastManager.info(response.Message);\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n });\n\n };\n\n useEffect(() => {\n GetRulesByType(RuleTypes.P_NUMMER).then((rules) => {\n setRules(rules);\n });\n getAllVisibleOpgavesaetApi().then((response) => {\n setOpgavesaet(response);\n });\n }, [forceUpdate]);\n\n const opgavesaetOptions =\n opgavesaet.length > 0 &&\n opgavesaet.map((item) => {\n return (\n \n );\n });\n\n const handleSelectedChangeOpgavesaet = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n if (id != undefined) {\n setSelectedOpgavesaetId(id!);\n }\n };\n\n const isValidPNummer = () => {\n const tmp0 = pNummers.replaceAll(\" \", \"\");\n const regex = new RegExp(\"^\\\\d{10}(,\\\\d{10})*$\");\n return !regex.test(tmp0);\n };\n\n return (\n \n

    Adgangsstyring

    \n Indtast P-nummer og dernæst hvilken test, vejledere på denne adresse skal kunne generere brugerkoder til.
    \n Tilføj flere P-numre ved at separere med et komma.
    \n \n F.eks. 1234567890, 9876543210, 2345678121 \n {\n setPNummers(e.target.value);\n }}>\n \n \n\n \n handleSelectedChangeOpgavesaet(e)}\n className={`item form-select`}\n style={{ width: \"auto\" }}\n defaultValue={\"\"}>\n
    \n );\n};\n\nexport default SupporterPNummer;\n","import { FunctionComponent } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\n\nconst NoAccess: FunctionComponent = () => {\n return (\n \n
    \n
    \n
    \n

    Ingen adgang\n

    \n

    Du har ikke adgang til denne side.
    Kontakt supporten nederst på siden, hvis du mener, at dette er en fejl.\n

    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default NoAccess;\n","import { FunctionComponent } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Page from \"../../../components/common/Page/Page\";\nimport styles from \"./NotFound.module.scss\";\n\n\nconst NotFound: FunctionComponent = () => {\n const history = useHistory();\n\n return (\n \n
    \n
    \n
    \n

    Siden findes ikke

    \n

    Du har har forsøgt at tilgå en side, der ikke findes.
    \n history.push(\"/\")} className={styles.link} >\n Tryk her for at gå tilbage til forsiden.\n \n

    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default NotFound;\n","import {search, searchFieldAlignment, pageSize, pageSizeOptions, headerStyle, searchFieldStyle, emptyRowsWhenPaging } from \"../../common/table/shared/Options\";\nimport {csvLabel, exportCSV, exportPdf, pdfLabel} from \"../../common/table/shared/utils/exportData\";\nimport {Options} from \"@material-table/core\";\n\nconst exportMenu: any = [{\n label: pdfLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportPdf(cols, datas, \"Supportere\");\n }\n},\n {\n label: csvLabel,\n exportFunc: (cols: any[], datas: any[]): void => {\n exportCSV(cols, datas, \"Supportere\");\n }\n }];\n\nexport const options: Options = {\n search,\n searchFieldAlignment,\n pageSize,\n pageSizeOptions,\n headerStyle,\n searchFieldStyle,\n exportMenu,\n emptyRowsWhenPaging,\n};","import {Dispatch, FunctionComponent, SetStateAction} from \"react\";\nimport $ from 'jquery';\nimport styles from \"./SupporterRemoveSupporterModal.module.scss\";\nimport {RuleDetails} from \"../../../shared/types/RuleDetails\";\nimport {DeleteRule} from \"../../../apiService/RuleApi\";\nimport {toastManager} from \"../../common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../shared/utils/updateTable\";\n\nconst SupporterRemoveSupporterModal: FunctionComponent<{\n rule: RuleDetails;\n setForceUpdate: Dispatch>;\n}> = ({rule, setForceUpdate }) => {\n\n const toggleRemoveSupporterModal = () => {\n $(`#modal-remove-supporter-${rule.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n };\n\n const handleSubmit = async (event: { preventDefault: () => void }) => {\n event.preventDefault();\n DeleteRule(rule.id).then((response) => {\n if (response.succeeded) {\n toastManager.success(\"'\" + rule.brugernavn + \"'\" + \" er blevet fjernet\");\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n toggleRemoveSupporterModal();\n });\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Fjern Supporter

    \n \n
    \n
    \n Er du sikker på at du gerne vil fjerne '{rule.name}'?
    \n
    \n
    \n \n \n
    \n
    \n \n Annullér\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default SupporterRemoveSupporterModal;\n","import {Dispatch, FunctionComponent, SetStateAction, useCallback, useEffect, useState} from \"react\";\nimport moment from \"moment\";\nimport { Paper } from \"@material-ui/core\";\nimport { localization } from \"../../common/table/shared/Localization\";\nimport { tableIcons } from \"../../common/table/shared/Icons\";\nimport MaterialTable from \"@material-table/core\";\nimport $ from \"jquery\";\nimport { ModalBackdrop } from \"../../common/ModalBackdrop\";\nimport styles from \"./SupporterSupportersTable.module.scss\";\nimport {options} from \"./Options\";\nimport {RuleDetails} from \"../../../shared/types/RuleDetails\";\nimport SupporterRemoveSupporterModal from \"../SupporterRemoveSupporterModal/SupporterRemoveSupporterModal\";\n\nconst SupportSupportersTable: FunctionComponent<{\n rules: RuleDetails[];\n setForceUpdate: Dispatch>;\n}> = ({ rules, setForceUpdate }) => {\n const columnsDef = useCallback(() => {\n const removeSupporter = (rowData: RuleDetails) => {\n return (\n <>\n {\n $(`#modal-remove-supporter-${rowData.id}`).toggle();\n $(\"#modal-backdrop\").toggle();\n }}>\n Fjern\n \n \n \n );\n };\n\n return [\n {\n title: \"Brugernavn\",\n field: \"brugernavn\",\n type: \"string\" as const,\n },\n {\n title: \"Navn\",\n field: \"name\",\n type: \"string\" as const,\n },\n {\n title: \"Tilføjet af\",\n field: \"createdBy\",\n type: \"string\" as const,\n render: (rowData: RuleDetails) => rowData?.createdBy != undefined ? rowData.createdBy : \"-\",\n },\n {\n title: \"Oprettet d.\",\n field: \"createdAt\",\n type: \"date\" as const,\n render: (rowData: any) =>\n rowData?.createdAt != undefined\n ? moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\")\n : \"-\",\n customFilterAndSearch: (term: string, rowData: { createdAt: Date }) => {\n const formated = moment(new Date(rowData.createdAt)).format(\"DD-MM-YYYY\");\n const formatedArr = formated.split(\"-\");\n return (formatedArr[0] + \"-\" + formatedArr[1] + \"-\" + formatedArr[2]).indexOf(term) != -1;\n },\n },\n {\n title: \"Fjern\",\n field: \"internal_action\",\n type: \"string\" as const,\n sorting: false,\n render: (rowData: any) => removeSupporter(rowData),\n customFilterAndSearch: (term: string ) => {\n return \"Fjern\".indexOf(term) != -1;\n }\n }\n ];\n }, [setForceUpdate]);\n const [columns, setColumns] = useState(columnsDef());\n\n useEffect(() => {\n setColumns(columnsDef());\n }, [rules, columnsDef]);\n\n return (\n
    \n ,\n }}\n localization={localization}>\n \n \n
    \n );\n};\n\nexport default SupportSupportersTable;\n","import { FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederPage from \"../../vejleder/VejlederPage\";\nimport styles from \"./SupporterManageSupporters.module.scss\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport { Roles } from \"../../../shared/enums/Roles\";\nimport {CreateRule, GetRulesByType} from \"../../../apiService/RuleApi\";\nimport { RuleDetails } from \"../../../shared/types/RuleDetails\";\nimport {toastManager} from \"../../../components/common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../../components/shared/utils/updateTable\";\nimport SupportSupportersTable from \"../../../components/supporter/SupporterSupportersTable/SupporterSupportersTable\";\nimport { GetAuthenticatedUserByBrugernavnApi } from \"../../../apiService/AuthenticatedUserApi\";\n\nconst SupporterManageSupporters: FunctionComponent = () => {\n const [vejlederBrugernavn, setVejlederBrugernavn] = useState(\"\");\n const [rules, setRules] = useState([]);\n const [forceUpdate, setForceUpdate] = useState(0);\n\n const addSupporter = () => {\n GetAuthenticatedUserByBrugernavnApi(vejlederBrugernavn).then((response) => {\n if (response.data != undefined && response.succeeded) {\n CreateRule(response.data.preferredUsername, RuleTypes.PREFERRED_USERNAME, Roles.SUPPORTER).then((response) => {\n if (response.succeeded) {\n toastManager.success(\"'\" + vejlederBrugernavn + \"'\" + \" er blevet tilføjet\");\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n });\n } else {\n toastManager.error(`Der eksisterer ikke en vejleder med dette brugernavn.`);\n }\n });\n };\n\n useEffect(() => {\n GetRulesByType(RuleTypes.PREFERRED_USERNAME).then((rules) => {\n setRules(rules);\n });\n }, [forceUpdate]);\n\n return (\n \n

    Tilføj/fjern supporter

    \n \n {\n setVejlederBrugernavn(e.target.value);\n }}>\n \n \n Tilføj\n \n

    Adgange til testafvikleren

    \n \n
    \n );\n};\n\nexport default SupporterManageSupporters;\n","import { ChangeEvent, FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederPage from \"../../vejleder/VejlederPage\";\nimport styles from \"./SupporterCVR.module.scss\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport { Roles } from \"../../../shared/enums/Roles\";\nimport { CreateRules, GetRulesByType } from \"../../../apiService/RuleApi\";\nimport { RuleDetails } from \"../../../shared/types/RuleDetails\";\nimport { toastManager } from \"../../../components/common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../../components/shared/utils/updateTable\";\nimport { Opgavesaet } from \"../../../shared/types/Opgavesaet\";\nimport { getAllVisibleOpgavesaetApi } from \"../../../apiService/OpgavesaetApi\";\nimport SupportRuleTable from \"../../../components/supporter/SupporterRuleTable/SupporterRuleTable\";\n\nconst SupporterCVR: FunctionComponent = () => {\n const [CVRs, setCVRs] = useState(\"\");\n const [rules, setRules] = useState([]);\n const [forceUpdate, setForceUpdate] = useState(0);\n const [opgavesaet, setOpgavesaet] = useState([]);\n const [selectedOpgavesetId, setSelectedOpgavesaetId] = useState(\"\");\n\n const addCVR = () => {\n CreateRules(CVRs.replaceAll(\" \", \"\").split(\",\"), RuleTypes.CVR, Roles.VEJLEDER, selectedOpgavesetId).then((response) => {\n if (response.succeeded) {\n toastManager.info(response.Message);\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n });\n\n };\n\n useEffect(() => {\n GetRulesByType(RuleTypes.CVR).then((rules) => {\n setRules(rules);\n });\n getAllVisibleOpgavesaetApi().then((response) => {\n setOpgavesaet(response);\n });\n }, [forceUpdate]);\n\n const opgavesaetOptions =\n opgavesaet.length > 0 &&\n opgavesaet.map((item) => {\n return (\n \n );\n });\n\n const handleSelectedChangeOpgavesaet = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n if (id != undefined) {\n setSelectedOpgavesaetId(id!);\n }\n };\n\n const isValidCVR = () => {\n const regex = new RegExp(\"^\\\\d{8}(,\\\\d{8})*$\");\n return !regex.test(CVRs.replaceAll(\" \", \"\"));\n };\n\n return (\n \n

    Adgangsstyring

    \n Indtast CVR-numre og hvilken test, vejledere med pågældende CVR-numre skal kunne generere brugerkoder til.
    \n Tilføj flere CVR-numre ved at separere med et komma.\n
    \n \n F.eks. 12345678, 76543210, 23458121 \n {\n setCVRs(e.target.value);\n }}>\n \n \n\n \n handleSelectedChangeOpgavesaet(e)}\n className={`item form-select`}\n style={{ width: \"auto\" }}\n id=\"test\"\n defaultValue={\"\"}>\n
    \n );\n};\n\nexport default SupporterCVR;\n","import { ChangeEvent, FunctionComponent, useEffect, useState } from \"react\";\nimport VejlederPage from \"../../vejleder/VejlederPage\";\nimport styles from \"./SupporterRID.module.scss\";\nimport { RuleTypes } from \"../../../shared/enums/RuleTypes\";\nimport { Roles } from \"../../../shared/enums/Roles\";\nimport { CreateRules, GetRulesByType } from \"../../../apiService/RuleApi\";\nimport { RuleDetails } from \"../../../shared/types/RuleDetails\";\nimport { toastManager } from \"../../../components/common/Toast/ToastManager/ToastManager\";\nimport updateTable from \"../../../components/shared/utils/updateTable\";\nimport { Opgavesaet } from \"../../../shared/types/Opgavesaet\";\nimport { getAllVisibleOpgavesaetApi } from \"../../../apiService/OpgavesaetApi\";\nimport SupportRuleTable from \"../../../components/supporter/SupporterRuleTable/SupporterRuleTable\";\n\nconst SupporterRID: FunctionComponent = () => {\n const [RIDs, setRIDs] = useState(\"\");\n const [rules, setRules] = useState([]);\n const [forceUpdate, setForceUpdate] = useState(0);\n const [opgavesaet, setOpgavesaet] = useState([]);\n const [selectedOpgavesetId, setSelectedOpgavesaetId] = useState(\"\");\n\n const addRID = () => {\n CreateRules(RIDs.replaceAll(\" \", \"\").split(\",\"), RuleTypes.RID, Roles.VEJLEDER, selectedOpgavesetId).then((response) => {\n if (response.succeeded) {\n toastManager.info(response.Message);\n setForceUpdate(updateTable());\n } else {\n toastManager.error(response.errors.toString());\n }\n });\n\n };\n\n useEffect(() => {\n GetRulesByType(RuleTypes.RID).then((rules) => {\n setRules(rules);\n });\n getAllVisibleOpgavesaetApi().then((response) => {\n setOpgavesaet(response);\n });\n }, [forceUpdate]);\n\n const opgavesaetOptions =\n opgavesaet.length > 0 &&\n opgavesaet.map((item) => {\n return (\n \n );\n });\n\n const handleSelectedChangeOpgavesaet = (event: ChangeEvent) => {\n event.preventDefault();\n const selectedIndex = event.target.options.selectedIndex;\n const id = event.target.options[selectedIndex].getAttribute(\"id\");\n if (id != undefined) {\n setSelectedOpgavesaetId(id!);\n }\n };\n\n const isValidRID = () => {\n const regex = new RegExp(\"^\\\\d+(,\\\\d+)*$\");\n return !regex.test(RIDs.replaceAll(\" \", \"\"));\n };\n\n return (\n \n

    Adgangsstyring

    \n Indtast RID-numre og hvilken test, vejledere med pågældende RID-numre skal kunne generere brugerkoder til.
    \n Tilføj flere ${\"RID'er\"} ved at separere med et komma.\n
    \n \n F.eks. 1234567890, 9876543210, 2345678121 \n {\n setRIDs(e.target.value);\n }}>\n \n \n\n \n handleSelectedChangeOpgavesaet(e)}\n className={`item form-select`}\n style={{ width: \"auto\" }}\n defaultValue={\"\"}>\n
    \n );\n};\n\nexport default SupporterRID;\n","import { FunctionComponent } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\n\nconst Persondatapolitik: FunctionComponent = () => {\n return (\n \n
    \n
    \n

    Persondatapolitik

    \n

    Persondatapolitikken redegør for, hvordan Styrelsen for It og Læring (STIL) anvender de personoplysninger, du efterlader dig, når du besøger Testafvikleren.dk

    \n

    På Testafvikleren.dk indsamler BUVM oplysninger om brugere i overensstemmelse med reglerne i databeskyttelseslovgivningen. \n Det betyder også, at dine data ikke anvendes til automatiske afgørelser, herunder profilering, og at dine data ikke overføres til tredjelande eller tredjeparter.

    \n

    Vi indsamler følgende oplysninger, der kan være karakteriseret som almindelige personoplysninger for vejledere i testafvikleren:

    \n
      \n
    • Oplysninger fra NemLogin, herunder navn og tilknytning til institution. Disse oplysninger anvendes med henblik på at kunne give dig de rigtige rettigheder
    • \n
    \n

    Vi indsamler følgende oplysninger, der kan være karakteriseret som almindelige eller følsomme personoplysninger for testtagere i testafvikleren:

    \n
      \n
    • Navn og fødselsdato. Disse oplysninger anvendes med henblik på senere identificering af testresultatet af testtagerens tilknyttede vejleder.
    • \n
    • Testresultat. Alle testresultater opbevares i to år for senere fremsøgning. Efter to år slettes resultatet. \n Det er kun vejlederen, der har genereret brugerkoden, og STIL{\"'\"}s support, der kan se det tilknyttede testresultat. \n Testresultaterne kan desuden downloades af testvejlerens med henblik på administrativ dokumentation hos institutionen.
    • \n
    \n

    Alle oplysninger opbevares kun så længe BUVM har brug for dem ift. det beskrevne formål. \n Selvom en vejleder ikke længere har adgang, vil vejlederens informationer bliver opbevaret, da testresultaterne, som skal gemmes i to år, er tilknyttet hertil. 

    \n


    \n

    Derudover benytter systemet følgende data, som sikrer at Testafvikleren.dk yder den bedst mulige service og gøre siden til et nyttefuldt værktøj:

    \n
      \n
    • En vejleder logger ind med virksomhedssignatur, hvorfor virksomhedens CVR-nummer og P-nummer i tilknytning til din profil. \n De data hjælper med at styre dine roller og rettigheder.
    • \n
    • Dit tekniske setup af den enhed, du tilgår hjemmesiden fra, logges.
    • \n
    \n

    Dine rettigheder

    \n

    Du har i kraft af databeskyttelsesforordningen en række rettigheder i forhold til Børne- og Undervisningsministeriets behandling af de oplysninger, \n du opgiver på Testafvikleren.dk

    \n

    Du har ret til indsigt, ret til at gøre indsigelse mod behandlingen, ret til at få berigtiget, slettet eller blokeret oplysninger,\n der viser sig urigtige eller vildledende eller på lignende måde er behandlet i strid med lovgivningen.

    \n

    Du kan læse mere om dine rettigheder i Datatilsynets vejledning om de registreredes rettigheder, \n som du finder på www.datatilsynet.dk.

    \n

    Børne- og Undervisningsministeriets databeskyttelsesrådgiver

    \n

    Børne- og Undervisningsministeriet har udpeget en koncernfælles databeskyttelsesrådgiver, \n der bl.a. har til opgave at rådgive om persondatareglerne og overvåge ministeriets efterlevelse af reglerne. \n Dette omfatter Børne- og Undervisningsministeriets departement og de to styrelser Styrelsen for Undervisning og Kvalitet og Styrelsen for It og Læring. \n Børne- og Undervisningsministeriets databeskyttelsesrådgiver er organisatorisk placeret i Styrelsen for It og Læring.

    \n

    Børne- og Undervisningsministeriets databeskyttelsesrådgiver er chefkonsulent Karsten Vest Nielsen.

    \n

    Databeskyttelsesrådgiveren kan oplyse dig nærmere om reglerne for databeskyttelse. \n Databeskyttelsesrådgiveren kan også vejlede dig om dine rettigheder i forhold til behandling \n af personoplysninger i Børne- og Undervisningsministeriets to styrelser og departement.

    \n

    Databeskyttelsesrådgiveren kan kontaktes på e-mail: dpo@uvm.dk eller på tlf.: 2016 7513.

    \n

    Klager

    \n

    Du har ret til at klage over ministeriets behandling af dine oplysninger til Datatilsynet efter reglerne i databeskyttelsesforordningens artikel 77. \n Du kan kontakte Datatilsynet fra din digitale postkasse på borger.dk, \n ved almindelig e-mail til dt@datatilsynet.dk eller \n med almindelig post til Datatilsynet, Carl Jacobsens Vej 35, 2500 Valby.

    \n
    \n
    \n
    \n );\n};\n\nexport default Persondatapolitik;","import { FunctionComponent } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\n\nconst Cookiepolitik: FunctionComponent = () => {\n return (\n \n
    \n
    \n

    Cookies og indsamling af oplysninger på Testafvikleren.dk

    \n

    Generelt om cookies

    \n

    En cookie er en fil, som lægges på din enhed (computer, smartphone, tablet eller lignende). \n Den gør det muligt at genkende din enhed og samle information om, hvilke sider og funktioner, du besøger via din browser. \n En cookie kan ikke se, hvem du er, hvad du hedder, hvor du bor, eller om enheden bruges af en eller flere personer. \n Den kan heller ikke sprede virus eller skadelige programmer.

    \n

    Cookies på Testafvikleren.dk

    \n

    På Testafvikleren.dk benytter vi udelukkende tekniske cookies til at holde styr på, hvem du som bruger er, og hvilke roller og rettigheder, du som bruger har med dit login. \n Da disse cookies er forbeholdt den enkelte session, er ingen af disse oplysninger personhenførbare, og de gemmes heller ikke.

    \n
    \n
    \n
    \n );\n};\n\nexport default Cookiepolitik;","import { FunctionComponent } from \"react\";\nimport Page from \"../../components/common/Page/Page\";\n\nconst Personoplysninger: FunctionComponent = () => {\n return (\n \n
    \n
    \n

    Oplysning om brug af dine personoplysninger når du logger ind på testafvikleren

    \n

    1 Formål med behandling af dine personoplysninger

    \n

    Formålet med Testafvikleren er at understøtte vejledende læsetest og matematiktest til hhv. FGU og FVU.

    \n

    Formålet med at behandle personoplysninger i forbindelse med login er til brug for identifikation:

    \n
      \n
    • For testtagere: Dit navn og din fødselsdag stilles til rådighed for vejlederen til den test du skal tage, for at vejlederen kan identificere, at du er dig. \n Resultat benyttes til indplacering af testtager, og skal derfor kunne knyttes til den enkelte testtager.
    • \n
    • For vejledere: Formålet med at trække dine personoplysninger, når du logger ind, er at kunne verificere, at du er dig via din medarbejdersignatur. \n Det er også muligt at bekræfte at du er tilknyttet en institution, som har adgang til at udstede tests gennem Testafvikleren.
    • \n
    \n

    2 Hvem er den dataansvarlige og hvordan kontakter du den dataansvarlige?

    \n

    STIL er databehandler på vegne af den institution, hvor testen tages.\n Retsgrundlaget for behandlingen findes ude hos den enkelte institution, hvor testen tages.\n Retsgrundlaget udspringer af:

    \n

    Vejledende test til FGU
    \n Kravet om deltagelse i en obligatorisk test følger ”Bekendtgørelse af lov om forberedende grunduddannelse” (LBK nr. 606 af 24/05/2019) § 35 stk. 1, \n hvoraf det fremgår, at der foretages en vurdering af kursistens dansk- og/eller matematikfaglige niveau før uddannelsesstart. \n På baggrund af testresultatet træffes afgørelse om, om der skal henvises til FGU{\"'\"}s introducerende niveau i dansk og/eller matematik.

    \n

    Vejledende test til FVU
    \n Kravet om deltagelse i den vejledende test til FVU følger ”Bekendtgørelse om undervisning m.v. inden for forberedende voksenundervisning” (BEK nr. 439 af 15/04/2020) § 10 og 11, hvoraf det fremgår, \n at der foretages en vurdering af kursistens matematikfaglige niveau før uddannelsesstart. På baggrund af testresultatet træffes afgørelse om, hvilket fagligt niveau kursisten skal placeres på i dansk og/eller matematik.\n Kontaktoplysningerne på den dataansvarlige, finder du på hjemmesiden for den institution, som du er tilknyttet.

    \n

    3 Modtagere af dine personoplysninger

    \n

    Vi videregiver ikke dine personoplysninger til andre formål.

    \n

    4 Opbevaring af dine personoplysninger

    \n

    En vejleder har mulighed for at logge ind via Nemlogin og oprette brugerkoder, som udleveres til testtagere. \n Brugerkoden giver testtageren adgang til at foretage en test. Når en test er afsluttet, kan resultatet tilgås af vejleder i to år jf. BEK nr. 439 af 15/04/2020 § 11.

    \n

    5 Kontaktoplysninger på databeskyttelsesrådgiveren

    \n

    Hvis du har spørgsmål til vores behandling af dine oplysninger, er du altid velkommen til at kontakte vores databeskyttelsesrådgiver.\n Du kan kontakte Børne- og Undervisningsministeriets databeskyttelsesrådgiver her: \n https://viden.stil.dk/pages/viewpage.action?pageId=77791403.\n Databeskyttelsesrådgiveren kan oplyse dig nærmere om reglerne for databeskyttelse. Databeskyttelsesrådgiveren kan også vejlede dig om dine rettigheder i forhold til ministeriets behandling af personoplysninger.

    \n

    6 Dine rettigheder

    \n

    Du har efter databeskyttelsesforordningen en række rettigheder i forhold til vores behandling af oplysninger om dig.\n Hvis du vil gøre brug af dine rettigheder, skal du kontakte os.

    \n

    Ret til at se oplysninger (indsigtsret)
    \n Du har ret til at få indsigt i de oplysninger, som vi behandler om dig, samt en række yderligere oplysninger.

    \n

    Ret til berigtigelse (rettelse)
    \n Du har ret til at få urigtige oplysninger om dig selv rettet.

    \n

    Ret til indsigelse og sletning
    \n Du har i visse tilfælde ret til at gøre indsigelse mod vores ellers lovlige behandling af dine personoplysninger. Det kan ske, før billedet er blevet offentliggjort eller på et senere tidspunkt.

    \n

    Ret til at transmittere oplysninger (dataportabilitet)
    \n Du har i visse tilfælde ret til at modtage dine personoplysninger i et struktureret, almindeligt anvendt og maskinlæsbart format samt at få overført disse personoplysninger fra én dataansvarlig til en anden uden hindring

    \n

    Dine rettigheder når dine personoplysninger behandles til statistiske formål
    \n Dine rettigheder er begrænset i forhold til den statistiske behandling af dine personoplysninger. Dette betyder at du kan anmode STIL om at få udøvet en af ovenstående rettigheder i forhold til den statistiske behandling, men oftest vil denne anmodning ikke blive imødekommet.\n Du kan læse mere om dine rettigheder i Datatilsynets vejledning om de registreredes rettigheder, som du finder på hjemmesiden www.datatilsynet.dk.

    \n

    7 Klage til Datatilsynet

    \n

    Du har ret til at indgive en klage til Datatilsynet, hvis du er utilfreds med den måde, vi behandler dine personoplysninger på. Du finder Datatilsynets kontaktoplysninger på hjemmesiden www.datatilsynet.dk.

    \n
    \n
    \n
    \n );\n};\n\nexport default Personoplysninger;","import { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { OpgavesaetProvider } from \"./components/OpgavesaetContext\";\nimport Elev from \"./pages/elev/Elev\";\nimport Frontpage from \"./pages/Frontpage/Frontpage\";\nimport Opgavesaet from \"./pages/elev/Opgavesaet/Opgavesaet\";\nimport Resultater from \"./pages/elev/Resultater\";\nimport VejlederElevResultat from \"./pages/vejleder/VejlederElevResultat\";\nimport VejlederBrugerkoder from \"./pages/vejleder/VejlederBrugerkoder\";\nimport VejlederResultat from \"./pages/vejleder/VejlederResultat/VejlederResultat\";\nimport AuthRedirect from \"./pages/shared/AuthRedirect\";\nimport VejlederHold from \"./pages/vejleder/VejlederHold\";\nimport { useKeycloak } from \"@react-keycloak/web\";\nimport { PrivateRoute } from \"./components/auth/PrivateRoute\";\nimport Login from \"./components/auth/Login\";\nimport SupporterSearchVejleder from \"./pages/supporter/SupporterSearchVejleder/SupporterSearchVejleder\";\nimport VejlederDashboard from \"./pages/vejleder/VejlederDashboard\";\nimport SupporterDashboard from \"./pages/supporter/SupporterDashboard\";\nimport SupporterPNummer from \"./pages/supporter/SupporterPNummer/SupporterPNummer\";\nimport NoAccess from \"./pages/shared/NoAccess\";\nimport NotFound from \"./pages/shared/NotFound/NotFound\";\nimport SupporterManageSupporters from \"./pages/supporter/SupporterManageSupporters/SupporterManageSupporters\";\nimport SupporterCVR from \"./pages/supporter/SupporterCVR/SupporterCVR\";\nimport SupporterRID from \"./pages/supporter/SupporterRID/SupporterRID\";\nimport Persondatapolitik from \"./pages/shared/Persondatapolitik\";\nimport Cookiepolitik from \"./pages/shared/Cookiepolitik\";\nimport Personoplysninger from \"./pages/shared/Personoplysninger\";\n\nconst Routing = (): JSX.Element => {\n const { initialized } = useKeycloak();\n\n if (!initialized) {\n return
    Loading...
    ;\n }\n\n return (\n \n \n \n {/*Shared*/}\n \n \n \n \n \n \n\n \n\n {/*Vejleder*/}\n \n \n \n \n \n\n {/*Supporter*/}\n \n \n \n \n \n \n\n {/*Elev*/}\n \n \n \n\n {/*Shared*/}\n \n \n \n \n );\n};\n\nexport default Routing;\n","import Routing from \"./Routing\";\n\nconst App = () : JSX.Element => {\n return ;\n};\n\nexport default App;","import Keycloak from 'keycloak-js';\n\n\nconst keycloak = () => {\n switch (window.location.hostname) {\n case \"testafvikleren.dk\": {\n return Keycloak('/../keycloak.json');\n }\n default: {\n return Keycloak('/../keycloak.development.json');\n }\n }\n};\n\nexport default keycloak();","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport \"./assets/css/testaf.scss\";\nimport \"../node_modules/dkfds/dist/css/dkfds-virkdk.css\";\nimport { ReactKeycloakProvider } from '@react-keycloak/web';\nimport keycloak from './keycloak';\nimport { authorizationService } from \"./services/auth/authorization.service\";\nimport { GetRole } from \"./apiService/AuthenticatedUserApi\";\nimport { SessionStorage } from \"./shared/enums/Storage\";\n\nconst token = sessionStorage.getItem(SessionStorage.KC_TOKEN);\nconst refreshToken = sessionStorage.getItem(SessionStorage.KC_REFRESH_TOKEN);\n\nconst tokenhandler = () => {\n if (keycloak.token != undefined && keycloak.refreshToken) {\n authorizationService.setKeycloakTokenInSessionStorage(keycloak.token);\n authorizationService.setKeycloakRefreshTokenInSessionStorage(keycloak.refreshToken);\n GetRole().then((response) => {\n authorizationService.setRoleInSessionStorage(response.data.data);\n }).catch((error) => {\n console.log(\"Error in get role: \", error);\n authorizationService.clearSessionStorage();\n authorizationService.setRoleInSessionStorage(\"none\");\n });\n } else {\n console.log(\"Token is empty\");\n console.log(\"Keycloak: \", keycloak);\n console.log(\"Token: \" + token);\n console.log(\"RefreshToken: \" + refreshToken);\n }\n};\n\nReactDOM.render(\n \n tokenhandler()}\n initOptions={{ token, refreshToken }}>\n \n \n ,\n document.getElementById(\"root\")\n);\n\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Toast_container__3S_Li\",\"content\":\"Toast_content__P7DLt\",\"closeIcon\":\"Toast_closeIcon__2Z9Sx\",\"svg\":\"Toast_svg__1qR3A\",\"messageIcon\":\"Toast_messageIcon__1fy9N\",\"toastButton\":\"Toast_toastButton__3RS5K\",\"toastMain\":\"Toast_toastMain__2sjWM\",\"toastSuccess\":\"Toast_toastSuccess__2Feep\",\"toastError\":\"Toast_toastError__2CVyP\",\"toastInfo\":\"Toast_toastInfo__2XCIx\",\"toastWarning\":\"Toast_toastWarning__ZCS27\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"submitCancel\":\"VejlederCreateBrugerkoderModal_submitCancel__3XPXU\",\"submitButton\":\"VejlederCreateBrugerkoderModal_submitButton__2slfH\",\"radioButton\":\"VejlederCreateBrugerkoderModal_radioButton__18Lf7\",\"selectionContainer\":\"VejlederCreateBrugerkoderModal_selectionContainer__31c49\",\"radioButtonContainer\":\"VejlederCreateBrugerkoderModal_radioButtonContainer__1s24H\",\"input\":\"VejlederCreateBrugerkoderModal_input__LUWKO\",\"optionContainer\":\"VejlederCreateBrugerkoderModal_optionContainer__ZxJWA\",\"firstOptionContainer\":\"VejlederCreateBrugerkoderModal_firstOptionContainer__GXlKo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"optionContainer\":\"RegisterElev_optionContainer__GlBs8\",\"normalWeight\":\"RegisterElev_normalWeight__1oEha\",\"soundIcon\":\"RegisterElev_soundIcon__3XLnk\",\"soundButton\":\"RegisterElev_soundButton__3jNFB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkbox\":\"TestResultInfo_checkbox__2FrO2\",\"checkboxLabel\":\"TestResultInfo_checkboxLabel__1hK6Q\",\"labelText\":\"TestResultInfo_labelText__1n5-0\",\"infoDiv\":\"TestResultInfo_infoDiv__2JJbM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"brugerkodeLink\":\"TestResultTable_brugerkodeLink__3AJGY\",\"helperTextButton\":\"TestResultTable_helperTextButton__1sukb\",\"toggleArchiveButton\":\"TestResultTable_toggleArchiveButton__3fIyy\",\"helperText\":\"TestResultTable_helperText__dU7U8\",\"button\":\"TestResultTable_button__2vLsV\",\"iconQuestionMark\":\"TestResultTable_iconQuestionMark__2Wjjc\",\"buttonHelperText\":\"TestResultTable_buttonHelperText__rr-3c\",\"holdIcon\":\"TestResultTable_holdIcon__6MYdA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoText\":\"SupporterPNummer_infoText__1VsCi\",\"textLabel\":\"SupporterPNummer_textLabel__3pgIA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoText\":\"SupporterCVR_infoText__2TZHj\",\"textLabel\":\"SupporterCVR_textLabel__2mvv-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoText\":\"SupporterRID_infoText__ONz3R\",\"textLabel\":\"SupporterRID_textLabel__1Dz3d\"};"],"sourceRoot":""}