{"version":3,"sources":["images/hr-logo-plain@4x.png","utils/index.tsx","components/Export/index.tsx","components/NavigationBar/index.tsx","state/app.ts","components/AuthManager/index.tsx","api/app.ts","state/planning.ts","components/Layout/index.tsx","api/planning.ts","components/Loader/index.tsx","components/ErrorState/index.tsx","components/Dialog/index.tsx","components/InformationCard/index.tsx","components/Buttons/index.tsx","components/Planning/CellOverlays.tsx","components/Planning/Cells.tsx","components/Export/ExportPlanning.tsx","components/Planning/StudyYear.tsx","components/Planning/index.tsx","pages/Planningsoverview/index.tsx","components/TeacherTable/index.tsx","components/CreateTeacherDialog/ValidationObjects.ts","components/CreateTeacherDialog/MOT.tsx","components/CreateTeacherDialog/index.tsx","pages/Teachers/index.tsx","components/CourseTable/index.tsx","components/EmptyDetailsState/index.tsx","components/CourseDetails/ValidationObjects.ts","components/CourseDetails/index.tsx","components/CreateCourseDialog/index.tsx","pages/Courses/index.tsx","components/CurriculaTable/index.tsx","components/CurriculumDetails/ValidationObjects.ts","components/CurriculumDetails/MOT.tsx","components/CreateCurriculumDialog/ValidationObjects.ts","components/CreateCurriculumDialog/index.tsx","components/CurriculumDetails/index.tsx","pages/Curricula/index.tsx","components/TeacherNote/index.tsx","components/TeacherDetails/notes.tsx","components/TeacherDetails/personalia.tsx","components/TeacherDetails/tabs/aanstelling.tsx","components/Table/index.tsx","components/TeacherDetails/tabs/onderwijstaken.tsx","components/TeacherDetails/tabs/mot.tsx","components/TeacherDetails/tabs/tabs.tsx","components/Export/ExportTeacherPersonalia.tsx","components/Export/ExportTeacherOnderwijstaken.tsx","components/Export/ExportTeacherTaaktoedeling.tsx","components/Export/ExportTeacherMOT.tsx","components/Export/ExportTeacherSecondments.tsx","components/Export/ExportTeacher.tsx","pages/TeacherDetails/index.tsx","App.tsx","registerServiceWorker.js","index.tsx"],"names":["module","exports","checkValidationErrors","err","setState","tempArray","inner","forEach","e","push","message","path","checkArrayValidationErrors","getIndexAndPath","index","i","indexStartPath","split","char","j","n","Number","isNaN","slice","DialogError","props","error","className","type","status","statusText","hex2rgba","hex","alpha","match","map","x","parseInt","r","g","b","getBase64Logo","useFetchState","useState","loading","success","fetchState","setFetchState","Font","register","family","fonts","src","fontWeight","pageDefaultStyles","fontFamily","fontSize","paddingTop","paddingBottom","paddingHorizontal","ExportDefaultHeaderStyles","StyleSheet","create","container","borderBottomWidth","borderBottomStyle","borderBottomColor","marginBottom","display","flexDirection","alignItems","title_container","marginRight","title","subtitle","company_container","justifyContent","company","alignSelf","company_tagline","logo","width","height","marginLeft","ExportDefaultHeader","styles","fixed","style","ExportDefaultFooterStyles","position","bottom","left","right","page_number","ExportDefaultFooter","Date","now","toLocaleString","render","pageNumber","totalPages","ExportDefaultSectionStyles","name_container","name_block","backgroundColor","name","ExportDefaultSection","children","ExportInformationCardStyles","marginVertical","borderStyle","borderWidth","borderColor","borderRadius","padding","image","info","warning","ExportInformationCard","maxWidth","disableIcon","InfoRoundedIcon","Buffer","from","WarningRoundedIcon","ErrorRoundedIcon","containerWidth","contentWidth","value","unit","format","data","ExportPDFButton","pdf","filename","undefined","blob","setBlob","url","setUrl","useEffect","setTimeout","toBlob","then","URL","createObjectURL","download","href","onClick","window","navigator","msSaveBlob","downloadOnIE","textDecoration","disableElevation","variant","color","size","NavigationBar","gitInfo","id","HRLogo","alt","activeClassName","exact","to","version","commit","hash","ButtonBase","fetch","location","reload","userState","atom","key","default","institute","education","email","personnel_code","role","currentCurriculumState","kind","searchbarState","createDialogState","snackbarTextState","snackbarVisibleState","selectedCurriculumForDetailsState","selectedCourseForDetailsState","exportPlanningDialogState","year","op","expanded","AuthManager","setUser","useSetRecoilState","isAuthenticating","isLoggedIn","authFailed","typeFailed","reasonFailed","authStatus","setAuthStatus","a","json","catch","errorType","errorMessage","unknownError","loggedIn","replace","notLoggedIn","AuthManagerStatus","CircularProgress","useGetAllCurricula","useSWR","isLoading","currentCurriculumAndKindState","currentCurriculumAndKindObject","selector","get","currentCurriculumAndKindString","curriculum","planningViewState","CurrentCellOverlayOpenState","Topbar","currentCurriculum","currentCurriculumAndKind","searchbar","createDialog","CurrentCurriculum","useRecoilState","setCurrentCurriculum","setCurrentCurriculumAndKinds","selectedCurriculumForDetails","selectedCourseForDetails","length","kinds","FormControl","Select","onChange","event","find","v","target","MenuItem","Skeleton","Searchbar","setSearchbar","placeholder","CreateDialogButton","setCreateDialogState","TopbarPlanning","CurrentCurriculumAndKinds","useRecoilValue","useGetAllCurriculumsAndKinds","dataSorted","sort","findIndex","items","ListSubheader","SwitchPlanningView","view","setView","Loader","ErrorState","DialogTitle","withStyles","theme","createStyles","root","margin","spacing","closeButton","top","palette","grey","classes","onClose","other","disableTypography","Typography","IconButton","aria-label","DialogContent","MuiDialogContent","DialogActions","MuiDialogActions","Dialog","open","content","actions","innerDialogProps","disableBackdropClick","disableEscapeKeyDown","dividers","FullScreenDialog","contentPadding","innerFullScreenDialogProps","fullScreen","useStylesCard","makeStyles","InformationCard","cardClass","Card","CardContent","htmlColor","useStyles","wrapper","wrapperFullWidth","buttonFullWidth","buttonSuccessContained","green","buttonErrorContained","red","buttonSuccessOutlined","buttonErrorOutlined","buttonSuccessText","buttonErrorText","buttonProgress","primary","main","marginTop","Button","fetchStatus","disabled","fullWidth","innerProps","setSuccess","setError","timer","React","useRef","current","clearTimeout","getSuccessOrErrorClass","ClassOverlay","handleClose","_class","cellType","selectedStudyYear","selectedOP","classesPlannedInOP","getType","update","class_id","code","size_op1","size_op2","size_op3","size_op4","pos_x","pos_y","side","_classDetails","setClassDetails","_classDetailsErrors","setClassDetailsErrors","showDeleteConfirmation","setShowDeleteConfirmation","createClassStatus","setCreateClassStatus","updateClassStatus","setUpdateClassStatus","removeClassStatus","setRemoveClassStatus","snackbarText","snackbarVisible","existingClasses","setExistingClasses","dataClassDetails","dataDefaultStudentAmount","handleNumberChange","removeClass","method","st","mutate","TextField","label","handleStringChange","some","helperText","c","console","log","ClassOverlayValidiationObject","validate","abortEarly","headers","body","JSON","stringify","Divider","orientation","flexItem","Autocomplete","multiple","options","group_by","localeCompare","groupBy","option","getOptionLabel","renderInput","params","object","number","required","string","boolean","CourseOverlay","course","course_id","workmethod","team","meetings","meeting_duration","correction_time","travel_time","teachers_simultaniously_teaching","contact_student","raise_factor","courseDetails","setCourseDetails","courseDetailsErrors","setCourseDetailsErrors","createCourseStatus","setCreateCourseStatus","updateCourseStatus","setUpdateCourseStatus","removeCourseStatus","setRemoveCourseStatus","existingCourses","setExistingCourses","dataAvailableWorkmethods","errorAvailableWorkmethods","dataAvailableTeams","errorAvailableTeams","availableTeams","setAvailableTeams","dataCourseDetails","dataDefaultValues","filter","wm","arr","aco","contact_students","removeCourse","disableClearable","noOptionsText","onBlur","CourseOverlayValidiationObject","CellOverlay","cell","searchTerm","setSearchTerm","teams","setTeams","note","setNote","teachers","t","workload_override","teacherWorkloadOverrides","setTeacherWorkloadOverrides","saveCellStatus","setSaveCellStatus","dataWorkload","dataAvailableTeachers","dataLabels","dataNote","filteredTeams","filteredList","teacher","toLowerCase","includes","saveCell","saveNote","cell_id","workload","List","ListItem","available_hours","ListItemText","ListItemSecondaryAction","list","handleWorkloadOverrideChange","subheader","button","overflow","background","border","rows","multiline","popoverOrigin","anchorOrigin","vertical","horizontal","transformOrigin","HeadCellClass","first","last","anchorEl","setAnchorEl","setCellType","Boolean","currentTarget","Popover","HeadCellCourse","work_method","BodyCell","currentCellOverlayOpen","setCurrentCellOverlayOpen","ref","CreateCell","ExportPlanning","img","study_year","toLocaleDateString","toLocaleTimeString","ExportPlanningDialog","studyYearRef","studyYearCellsRef","studyYearNotesRef","notes","setOptions","exportRef","setImg","canvas","setCanvas","handleChange","checked","html2canvas","png","toDataURL","component","FormGroup","FormControlLabel","control","Checkbox","StudyYear","year_and_op","exportPlanningDialog","setExportPlanningDialog","dataCellData","isValidatingCellData","isValidating","courses","_","cells","StudyYearNotes","StudyYearActions","planningView","createMuiTheme","light","dark","contrastText","ThemeProvider","labelId","setValue","Tooltip","TableLead","forwardRef","dataNotes","_class_name","course_name","join","textAlign","Planning","setSelectedStudyYear","setSelectedOP","Planningsoverview","setCreateDialog","useHistory","listen","headCells","numeric","disablePadding","EnhancedTableHead","onSelectAllClick","numSelected","rowCount","TableHead","TableRow","TableCell","indeterminate","headCell","useToolbarStyles","paddingLeft","paddingRight","highlight","secondary","lighten","text","flex","EnhancedTableToolbar","setDeleteConfirmationDialog","Toolbar","TeacherTable","searchQuery","setSnackbarText","setSnackbarVisible","deleteTeacherStatus","setDeleteTeacherStatus","selected","setSelected","deleteConfirmationDialog","history","dataFiltered","TableContainer","Table","stickyHeader","newSelecteds","TableBody","isItemSelected","indexOf","isSelected","hover","selectedIndex","newSelected","concat","handleClick","scope","colSpan","payload","ok","deleteSelected","teacherDetailsValidationObject","typeError","first_name","last_name","isPlaceholder","bool","organisation","defined","teacherAanstellingValidationObject","months_active","min","fte_op1","fte_op2","fte_op3","fte_op4","organisational","professional","di_op1","di_op2","di_op3","di_op4","teacherAanstellingMOTValidationObject","hours","active_op1","active_op2","active_op3","active_op4","teacherAanstellingMOTArrayValidationObject","array","of","newMOTTaskValidationObject","minWidth","CreateTeacherDialogMOTTable","errors","mot_tasks","setMOTTasks","createMOTTaskDialog","setCreateMOTTaskDialog","newMOTTask","setNewMOTTask","newMOTTaskErrors","setnewMOTTaskErrors","newMOTTaskCreateErrorMessage","MOTOptions","setMOTOptions","dataMOTOptions","task","new_mot_tasks","Paper","elevation","inputProps","autoFocus","row","labelPlacement","Math","floor","random","CreateTeacherDialog","activeStep","setActiveStep","nextButtonDisabled","setNextButtonDisabled","createTeacherStatus","setCreateTeacherStatus","teacherDetails","setTeacherDetails","contract","teacherAanstelling","setTeacherAanstelling","detailsErrors","setDetailsErrors","aanstellingErrors","setAanstellingErrors","errorsMOT","setErrorsMOT","dataAvailableOrganisations","errorAvailableOrganisations","dataAvailablePositions","errorAvailablePositions","dataDefaultFTE","dataDefaultDI","dataDefaultOrganisational","dataDefaultProfessional","fte","di","handleChangeDetails","handleChangeCheckboxDetails","handleChangeNumberAanstelling","Stepper","alternativeLabel","Step","StepLabel","InputLabel","Teachers","CourseTable","setSelectedCourseForDetails","deleteCourseStatus","setDeleteCourseStatus","courseUsedInPlanningError","setCourseUsedInPlanningError","courseUsedInPlanningStudyYearsAndOPs","setCourseUsedInPlanningStudyYearAndOPs","Fragment","yao","EmptyDetailsState","getKind","courseDetailsValidationObject","ects","borderBottom","zIndex","flexGrow","deleteButton","CourseDetails","selectedCourse","setSelectedCourse","setErrors","teached_on_day","course_owner","errorCourseDetails","handleChangeNumber","CreateCourseDialog","Courses","CurriculaTable","setSelectedCurriculumForDetails","curriculumDetailsValidationObject","default_fte","default_fte_hours","default_di","default_organisational","default_professional","course_formula_w","course_formula_ct","course_formula_opslag","course_formula_n","course_formula_cor","course_formula_r","start_date","date","end_date","availability_type","curriculumDetailsMOTValidationObject","curriculumDetailsMOTArrayValidationObject","CurriculumMOTTable","setCurriculumMOTTasks","selectedCurriculum","setNewMOTTaskCreateErrorMessage","newCurriculumValidationObject","CreateCurriculumDialog","dataAllCurricula","errorAllCurricula","curriculumName","setCurriculumName","curriculumToCopyFrom","setCurriculumToCopyFrom","block_duration","block_amount","availabilityKind","setAvailabilityKind","setLeft","setRight","dataCurriculumDetails","errorCurriculumDetails","dataAvailabilityKinds","errorAvailabilityKinds","curriculumDetails","setCurriculumDetails","handleDateChange","d","chosenCurriculum","leftState","state","rightState","round","inputVariant","cancelLabel","okLabel","availability_kind","curriculum_to_copy_from_id","copy_entities","createCurriculum","not","intersection","TransferList","setChecked","leftChecked","rightChecked","handleToggle","currentIndex","newChecked","splice","customList","dense","ListItemIcon","tabIndex","disableRipple","CurriculumDetails","setSelectedCurriculum","updateCurriculumStatus","setUpdateCurriculumStatus","deleteCurriculumStatus","setDeleteCurriculumStatus","ve","DatePicker","Curricula","TeacherNote","useParams","editable","updateNoteStatus","setUpdateNoteStatus","deleteNoteStatus","setDeleteNoteStatus","dateFormatted","getHours","getMinutes","editedNote","setEditedNote","editDialog","setEditDialog","newNoteValidationObject","curriculum_name","TeacherNotes","createNoteStatus","setCreateNoteStatus","dataTeacherNotes","errorTeacherNotes","dataTeacherNotesFromPreviousCurricula","errorTeacherNotesFromPreviousCurricula","toString","TeacherPersonalia","updateTeacherStatus","setUpdateTeacherStatus","curriculum_id","is_teamleader_of_team","courseowner","personalia","setPersonalia","TabAanstelling","updateAanstellingStatus","setUpdateAanstellingStatus","tabAanstellingErrors","setTabAanstellingErrors","errorsDetachering","hours_subtracted_from_available_hours","secondments","tabAanstelling","setTabAanstelling","gap","detachering","setDetachering","deta","tabAanstellingValidationObject","DetacheringValidationObject","reason","newDetacheringValidationObject","Detachering","deleteSelectedStatus","setDeleteSelectedStatus","createDetacheringStatus","setCreateDetacheringStatus","createDetacheringDialog","setCreateDetacheringDialog","newDetachering","setNewDetachering","newDetacheringErrors","setNewDetacheringErrors","new_detachering","TaaktoedelingTable","align","total_available_hours","total_available_hours_op1","total_available_hours_op2","total_available_hours_op3","total_available_hours_op4","total","op1","op2","op3","op4","organizational_tasks","organization_tasks_other","professionalization_tasks","professionalization_tasks_other","contact_time","contact_time_with_factor","supervision","interns","graduates","oddment_total","oddment_op1","oddment_op2","oddment_op3","oddment_op4","headcells","resetNewState","setData","CreateDialog","DeleteDialog","BottomActions","createDialogOpen","setCreateDialogOpen","deleteDialogOpen","setDeleteDialogOpen","Promise","resolve","reject","new_data","headcell","new","empty","TabOnderwijstaken","interns_summary","graduates_summary","tabSupervision","setTabSupervision","onderwijstaken","setOnderwijstaken","InternSupervisionErrors","setInternSupervisionErrors","supervisionData","onderwijstakenData","setSupervision","supervisionErrors","setSupervisionErrors","supervisionKind","InternsSupervisionTable","createNewSupervisionStatus","setCreateNewSupervisionStatus","updateSupervisionStatus","setUpdateSupervisionStatus","deleteSupervisionStatus","setDeleteSupervisionStatus","start_op","end_op","newSupervision","setNewSupervision","newSupervisionErrors","setNewSupervisionErrors","plural","singular","newSupervisionValidationObject","charAt","toUpperCase","supervisionArrayValidationObject","max","supervisionValidationObject","SupervisionSummary","Onderwijstaken","o","period","course_code","curriculum_kind","student_amount","TabMOT","MOTS","setMOTS","MOTSErrors","setMOTSErrors","createMOTTaskStatus","setCreateMOTTaskStatus","updateMOTTaskStatus","setUpdateMOTTaskStatus","deleteMOTTaskStatus","setDeleteMOTTaskStatus","MOTTasksArrayValidationObject","MOTTasksValidationObject","TeacherTabs","setTabIndex","Tabs","scrollButtons","indicatorColor","textColor","Tab","TabPanel","ExportTeacherPersonaliaStyles","labels","values","ExportTeacherPersonalia","Export","surname","ExportTeacherOnderwijstakenStyles","table_header_container","vd","body_row","table_row_container","ExportTeacherOnderwijstaken","ExportTeacherTaaktoedelingStyles","values_container","label_container","value_container","divider","marginHorizontal","taaktoedeling_container","minHeight","header_row","header_cell","body_cell","title1","title2","ExportTeacherTaaktoedeling","taaktoedeling","ExportTeacherMOTStyles","row_container","row_header","ExportTeacherMOT","mot","ExportTeacherSecondmentsStyle","ExportTeacherSecondments","secondment","ExportTeacherStyles","page","ExportTeacher","author","creator","producer","ExportTeacherDialog","teacher_id","TeacherDetails","exportTeacherDialog","setExportTeacherDialog","App","snackbarVisibility","setSnackbarVisibility","Snackbar","autoHideDuration","hostname","Sentry","dsn","autoSessionTracking","integrations","Integrations","BrowserTracing","tracesSampleRate","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename","fetcher","res","revalidateOnFocus","utils","DateFnsUtils","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.0d212a33.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAACPCAYAAADDY4iTAAAACXBIWXMAACxKAAAsSgF3enRNAAAEI0lEQVR4nO2dfXLCIBBHk05vpPc/gZ4pHa06aZoP2LCwu7w30//aWOTxYxMBx2mahpLcx2vZC0JRLtNtLHW9U/Igin/OyCSSB2niIZEoSx6kiU+OREnyIE1/pEj0dfQLiNMnKf2+mTxIA8NBAq0mD+LAmz0XDqctgC2B/slD6kAqf+RBHNhizY2PPIgDRywdoeYBMU95SB1IZe4KyQNikAfEjLfhwpQF2TyePJM8IAZ5QAzygBhqHhBD8oAY5AExyANikAfEIA+IQR4QgzwgBnlADPKAGOTJ4DLdnj/wyzfvwzEIsw7y7IA0+yDPCkiTBvLMQJo8KJhfIE4+3a/nkUpzH6+qr5N7/RZ0O21pJ83Z68//3qpI3cmjKY3Wtd/XtSZRVzWPZufWqJms1WUUzCdo8cTZkkDII6RlJ1oRCHlATJiCeTkaPdzqnuHR3tZtDJE8qTEeXajauE4engq3xaU8SGMDV/IgjS1c1DyS5yk9iNa6jeblIW3sYlYerae33HGVw1zNQ9L4wYw8SJNP6xRtLo/2EomUN3jtd5D5mKY1T+sOekizJRe10TFNkseCNHCeqsnjbcclku1TRR626ZbnrNgl+kN12kKY2KglD+LoYWU6LZ48lqShZlmnVB8VTZ5oaWOxPZYGRNg1zKTOOiUHREh5oooTetNfpE6LWPCXblO45CF11tEYDKHkQZx1tFKUTX8rRJqyttpSYqAhzwJr4pzpZO22FJen1dQRccqStqnWZ4kkz4wI01VKG0oNNA60fOF9umrx/4eQx+rdyBlSTwNredYhyWMcy1OpSs3jrXjt5XOw0u2kYAYxXZ3P0zMa6cppqB2gNS2HkWdPDBbg66D29QEtO+sx0vZef2skRhRM82ZALXla3sGQMr9o9wF3W0GpMXiRB8QgT0BqlQzIMyPCk+aabVCVx2pnRC2oa7/fJE8QWgxU5AlAq4RHHue0LA2QZ4Gnojn8t95QNJdn7yzFmpA8zuCUDBDBtxs7wFonWZmmlnS5AJ6iuAxq63mWWChQPeyFeuNB8C6SR9oRR4vKNPCUiuFrnrOdUaszrdY1e4RNnpIdoZVA3j/FDyePVoe8r3tWokgbDKsVzINyAWptzXQPu1DdJ4+FTur12F7XBTNnLbfFZfIgjQ1cyYM0tnAhD9LYpOrd1pB5x4U0tjFbMCOOfcxNW0jjBzPyII0/msuDNH6pXjAPr6IZafzTRB6IAWuYQQzygBjkATHIA2KQB8QgD4hBHhCDPCAGeUAM8oAY5AExyANikAfEfF2m28jbBxJIHhCDPCDmKQ9TF0ggeUDMRx7SB3IheUDMH3lIH8iB5AEx/+QhfSCV1eRBIEhhc9pCIDhit+ZBINjjsGBGINhinKb0rer38cq+dviQJc8bJIJBKs8cROqUYRh+ADMzljjuHK1PAAAAAElFTkSuQmCC\"","import React, { useCallback, useState } from \"react\"\nimport { ValidationError } from \"yup\"\n\nexport type ExceptionResponse = {\n type: string\n message: string\n}\n\nexport type ExceptionResponseState = {\n status: number\n statusText: string\n type: string\n message: string\n}\n\nexport type Errors = {\n message: string\n path: keyof T\n}\n\nexport type ErrorsArray = {\n index: number\n message: string\n path: keyof T\n}\n\nexport function checkValidationErrors(\n err: ValidationError,\n setState: React.Dispatch[]>>\n) {\n setState([])\n let tempArray: Errors[] = []\n\n err.inner.forEach((e) => {\n tempArray.push({\n message: e.message,\n path: e.path as keyof T,\n })\n })\n\n setState(tempArray)\n}\n\nexport function checkArrayValidationErrors(\n err: ValidationError,\n setState: React.Dispatch[]>>\n) {\n setState([])\n let tempArray: ErrorsArray[] = []\n\n err.inner.forEach((e) => {\n const { index, path } = getIndexAndPath(e.path)\n tempArray.push({\n message: e.message,\n index,\n path: path as keyof T,\n })\n })\n\n setState(tempArray)\n}\n\nconst getIndexAndPath = (i: string): { index: number; path: string } => {\n let index: string = \"\"\n let indexStartPath: number = 0\n\n i.split(\"\").forEach((char, j) => {\n const n = Number(char)\n if (Number.isNaN(n)) {\n if (char === \".\") {\n return (indexStartPath = j + 1)\n }\n } else {\n index = `${index}${n}`\n }\n })\n\n return { index: Number(index), path: i.slice(indexStartPath) }\n}\n\ntype DialogErrorProps = {\n error: ExceptionResponseState\n}\n\nexport const DialogError = (props: DialogErrorProps) => {\n const { error } = props\n return (\n
\n {error.type}\n {error.message}\n \n {error.status} - {error.statusText}\n \n
\n )\n}\n\nexport const hex2rgba = (hex: string, alpha = 1) => {\n const [r, g, b] = hex.match(/\\w\\w/g)!.map((x) => parseInt(x, 16))\n return `rgba(${r},${g},${b},${alpha})`\n}\n\nexport const getBase64Logo = () =>\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAACPCAYAAADDY4iTAAAACXBIWXMAACxKAAAsSgF3enRNAAAEI0lEQVR4nO2dfXLCIBBHk05vpPc/gZ4pHa06aZoP2LCwu7w30//aWOTxYxMBx2mahpLcx2vZC0JRLtNtLHW9U/Igin/OyCSSB2niIZEoSx6kiU+OREnyIE1/pEj0dfQLiNMnKf2+mTxIA8NBAq0mD+LAmz0XDqctgC2B/slD6kAqf+RBHNhizY2PPIgDRywdoeYBMU95SB1IZe4KyQNikAfEjLfhwpQF2TyePJM8IAZ5QAzygBhqHhBD8oAY5AExyANikAfEIA+IQR4QgzwgBnlADPKAGOTJ4DLdnj/wyzfvwzEIsw7y7IA0+yDPCkiTBvLMQJo8KJhfIE4+3a/nkUpzH6+qr5N7/RZ0O21pJ83Z68//3qpI3cmjKY3Wtd/XtSZRVzWPZufWqJms1WUUzCdo8cTZkkDII6RlJ1oRCHlATJiCeTkaPdzqnuHR3tZtDJE8qTEeXajauE4engq3xaU8SGMDV/IgjS1c1DyS5yk9iNa6jeblIW3sYlYerae33HGVw1zNQ9L4wYw8SJNP6xRtLo/2EomUN3jtd5D5mKY1T+sOekizJRe10TFNkseCNHCeqsnjbcclku1TRR626ZbnrNgl+kN12kKY2KglD+LoYWU6LZ48lqShZlmnVB8VTZ5oaWOxPZYGRNg1zKTOOiUHREh5oooTetNfpE6LWPCXblO45CF11tEYDKHkQZx1tFKUTX8rRJqyttpSYqAhzwJr4pzpZO22FJen1dQRccqStqnWZ4kkz4wI01VKG0oNNA60fOF9umrx/4eQx+rdyBlSTwNredYhyWMcy1OpSs3jrXjt5XOw0u2kYAYxXZ3P0zMa6cppqB2gNS2HkWdPDBbg66D29QEtO+sx0vZef2skRhRM82ZALXla3sGQMr9o9wF3W0GpMXiRB8QgT0BqlQzIMyPCk+aabVCVx2pnRC2oa7/fJE8QWgxU5AlAq4RHHue0LA2QZ4Gnojn8t95QNJdn7yzFmpA8zuCUDBDBtxs7wFonWZmmlnS5AJ6iuAxq63mWWChQPeyFeuNB8C6SR9oRR4vKNPCUiuFrnrOdUaszrdY1e4RNnpIdoZVA3j/FDyePVoe8r3tWokgbDKsVzINyAWptzXQPu1DdJ4+FTur12F7XBTNnLbfFZfIgjQ1cyYM0tnAhD9LYpOrd1pB5x4U0tjFbMCOOfcxNW0jjBzPyII0/msuDNH6pXjAPr6IZafzTRB6IAWuYQQzygBjkATHIA2KQB8QgD4hBHhCDPCAGeUAM8oAY5AExyANikAfEfF2m28jbBxJIHhCDPCDmKQ9TF0ggeUDMRx7SB3IheUDMH3lIH8iB5AEx/+QhfSCV1eRBIEhhc9pCIDhit+ZBINjjsGBGINhinKb0rer38cq+dviQJc8bJIJBKs8cROqUYRh+ADMzljjuHK1PAAAAAElFTkSuQmCC\"\n\nexport type FetchStateType = {\n loading: boolean\n success: boolean\n error: boolean\n}\n\ntype FetchStateActions = \"initial\" | \"loading\" | \"success\" | \"error\"\n\nexport const useFetchState = () => {\n const [fetchState, setFetchState] = useState({\n loading: false,\n success: false,\n error: false,\n })\n\n const setFetchStateCallback = (status: FetchStateActions) => {\n if (status === \"loading\") {\n setFetchState({ loading: true, success: false, error: false })\n } else if (status === \"success\") {\n setFetchState({ loading: false, success: true, error: false })\n } else if (status === \"error\") {\n setFetchState({ loading: false, success: false, error: true })\n } else {\n setFetchState({ loading: false, success: false, error: false })\n }\n }\n\n return [fetchState, setFetchStateCallback] as const\n}\n","import React, {\n Component,\n ErrorInfo,\n ReactNode,\n useEffect,\n useState,\n} from \"react\"\nimport ReactPDF, {\n Text,\n Image,\n View,\n StyleSheet,\n Font,\n pdf,\n Canvas,\n} from \"@react-pdf/renderer\"\nimport { getBase64Logo } from \"../../utils\"\nimport \"./Export.css\"\nimport { Button, CircularProgress } from \"@material-ui/core\"\nimport InfoRoundedIcon from \"@material-ui/icons/InfoRounded\"\nimport WarningRoundedIcon from \"@material-ui/icons/WarningRounded\"\nimport ErrorRoundedIcon from \"@material-ui/icons/ErrorRounded\"\n\nFont.register({\n family: \"Open Sans\",\n fonts: [\n {\n src:\n \"https://fonts.gstatic.com/s/opensans/v18/mem8YaGs126MiZpBA-U1Ug.ttf\",\n fontWeight: 400,\n },\n {\n src:\n \"https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN7rg-VQ.ttf\",\n fontWeight: 700,\n },\n ],\n})\n\nexport const pageDefaultStyles: ReturnType = {\n fontFamily: \"Open Sans\",\n fontSize: \"11pt\",\n paddingTop: 35,\n paddingBottom: 35,\n paddingHorizontal: 35,\n}\n\nconst ExportDefaultHeaderStyles = StyleSheet.create({\n container: {\n borderBottomWidth: \"1pt\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"rgba(0, 0, 0, .12)\",\n paddingBottom: \"6pt\",\n marginBottom: \"12pt\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n title_container: {\n display: \"flex\",\n flexDirection: \"column\",\n marginRight: \"auto\",\n },\n title: {\n fontWeight: \"bold\",\n },\n subtitle: {\n fontSize: \"10pt\",\n },\n company_container: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n },\n company: {\n fontWeight: \"bold\",\n alignSelf: \"flex-end\",\n },\n company_tagline: {\n fontSize: \"10pt\",\n alignSelf: \"flex-end\",\n },\n logo: {\n width: \"30px\",\n height: \"auto\",\n marginLeft: \"6pt\",\n },\n})\n\ntype ExportDefaultHeaderProps = {\n title: string\n subtitle?: string\n}\n\nexport const ExportDefaultHeader = (props: ExportDefaultHeaderProps) => {\n const { title, subtitle } = props\n const styles = ExportDefaultHeaderStyles\n\n return (\n \n \n {title}\n {subtitle && {subtitle}}\n \n \n Hogeschool Rotterdam\n \n Instituut voor Communicatie, Media en IT\n \n \n \n \n )\n}\n\nconst ExportDefaultFooterStyles = StyleSheet.create({\n container: {\n fontSize: \"10pt\",\n position: \"absolute\",\n bottom: 25,\n left: 35,\n right: 35,\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n left: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n right: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n },\n page_number: {},\n})\n\nexport const ExportDefaultFooter = () => {\n const styles = ExportDefaultFooterStyles\n\n return (\n \n \n \n {new Date(Date.now()).toLocaleString()} {}\n \n \n \n \n `Pagina ${pageNumber} van ${totalPages}`\n }\n />\n \n \n )\n}\n\nconst ExportDefaultSectionStyles = StyleSheet.create({\n name_container: {\n display: \"flex\",\n flexDirection: \"row\",\n marginBottom: \"6pt\",\n },\n name_block: {\n backgroundColor: \"#cc0033\",\n width: \"5pt\",\n height: \"100%\",\n marginRight: \"6pt\",\n },\n name: {\n fontSize: \"14pt\",\n fontWeight: \"bold\",\n },\n})\n\ntype ExportDefaultSectionProps = {\n name: string\n}\n\nexport const ExportDefaultSection = (\n props: React.PropsWithChildren\n) => {\n const { name, children } = props\n const styles = ExportDefaultSectionStyles\n\n return (\n <>\n \n \n {name}\n \n {children}\n \n )\n}\n\nconst ExportInformationCardStyles = StyleSheet.create({\n container: {\n marginVertical: \"6pt\",\n display: \"flex\",\n flexDirection: \"row\",\n borderStyle: \"solid\",\n borderWidth: 1,\n borderColor: \"black\",\n borderRadius: 4,\n padding: 8,\n },\n image: {\n height: 15,\n marginRight: 8,\n },\n info: {\n borderColor: \"#2196f3\",\n backgroundColor: \"#E8F4FE\",\n },\n warning: {\n borderColor: \"#ff9800\",\n backgroundColor: \"#FFF4E5\",\n },\n error: {\n borderColor: \"#f44336\",\n backgroundColor: \"#FEECEB\",\n },\n})\n\ntype ExportInformationCardProps = {\n type: \"info\" | \"warning\" | \"error\"\n maxWidth?: {\n value: number\n unit: \"pt\" | \"in\" | \"mm\" | \"cm\" | \"%\" | \"vw\" | \"vh\"\n }\n disableIcon?: boolean\n}\n\nexport const ExportInformationCard = (\n props: React.PropsWithChildren\n) => {\n const { type, maxWidth, disableIcon, children } = props\n const styles = ExportInformationCardStyles\n\n const InfoRoundedIcon = Buffer.from(\n \"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\",\n \"base64\"\n )\n const WarningRoundedIcon = Buffer.from(\n \"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\",\n \"base64\"\n )\n const ErrorRoundedIcon = Buffer.from(\n \"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\",\n \"base64\"\n )\n\n let containerWidth = \"\"\n let contentWidth = \"\"\n\n if (typeof maxWidth !== \"undefined\") {\n containerWidth = `${maxWidth.value}${maxWidth.unit}`\n contentWidth = !disableIcon\n ? `${maxWidth.value - 39}${maxWidth.unit}`\n : `${maxWidth.value}${maxWidth.unit}`\n }\n\n return (\n \n {!disableIcon && type === \"info\" ? (\n \n ) : !disableIcon && type === \"warning\" ? (\n \n ) : !disableIcon && type === \"error\" ? (\n \n ) : (\n <>\n )}\n {children}\n \n )\n}\n\ntype ExportPDFButtonProps = {\n pdf: ReturnType\n filename: string\n}\n\nexport const ExportPDFButton = (props: ExportPDFButtonProps) => {\n const { pdf, filename } = props\n const [blob, setBlob] = useState(undefined)\n const [url, setUrl] = useState(undefined)\n\n useEffect(() => {\n if (typeof blob === \"undefined\") {\n setTimeout(() => {\n pdf.toBlob().then((blob) => {\n setBlob(blob)\n setUrl(URL.createObjectURL(blob))\n })\n }, 500)\n }\n }, [pdf])\n\n const downloadOnIE = (blob: Blob) => {\n if (window.navigator.msSaveBlob) {\n window.navigator.msSaveBlob(blob, \"\")\n }\n }\n\n return (\n <>\n {typeof blob !== \"undefined\" && typeof url !== \"undefined\" ? (\n downloadOnIE(blob)}\n style={{ textDecoration: \"none\" }}\n >\n \n \n ) : (\n \n )}\n \n )\n}\n","import React from \"react\"\nimport { NavLink } from \"react-router-dom\"\n\nimport \"./NavigationBar.css\"\nimport HRLogo from \"../../images/hr-logo-plain@4x.png\"\n\nimport PlanningOverviewIcon from \"@material-ui/icons/ViewDayRounded\"\nimport TeachersIcon from \"@material-ui/icons/SupervisorAccountRounded\"\nimport CourseIcon from \"@material-ui/icons/ClassRounded\"\nimport CurriculaIcon from \"@material-ui/icons/SchoolRounded\"\nimport EducationSettingsIcon from \"@material-ui/icons/SettingsRounded\"\nimport LogOutIcon from \"@material-ui/icons/ExitToAppRounded\"\nimport ButtonBase from \"@material-ui/core/ButtonBase\"\nimport { version } from \"../../../package.json\"\nimport GitInfo from \"react-git-info/macro\"\n\nexport const NavigationBar = () => {\n const logOut = () => {\n fetch(\"/api/app/logout\").then(() => {\n window.location.reload()\n })\n }\n\n const gitInfo = GitInfo()\n\n return (\n
\n
\n
\n \"HR\"\n

PTD

\n
\n
\n
\n \n \n Planningsoverzicht\n \n \n \n Docenten\n \n \n \n Cursussen\n \n \n \n Curricula\n \n {/* \n \n Instellingen opleiding\n */}\n
\n {version}\n \n {gitInfo.commit.hash.slice(0, 8)}\n \n
\n
\n logOut()}>\n
\n \n Log uit\n
\n
\n
\n )\n}\n","import { atom } from \"recoil\"\n\nexport const userState = atom<{\n institute: string\n education: string\n email: string\n personnel_code: string\n role: string\n}>({\n key: \"userState\",\n default: {\n institute: \"\",\n education: \"\",\n email: \"\",\n personnel_code: \"\",\n role: \"\",\n },\n})\n\ntype currentCurriculumStateType = { id: number; name: string; kind: string }\n\nexport const currentCurriculumState = atom({\n key: \"currentCurriculumState\",\n default: { id: -1, name: \"\", kind: \"\" },\n})\n\nexport const searchbarState = atom({\n key: \"searchbarState\",\n default: \"\",\n})\n\nexport const createDialogState = atom({\n key: \"createDialogState\",\n default: false,\n})\n\nexport const snackbarTextState = atom({\n key: \"snackbarTextState\",\n default: \"\",\n})\n\nexport const snackbarVisibleState = atom({\n key: \"snackbarVisibleState\",\n default: false,\n})\n\nexport const selectedCurriculumForDetailsState = atom({\n key: \"selectedCurriculumForDetailsState\",\n default: -1,\n})\n\nexport const selectedCourseForDetailsState = atom({\n key: \"selectedCourseForDetailsState\",\n default: -1,\n})\n\nexport const exportPlanningDialogState = atom<{\n year: number\n op: number\n expanded: boolean\n}>({\n key: \"exportPlanningDialogState\",\n default: {\n year: 1,\n op: 1,\n expanded: false,\n },\n})\n","import React, { useEffect, useState } from \"react\"\nimport Button from \"@material-ui/core/Button\"\nimport CircularProgress from \"@material-ui/core/CircularProgress\"\nimport { useSetRecoilState } from \"recoil\"\nimport HRLogo from \"../../images/hr-logo-plain@4x.png\"\nimport { userState } from \"../../state/app\"\nimport \"./AuthManager.css\"\n\nexport const AuthManager = ({ children }: React.PropsWithChildren<{}>) => {\n const setUser = useSetRecoilState(userState)\n const [authStatus, setAuthStatus] = useState<{\n isAuthenticating: boolean\n isLoggedIn: boolean\n authFailed: boolean\n typeFailed: string\n reasonFailed: string\n }>({\n isAuthenticating: true,\n isLoggedIn: false,\n authFailed: false,\n typeFailed: \"\",\n reasonFailed: \"\",\n })\n\n useEffect(() => {\n fetch(\"/api/login\")\n .then(() => {\n fetch(\"/api/login/get-user-credentials\").then(async (r) => {\n if (r.status === 401 || r.status === 404) {\n const json: {\n type: \"user-is-student\" | \"user-not-found\"\n message: string\n } = await r.json()\n return setAuthStatus({\n isAuthenticating: false,\n isLoggedIn: true,\n authFailed: true,\n typeFailed: json.type,\n reasonFailed: json.message,\n })\n }\n const json: {\n institute: string\n education: string\n email: string\n personnel_code: string\n role: string\n } = await r.json()\n setUser(json)\n setAuthStatus({\n isAuthenticating: false,\n isLoggedIn: true,\n authFailed: false,\n typeFailed: \"\",\n reasonFailed: \"\",\n })\n })\n })\n .catch((e) =>\n setAuthStatus({\n isAuthenticating: false,\n isLoggedIn: false,\n authFailed: true,\n typeFailed: \"user-not-logged-in\",\n reasonFailed: \"User not logged in.\",\n })\n )\n }, [setUser])\n\n if (authStatus.isAuthenticating) {\n return \n }\n\n if (!authStatus.isAuthenticating && !authStatus.isLoggedIn) {\n window.location.replace(`/api/login`)\n return \n }\n\n if (\n !authStatus.isAuthenticating &&\n authStatus.isLoggedIn &&\n !authStatus.authFailed\n ) {\n return (\n <>\n \n
{children}
\n \n )\n }\n\n if (authStatus.authFailed) {\n return (\n \n )\n }\n\n return \n}\n\ntype AuthManagerStatusProps = {\n loading?: boolean\n notLoggedIn?: boolean\n loggedIn?: boolean\n error?: boolean\n errorType?: string\n errorMessage?: string\n unknownError?: boolean\n}\n\nconst AuthManagerStatus = (props: AuthManagerStatusProps) => {\n const {\n loading,\n notLoggedIn,\n loggedIn,\n error,\n errorType,\n errorMessage,\n unknownError,\n } = props\n\n return (\n
\n \"HR\"\n {loading && (\n <>\n

Laden

\n \n \n )}\n {notLoggedIn && (\n <>\n

Je bent niet ingelogd. Je wordt automatische omgeleid.

\n

\n Klik op de onderstaande knop als je niet automatische wordt omgeleid\n

\n window.location.replace(`/api/login`)}\n >\n Inloggen\n \n \n )}\n {loggedIn &&

Succesvol ingelogd!

}\n {error && (\n <>\n

Er is iets fout gegaan bij het inloggen. Probeer het opnieuw

\n
Type: {errorType}
\n
Message: {errorMessage}
\n \n )}\n {unknownError && (\n <>\n

Er is een onbekende fout opgetreden. Probeer het opnieuw

\n window.location.replace(`/api/login`)}\n >\n Inloggen\n \n \n )}\n
\n )\n}\n","import useSWR from \"swr\"\n\nexport type useGetAllCurricula = { id: number; name: string; kinds: string[] }[]\ntype useGetAllCurriculaProps = {}\n\nexport const useGetAllCurricula = (props?: useGetAllCurriculaProps) => {\n const { data, error } = useSWR(\"/api/app/all-curricula\")\n\n return {\n data,\n error,\n isLoading: !error && !data,\n }\n}\n","import { atom, selector } from \"recoil\"\n\nexport const currentCurriculumAndKindState = atom({\n key: \"currentCurriculumAndKindState\",\n default: \"\",\n})\n\nexport const currentCurriculumAndKindObject = selector({\n key: \"currentCurriculumAndKindObject\",\n get: ({ get }) => {\n const currentCurriculumAndKindString = get(currentCurriculumAndKindState)\n return {\n curriculum: currentCurriculumAndKindString.slice(0, 5),\n kind: currentCurriculumAndKindString.slice(6),\n }\n },\n})\n\nexport const planningViewState = atom<\"study-year\" | \"op\">({\n key: \"planningViewState\",\n default: \"op\",\n})\n\nexport const CurrentCellOverlayOpenState = atom({\n key: \"CurrentCellOverlayOpenState\",\n default: -1,\n})\n","import \"./Layout.css\"\nimport React, { useEffect } from \"react\"\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\nimport { useGetAllCurricula } from \"../../api/app\"\nimport {\n createDialogState,\n currentCurriculumState,\n searchbarState,\n selectedCurriculumForDetailsState,\n selectedCourseForDetailsState,\n} from \"../../state/app\"\nimport { useGetAllCurriculumsAndKinds } from \"../../api/planning\"\nimport {\n currentCurriculumAndKindState,\n planningViewState,\n currentCurriculumAndKindObject,\n} from \"../../state/planning\"\n\nimport Skeleton from \"@material-ui/lab/Skeleton\"\nimport MenuItem from \"@material-ui/core/MenuItem\"\nimport ListSubheader from \"@material-ui/core/ListSubheader\"\nimport FormControl from \"@material-ui/core/FormControl\"\nimport Select from \"@material-ui/core/Select\"\nimport Button from \"@material-ui/core/Button\"\n\nexport const Sidebar: React.FC = ({ children }) => {\n return
{children}
\n}\n\ntype TopbarProps = {\n currentCurriculum?: boolean\n currentCurriculumAndKind?: boolean\n searchbar?: boolean\n createDialog?: string\n}\n\nexport const Topbar = (props: React.PropsWithChildren) => {\n const {\n currentCurriculum,\n currentCurriculumAndKind,\n searchbar,\n createDialog,\n } = props\n\n return (\n \n
\n {currentCurriculum && }\n {currentCurriculumAndKind && }\n {searchbar && }\n
\n
\n {createDialog && (\n {createDialog}\n )}\n
\n \n )\n}\n\nconst CurrentCurriculum = () => {\n const [currentCurriculum, setCurrentCurriculum] = useRecoilState(\n currentCurriculumState\n )\n const setCurrentCurriculumAndKinds = useSetRecoilState(\n currentCurriculumAndKindState\n )\n const selectedCurriculumForDetails = useSetRecoilState(\n selectedCurriculumForDetailsState\n )\n const selectedCourseForDetails = useSetRecoilState(\n selectedCourseForDetailsState\n )\n const { data, error } = useGetAllCurricula()\n\n useEffect(() => {\n if (!!data && !error && data.length > 0) {\n if (currentCurriculum.id === -1) {\n setCurrentCurriculum({\n id: data[0].id,\n name: data[0].name,\n kind: data[0].kinds[0],\n })\n setCurrentCurriculumAndKinds(`${data[0].name}-${data[0].kinds[0]}`)\n }\n }\n }, [data, error, setCurrentCurriculum])\n\n if (error) return
err
\n\n if (!data) return \n\n return (\n \n ) => {\n selectedCurriculumForDetails(-1)\n selectedCourseForDetails(-1)\n setCurrentCurriculum({\n ...currentCurriculum,\n id: data.find((v) => v.name === event.target.value)!.id,\n name: event.target.value as string,\n })\n }}\n >\n {data.map((curriculum, key) => (\n \n {curriculum.name}\n \n ))}\n \n \n )\n}\n\nconst Searchbar = () => {\n const [searchbar, setSearchbar] = useRecoilState(searchbarState)\n return (\n ) =>\n setSearchbar(event.target.value)\n }\n />\n )\n}\n\nconst CreateDialogButton: React.FC = ({ children }) => {\n const setCreateDialogState = useSetRecoilState(createDialogState)\n return (\n setCreateDialogState(true)}\n >\n {children}\n \n )\n}\n\ntype TopbarPlanningProps = {}\n\nexport const TopbarPlanning = (\n props: React.PropsWithChildren\n) => {\n return (\n
\n
\n \n
\n
\n \n
\n
\n )\n}\n\nconst CurrentCurriculumAndKinds = () => {\n const [currentCurriculum, setCurrentCurriculum] = useRecoilState(\n currentCurriculumState\n )\n const setCurrentCurriculumAndKinds = useSetRecoilState(\n currentCurriculumAndKindState\n )\n const currentCurriculumObject = useRecoilValue(currentCurriculumAndKindObject)\n const { data, error } = useGetAllCurriculumsAndKinds()\n\n useEffect(() => {\n if (!!data && !error) {\n if (data.length > 0) {\n if (currentCurriculum.id === -1) {\n const dataSorted = data.sort((a, b) =>\n a.curriculum < b.curriculum ? 1 : -1\n )\n\n setCurrentCurriculum({\n id: dataSorted[0].id,\n name: dataSorted[0].curriculum,\n kind: dataSorted[0].kinds[0],\n })\n setCurrentCurriculumAndKinds(\n `${dataSorted[0].curriculum}-${dataSorted[0].kinds[0]}`\n )\n }\n }\n }\n }, [data, error])\n\n if (error) return
err
\n\n if (!data) return \n\n return (\n \n ) => {\n let value = event.target.value as string\n let curriculum = value.slice(0, 5)\n let kind = value.slice(6)\n let id = data.findIndex((v) => v.curriculum === curriculum)\n\n setCurrentCurriculum({\n id: data[id].id,\n name: curriculum,\n kind: kind,\n })\n setCurrentCurriculumAndKinds(`${curriculum}-${kind}`)\n }}\n >\n {data\n ?.sort((a, b) => (a.curriculum < b.curriculum ? 1 : -1))\n .map((curriculum) => {\n let items: any = []\n items.push({curriculum.curriculum})\n\n curriculum.kinds.forEach((kind, key) => {\n items.push(\n \n {curriculum.curriculum} - {kind}\n \n )\n })\n\n return items\n })}\n \n \n )\n}\n\nconst SwitchPlanningView = () => {\n const [view, setView] = useRecoilState(planningViewState)\n\n return (\n \n setView(e.target.value as \"study-year\" | \"op\")}\n >\n Elk studiejaar met een OP\n Elk OP met een studiejaar\n \n \n )\n}\n","import useSWR from \"swr\"\n\nexport type useGetAllCurriculumsAndKinds = {\n id: number\n curriculum: string\n kinds: string[]\n}\ntype useGetAllCurriculumsAndKindsProps = {}\n\nexport const useGetAllCurriculumsAndKinds = (\n props?: useGetAllCurriculumsAndKindsProps\n) => {\n const { data, error } = useSWR(\n \"/api/planning/all-curricula\"\n )\n\n return {\n data,\n error,\n isLoading: !error && !data,\n }\n}\n","import \"./Loader.css\"\nimport { CircularProgress, CircularProgressProps } from \"@material-ui/core\"\nimport React from \"react\"\n\ntype LoaderProps = {\n size?: CircularProgressProps[\"size\"]\n style?: CircularProgressProps[\"style\"]\n}\n\nexport const Loader = (props: LoaderProps) => {\n const { size, style } = props\n\n return (\n
\n \n
\n )\n}\n","import \"./ErrorState.css\"\nimport React from \"react\"\n\nexport const ErrorState = () => (\n
\n Er is een fout opgetreden. Probeer het opnieuw.\n
\n)\n","import \"./Dialog.css\"\nimport React from \"react\"\nimport {\n createStyles,\n Theme,\n withStyles,\n WithStyles,\n} from \"@material-ui/core/styles\"\nimport MuiDialog, {\n DialogProps as MuiDialogProps,\n} from \"@material-ui/core/Dialog\"\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\"\nimport MuiDialogContent from \"@material-ui/core/DialogContent\"\nimport MuiDialogActions from \"@material-ui/core/DialogActions\"\nimport IconButton from \"@material-ui/core/IconButton\"\nimport CloseIcon from \"@material-ui/icons/Close\"\nimport Typography from \"@material-ui/core/Typography\"\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: \"absolute\",\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n })\n\nexport interface DialogTitleProps extends WithStyles {\n id: string\n children: React.ReactNode\n onClose: () => void\n}\n\nconst DialogTitle = withStyles(styles)((props: DialogTitleProps) => {\n const { children, classes, onClose, ...other } = props\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n )\n})\n\nconst DialogContent = withStyles((theme: Theme) => ({\n root: {\n padding: theme.spacing(2),\n },\n}))(MuiDialogContent)\n\nconst DialogActions = withStyles((theme: Theme) => ({\n root: {\n margin: 0,\n padding: theme.spacing(1),\n },\n}))(MuiDialogActions)\n\nexport type DialogProps = {\n open: boolean\n onClose: () => void\n title: string\n content: () => JSX.Element\n actions: () => JSX.Element\n innerDialogProps?: Omit\n}\n\nexport const Dialog = (props: DialogProps) => {\n const { open, onClose, title, content, actions, innerDialogProps } = props\n\n return (\n \n \n {title}\n \n {content()}\n {actions()}\n \n )\n}\n\nexport type FullScreenDialogProps = {\n open: boolean\n onClose: () => void\n title: string\n content: () => JSX.Element\n contentPadding?: string\n innerFullScreenDialogProps?: Omit\n}\n\nexport const FullScreenDialog = (props: FullScreenDialogProps) => {\n const {\n open,\n onClose,\n title,\n content,\n contentPadding,\n innerFullScreenDialogProps,\n } = props\n\n return (\n \n \n {title}\n \n \n {content()}\n \n \n )\n}\n","import React from \"react\"\nimport { Card, CardContent, CardProps, makeStyles } from \"@material-ui/core\"\nimport InfoRoundedIcon from \"@material-ui/icons/InfoRounded\"\nimport WarningRoundedIcon from \"@material-ui/icons/WarningRounded\"\nimport ErrorRoundedIcon from \"@material-ui/icons/ErrorRounded\"\nimport { hex2rgba } from \"../../utils\"\n\nconst useStylesCard = makeStyles({\n info: {\n borderColor: \"#2196f3\",\n backgroundColor: hex2rgba(\"#2196f3\", 0.1),\n },\n warning: {\n borderColor: \"#ff9800\",\n backgroundColor: hex2rgba(\"#ff9800\", 0.1),\n },\n error: {\n borderColor: \"#f44336\",\n backgroundColor: hex2rgba(\"#f44336\", 0.1),\n },\n})\n\ntype InformationCardProps = {\n type: \"info\" | \"warning\" | \"error\"\n disableIcon?: boolean\n content: string | (() => JSX.Element)\n style?: CardProps[\"style\"]\n}\n\nconst InformationCard = (props: InformationCardProps) => {\n const { type, disableIcon, content, style } = props\n const cardClass = useStylesCard()\n\n return (\n \n \n {!disableIcon && type === \"info\" ? (\n \n ) : type === \"warning\" ? (\n \n ) : type === \"error\" ? (\n \n ) : (\n <>\n )}\n
{typeof content === \"string\" ? content : content()}
\n \n
\n )\n}\n\nexport default InformationCard\n","import React, { useEffect, useState } from \"react\"\nimport {\n Button as MdButton,\n ButtonProps as MdButtonProps,\n CircularProgress,\n createStyles,\n makeStyles,\n Theme,\n} from \"@material-ui/core\"\nimport { green, red } from \"@material-ui/core/colors\"\nimport { FetchStateType, useFetchState } from \"../../utils\"\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n wrapper: {\n position: \"relative\",\n },\n wrapperFullWidth: {\n width: \"-webkit-fill-available\",\n },\n buttonFullWidth: {\n width: \"inherit\",\n },\n buttonSuccessContained: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n buttonErrorContained: {\n backgroundColor: red[500],\n \"&:hover\": {\n backgroundColor: red[700],\n },\n },\n buttonSuccessOutlined: {\n color: green[500],\n borderColor: green[500],\n \"&:hover\": {\n borderColor: green[700],\n },\n },\n buttonErrorOutlined: {\n color: red[500],\n borderColor: red[500],\n \"&:hover\": {\n borderColor: red[700],\n },\n },\n buttonSuccessText: {\n color: green[500],\n \"&:hover\": {\n backgroundColor: green[100],\n },\n },\n buttonErrorText: {\n color: red[500],\n \"&:hover\": {\n backgroundColor: red[100],\n },\n },\n buttonProgress: {\n color: theme.palette.primary.main,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n })\n)\n\nexport type ButtonProps = {\n onClick?: MdButtonProps[\"onClick\"]\n className?: MdButtonProps[\"className\"]\n variant?: MdButtonProps[\"variant\"]\n color?: MdButtonProps[\"color\"]\n size?: MdButtonProps[\"size\"]\n fetchStatus?: ReturnType\n disabled?: MdButtonProps[\"disabled\"]\n fullWidth?: MdButtonProps[\"fullWidth\"]\n type?: MdButtonProps[\"type\"]\n innerProps?: MdButtonProps\n}\n\nexport const Button: React.FC = (props) => {\n const {\n children,\n className,\n onClick,\n variant,\n color,\n size,\n fetchStatus,\n disabled,\n fullWidth,\n type,\n innerProps,\n } = props\n const classes = useStyles()\n\n const [success, setSuccess] = useState(\n fetchStatus?.[0].success || false\n )\n const [error, setError] = useState(fetchStatus?.[0].error || false)\n const timer = React.useRef()\n\n useEffect(() => {\n if (fetchStatus?.[0].loading) {\n timer.current = window.setTimeout(() => {\n setSuccess(false)\n setError(false)\n fetchStatus[1](\"initial\")\n }, 0)\n }\n }, [fetchStatus?.[0].loading])\n\n useEffect(() => {\n if (fetchStatus?.[0].success) {\n setSuccess(true)\n timer.current = window.setTimeout(() => {\n setSuccess(false)\n fetchStatus[1](\"initial\")\n }, 3000)\n }\n\n if (fetchStatus?.[0].error) {\n setError(true)\n timer.current = window.setTimeout(() => {\n setError(false)\n fetchStatus[1](\"initial\")\n }, 3000)\n }\n\n return function cleanup() {\n setSuccess(false)\n setError(false)\n clearTimeout(timer.current)\n }\n }, [fetchStatus?.[0].success, fetchStatus?.[0].error])\n\n const getSuccessOrErrorClass = () => {\n switch (variant) {\n case \"contained\":\n return `${success ? classes.buttonSuccessContained : \"\"} ${\n error ? classes.buttonErrorContained : \"\"\n }`\n case \"outlined\":\n return `${success ? classes.buttonSuccessOutlined : \"\"} ${\n error ? classes.buttonErrorOutlined : \"\"\n }`\n case \"text\":\n return `${success ? classes.buttonSuccessText : \"\"} ${\n error ? classes.buttonErrorText : \"\"\n }`\n default:\n return `${success ? classes.buttonSuccessContained : \"\"} ${\n error ? classes.buttonErrorContained : \"\"\n }`\n }\n }\n\n return (\n \n \n {children}\n \n {fetchStatus?.[0].loading && (\n \n )}\n \n )\n}\n","import \"./CellOverlays.css\"\nimport React, { ClassicElement, useEffect, useState } from \"react\"\nimport {\n CircularProgress,\n Divider,\n IconButton,\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n ListSubheader,\n TextField,\n} from \"@material-ui/core\"\nimport {\n checkValidationErrors,\n Errors,\n hex2rgba,\n useFetchState,\n} from \"../../utils\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport { currentCurriculumAndKindObject } from \"../../state/planning\"\nimport useSWR, { mutate } from \"swr\"\nimport { Autocomplete } from \"@material-ui/lab\"\nimport { boolean, number, object, string, ValidationError } from \"yup\"\nimport {\n StudyYearCell,\n StudyYearClassCell,\n StudyYearCoursCell,\n} from \"./StudyYear\"\nimport { HeadCellClassType, HeadCellCourseType } from \"./Cells\"\nimport { Team, TeamOptions, Workmethod } from \"../CourseDetails\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../state/app\"\nimport RemoveCircleRoundedIcon from \"@material-ui/icons/RemoveCircleRounded\"\nimport ArrowRightAltRoundedIcon from \"@material-ui/icons/ArrowRightAltRounded\"\nimport { Dialog } from \"../Dialog\"\nimport InformationCard from \"../InformationCard\"\nimport { Button } from \"../Buttons\"\n\ntype ClassOverlayProps = {\n year: number\n op: number\n handleClose: () => void\n _class?: StudyYearClassCell\n cellType?: HeadCellClassType\n create?: boolean\n length: number\n selectedStudyYear: number[]\n selectedOP: number[]\n classesPlannedInOP: StudyYearClassCell[]\n}\n\ntype ClassDetails = {\n id: number\n class_id: number\n code: string\n size_op1: number\n size_op2: number\n size_op3: number\n size_op4: number\n pos_x: number\n pos_y: number\n update: boolean\n side: \"left\" | \"right\"\n type:\n | \"new_cell:end\"\n | \"new_cell:left\"\n | \"new_cell:right\"\n | \"existing_cell:class:middle\"\n | \"existing_cell:empty:middle\"\n}\n\ntype ExistingClassDetails = Omit & { group_by: string }\n\nexport const ClassOverlay = (props: ClassOverlayProps) => {\n const {\n year,\n op,\n handleClose,\n _class,\n cellType,\n create,\n length,\n selectedStudyYear,\n selectedOP,\n classesPlannedInOP,\n } = props\n\n const getType = (): ClassDetails[\"type\"] => {\n if (_class && create && cellType?.left) return \"new_cell:left\"\n\n if (_class && create && cellType?.right) return \"new_cell:right\"\n\n if (_class && cellType?.update && !_class.name)\n return \"existing_cell:empty:middle\"\n\n if (_class && cellType?.update) return \"existing_cell:class:middle\"\n\n if (!_class && create) return \"new_cell:end\"\n\n return \"new_cell:end\"\n }\n\n const [_classDetails, setClassDetails] = useState({\n id: -1,\n class_id: -1,\n code: \"\",\n size_op1: 0,\n size_op2: 0,\n size_op3: 0,\n size_op4: 0,\n pos_x:\n getType() === \"new_cell:left\"\n ? _class!.pos_x\n : getType() === \"new_cell:right\"\n ? _class!.pos_x + 1\n : getType() === \"existing_cell:empty:middle\" ||\n getType() === \"existing_cell:class:middle\"\n ? _class!.pos_x\n : -1,\n pos_y:\n (_class && create) || (_class?.id && cellType?.update)\n ? _class.pos_y\n : -1,\n update: cellType?.update ? true : false,\n side: cellType?.left ? \"left\" : \"right\",\n type: getType(),\n })\n const [_classDetailsErrors, setClassDetailsErrors] = useState<\n Errors[]\n >([])\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(\n false\n )\n const [createClassStatus, setCreateClassStatus] = useFetchState()\n const [updateClassStatus, setUpdateClassStatus] = useFetchState()\n const [removeClassStatus, setRemoveClassStatus] = useFetchState()\n\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n\n const { data, error } = useSWR(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/existing-classes`\n )\n const [existingClasses, setExistingClasses] = useState<\n ExistingClassDetails[]\n >([])\n\n const { data: dataClassDetails, error: errorClassDetails } = useSWR<\n ClassDetails\n >(\n getType() === \"existing_cell:class:middle\"\n ? `/api/planning/_class/${_class?.id}`\n : null\n )\n\n const {\n data: dataDefaultStudentAmount,\n error: errorDefaultStudentAmount,\n } = useSWR(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/default-student-amount`\n )\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setExistingClasses(data)\n }\n\n if (typeof dataClassDetails !== \"undefined\") {\n setClassDetails({\n ..._classDetails,\n ...dataClassDetails,\n })\n }\n\n if (\n typeof dataDefaultStudentAmount !== \"undefined\" &&\n getType() !== \"existing_cell:class:middle\"\n ) {\n setClassDetails({\n ..._classDetails,\n size_op1: dataDefaultStudentAmount,\n size_op2: dataDefaultStudentAmount,\n size_op3: dataDefaultStudentAmount,\n size_op4: dataDefaultStudentAmount,\n })\n }\n\n return () => {\n setClassDetails({\n id: -1,\n class_id: -1,\n code: \"\",\n size_op1: 0,\n size_op2: 0,\n size_op3: 0,\n size_op4: 0,\n pos_x:\n getType() === \"new_cell:left\"\n ? _class!.pos_x\n : getType() === \"new_cell:right\"\n ? _class!.pos_x + 1\n : getType() === \"existing_cell:empty:middle\" ||\n getType() === \"existing_cell:class:middle\"\n ? _class!.pos_x\n : -1,\n pos_y:\n (_class && create) || (_class?.id && cellType?.update)\n ? _class.pos_y\n : -1,\n update: cellType?.update ? true : false,\n side: cellType?.left ? \"left\" : \"right\",\n type: getType(),\n })\n }\n }, [\n data,\n dataClassDetails,\n dataDefaultStudentAmount,\n create,\n cellType,\n _class,\n ])\n\n const handleStringChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setClassDetails({\n ..._classDetails,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleNumberChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setClassDetails({\n ..._classDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const createClass = () => {\n if (!classesPlannedInOP.some((c) => c.name === _classDetails.code)) {\n ClassOverlayValidiationObject.validate(_classDetails, {\n abortEarly: false,\n })\n .then(() => {\n setCreateClassStatus(\"loading\")\n fetch(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/class`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(_classDetails),\n }\n ).then(() => {\n setCreateClassStatus(\"success\")\n // mutate(\n // `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n // )\n selectedStudyYear.map((st, i) => {\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${st}/${selectedOP[i]}`\n )\n })\n handleClose()\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setClassDetailsErrors)\n )\n } else {\n setCreateClassStatus(\"error\")\n snackbarText(\"De klas staat al in de planning.\")\n snackbarVisible(true)\n console.log(\n `A class with the code ${_classDetails.code} already exists. Choose it from the list on the right`\n )\n }\n }\n\n const updateClass = () => {\n ClassOverlayValidiationObject.validate(_classDetails, { abortEarly: false })\n .then(() => {\n setUpdateClassStatus(\"loading\")\n fetch(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/class`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(_classDetails),\n }\n ).then(() => {\n setUpdateClassStatus(\"success\")\n // mutate(\n // `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n // )\n // mutate(\n // `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n // )\n\n selectedStudyYear.map((st, i) => {\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${st}/${selectedOP[i]}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${st}/${selectedOP[i]}/notes`\n )\n })\n handleClose()\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setClassDetailsErrors)\n )\n }\n\n const removeClassCheckLength = () =>\n length === 1 ? setShowDeleteConfirmation(true) : removeClass()\n\n const removeClass = () => {\n setRemoveClassStatus(\"loading\")\n fetch(`/api/planning/_class/${_class!.class_id}/${op}`, {\n method: \"DELETE\",\n }).then(() => {\n setRemoveClassStatus(\"success\")\n selectedStudyYear.map((st, i) => {\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${st}/${selectedOP[i]}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${st}/${selectedOP[i]}/notes`\n )\n })\n handleClose()\n })\n }\n\n return (\n
\n
\n
\n \n {create ? \"Maak een nieuwe klas aan\" : \"Wijzig de klas\"}\n \n
\n
\n handleStringChange(e)}\n error={_classDetailsErrors.some((e) => e.path === \"code\")}\n helperText={\n _classDetailsErrors.find((e) => e.path === \"code\")?.message\n }\n size=\"small\"\n />\n
\n handleNumberChange(e)}\n error={_classDetailsErrors.some((e) => e.path === \"size_op1\")}\n helperText={\n _classDetailsErrors.find((e) => e.path === \"size_op1\")?.message\n }\n size=\"small\"\n />\n handleNumberChange(e)}\n error={_classDetailsErrors.some((e) => e.path === \"size_op2\")}\n helperText={\n _classDetailsErrors.find((e) => e.path === \"size_op2\")?.message\n }\n size=\"small\"\n />\n handleNumberChange(e)}\n error={_classDetailsErrors.some((e) => e.path === \"size_op3\")}\n helperText={\n _classDetailsErrors.find((e) => e.path === \"size_op3\")?.message\n }\n size=\"small\"\n />\n handleNumberChange(e)}\n error={_classDetailsErrors.some((e) => e.path === \"size_op4\")}\n helperText={\n _classDetailsErrors.find((e) => e.path === \"size_op4\")?.message\n }\n size=\"small\"\n />\n
\n
\n
\n (create ? createClass() : updateClass())}\n >\n {create ? \"Maak aan en voeg toe\" : \"Sla wijzigingen op\"}\n \n {cellType?.update && (\n removeClassCheckLength()}\n innerProps={{ style: { marginTop: \"12px\" } }}\n >\n Verwijder kolom uit de planning\n \n )}\n
\n
\n \n
\n
\n \n Selecteer een bestaande klas\n \n
\n
\n -b.group_by.localeCompare(a.group_by)\n )}\n groupBy={(option) => option.group_by}\n getOptionLabel={(option) => option.code}\n onChange={(e, v) => {\n if (v) {\n setClassDetails({\n ..._classDetails,\n ...v,\n })\n }\n }}\n renderInput={(params) => (\n \n )}\n />\n
\n
\n setShowDeleteConfirmation(false)}\n title={`Klas verwijderen`}\n content={() => (\n <>\n (\n <>\n Alle cursussen worden ook verwijderd als je\n deze klas verwijderd.\n
\n
\n Weet je het zeker?\n \n )}\n />\n \n )}\n actions={() => (\n <>\n \n removeClass()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder klas uit de planning\n \n \n )}\n />\n
\n )\n}\n\nconst ClassOverlayValidiationObject = object({\n id: number().required(),\n class_id: number().required(),\n code: string().required(),\n size_op1: number().required(),\n size_op2: number().required(),\n size_op3: number().required(),\n size_op4: number().required(),\n pos_x: number().required(),\n pos_y: number().required(),\n update: boolean().required(),\n side: string(),\n type: string(),\n})\n\ntype CourseOverlayProps = {\n year: number\n op: number\n handleClose: () => void\n course?: StudyYearCoursCell\n cellType?: HeadCellCourseType\n create?: boolean\n length: number\n}\n\ntype CourseDetails = {\n id: number\n course_id: number\n code: string\n name: string\n workmethod: {\n id: number\n name: string\n }\n team: {\n id: number\n name: string\n }\n meetings: number\n meeting_duration: number\n correction_time: number\n travel_time: number\n teachers_simultaniously_teaching: number\n contact_student: number\n raise_factor: number\n pos_x: number\n pos_y: number\n update: boolean\n side: \"top\" | \"bottom\"\n type:\n | \"new_cell:end\"\n | \"new_cell:top\"\n | \"new_cell:bottom\"\n | \"existing_cell:course:middle\"\n | \"existing_cell:empty:middle\"\n}\n\ntype DefaultValues = {\n meetings: number\n contact_students: number\n raise_factor: number\n correction_time: number\n travel_time: number\n}\n\ntype ExistingCourses = Omit & { group_by: string }\n\nexport const CourseOverlay = (props: CourseOverlayProps) => {\n const { year, op, handleClose, course, cellType, create, length } = props\n\n const getType = (): CourseDetails[\"type\"] => {\n if (course && create && cellType?.top) return \"new_cell:top\"\n\n if (course && create && cellType?.bottom) return \"new_cell:bottom\"\n\n if (course && cellType?.update && !course.name)\n return \"existing_cell:empty:middle\"\n\n if (course && cellType?.update) return \"existing_cell:course:middle\"\n\n if (!course && create) return \"new_cell:end\"\n\n return \"new_cell:end\"\n }\n\n const [courseDetails, setCourseDetails] = useState({\n id: -1,\n course_id: -1,\n code: \"\",\n name: \"\",\n workmethod: {\n id: -1,\n name: \"Standaard\",\n },\n team: {\n id: -1,\n name: \"Geen team\",\n },\n meetings: 0,\n meeting_duration: 0,\n correction_time: 0,\n travel_time: 0,\n teachers_simultaniously_teaching: 0,\n contact_student: 0,\n raise_factor: 0,\n pos_x:\n (course && create) || (course?.id && cellType?.update)\n ? course.pos_x\n : -1,\n pos_y:\n getType() === \"new_cell:top\"\n ? course!.pos_y\n : getType() === \"new_cell:bottom\"\n ? course!.pos_y + 1\n : getType() === \"existing_cell:empty:middle\" ||\n getType() === \"existing_cell:course:middle\"\n ? course!.pos_y\n : -1,\n update: cellType?.update ? true : false,\n side: cellType?.top ? \"top\" : \"bottom\",\n type: getType(),\n })\n const [courseDetailsErrors, setCourseDetailsErrors] = useState<\n Errors[]\n >([])\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(\n false\n )\n const [createCourseStatus, setCreateCourseStatus] = useFetchState()\n const [updateCourseStatus, setUpdateCourseStatus] = useFetchState()\n const [removeCourseStatus, setRemoveCourseStatus] = useFetchState()\n\n const { data, error } = useSWR(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/existing-courses`\n )\n const [existingCourses, setExistingCourses] = useState([])\n\n const {\n data: dataAvailableWorkmethods,\n error: errorAvailableWorkmethods,\n } = useSWR(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/available-work-methods`\n )\n\n const { data: dataAvailableTeams, error: errorAvailableTeams } = useSWR<\n Team[]\n >(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/available-teams`\n )\n const [availableTeams, setAvailableTeams] = useState([])\n\n const { data: dataCourseDetails, error: errorCourseDetails } = useSWR<\n CourseDetails\n >(\n getType() === \"existing_cell:course:middle\"\n ? `/api/planning/course/${course?.id}`\n : null\n )\n const { data: dataDefaultValues, error: errorDefaultValues } = useSWR<\n DefaultValues\n >(\n () =>\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/default-values`\n )\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setExistingCourses(data)\n }\n\n if (typeof dataCourseDetails !== \"undefined\") {\n setCourseDetails({\n ...courseDetails,\n ...dataCourseDetails,\n })\n }\n\n if (\n typeof dataAvailableWorkmethods !== \"undefined\" &&\n getType() !== \"existing_cell:course:middle\"\n ) {\n console.log(\"set workmethod\")\n\n setCourseDetails({\n ...courseDetails,\n workmethod:\n dataAvailableWorkmethods.filter((wm) => wm.name === \"Standaard\")\n .length === 1\n ? dataAvailableWorkmethods.filter(\n (wm) => wm.name === \"Standaard\"\n )[0]\n : dataAvailableWorkmethods[0],\n })\n }\n\n if (typeof dataAvailableTeams !== \"undefined\") {\n let arr = dataAvailableTeams as TeamOptions[]\n\n arr = arr.map((aco) => ({\n ...aco,\n type: \"Beschikbare teams\",\n }))\n\n setAvailableTeams(arr)\n }\n\n if (typeof dataDefaultValues !== \"undefined\") {\n const type = getType()\n if (\n type === \"new_cell:bottom\" ||\n type === \"new_cell:end\" ||\n type === \"new_cell:top\" ||\n type === \"existing_cell:empty:middle\"\n ) {\n setCourseDetails({\n ...courseDetails,\n meetings: dataDefaultValues.meetings,\n contact_student: dataDefaultValues.contact_students,\n correction_time: dataDefaultValues.correction_time,\n travel_time: dataDefaultValues.travel_time,\n raise_factor: dataDefaultValues.raise_factor,\n })\n }\n }\n\n return () => {\n setCourseDetails({\n id: -1,\n course_id: -1,\n code: \"\",\n name: \"\",\n workmethod: {\n id: -1,\n name: \"Standaard\",\n },\n team: {\n id: -1,\n name: \"Geen team\",\n },\n meetings: 0,\n meeting_duration: 0,\n correction_time: 0,\n travel_time: 0,\n teachers_simultaniously_teaching: 0,\n contact_student: 0,\n raise_factor: 0,\n pos_x:\n (course && create) || (course?.id && cellType?.update)\n ? course.pos_x\n : -1,\n pos_y:\n getType() === \"new_cell:top\"\n ? course!.pos_y\n : getType() === \"new_cell:bottom\"\n ? course!.pos_y + 1\n : getType() === \"existing_cell:empty:middle\" ||\n getType() === \"existing_cell:course:middle\"\n ? course!.pos_y\n : -1,\n update: cellType?.update ? true : false,\n side: cellType?.top ? \"top\" : \"bottom\",\n type: getType(),\n })\n setShowDeleteConfirmation(false)\n }\n }, [\n data,\n dataCourseDetails,\n dataAvailableWorkmethods,\n dataAvailableTeams,\n dataDefaultValues,\n create,\n cellType,\n course,\n ])\n\n const handleStringChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleNumberChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const createCourse = () => {\n CourseOverlayValidiationObject.validate(courseDetails, {\n abortEarly: false,\n })\n .then(() => {\n setCreateCourseStatus(\"loading\")\n fetch(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/course`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(courseDetails),\n }\n ).then(async (r) => {\n setCreateCourseStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n handleClose()\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setCourseDetailsErrors)\n )\n }\n\n const updateCourse = () => {\n CourseOverlayValidiationObject.validate(courseDetails, {\n abortEarly: false,\n })\n .then(() => {\n setUpdateCourseStatus(\"loading\")\n fetch(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/course`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(courseDetails),\n }\n ).then(async (r) => {\n setUpdateCourseStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n handleClose()\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setCourseDetailsErrors)\n )\n }\n\n const removeCourseCheckLength = () =>\n length === 1 ? setShowDeleteConfirmation(true) : removeCourse()\n\n const removeCourse = () => {\n setRemoveCourseStatus(\"loading\")\n fetch(`/api/planning/course/${course!.course_id}`, {\n method: \"DELETE\",\n }).then(() => {\n setRemoveCourseStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n setShowDeleteConfirmation(false)\n handleClose()\n })\n }\n\n return (\n
\n
\n
\n \n {create ? \"Maak een nieuwe cursus aan\" : \"Wijzig de cursus\"}\n \n
\n
\n
\n handleStringChange(e)}\n error={courseDetailsErrors.some((e) => e.path === \"code\")}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"code\")?.message\n }\n size=\"small\"\n />\n handleStringChange(e)}\n error={courseDetailsErrors.some((e) => e.path === \"name\")}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"name\")?.message\n }\n size=\"small\"\n />\n
\n
\n {!dataAvailableWorkmethods ? (\n \n ) : errorAvailableWorkmethods ? (\n \n ) : (\n \n setCourseDetails({ ...courseDetails, workmethod: v })\n }\n disableClearable\n options={dataAvailableWorkmethods}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen werkmethode beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n\n {!dataAvailableTeams ? (\n \n ) : errorAvailableTeams ? (\n \n ) : (\n \n v !== null\n ? setCourseDetails({ ...courseDetails, team: v })\n : setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"\" },\n })\n }\n onBlur={() =>\n courseDetails.team.id === -1 &&\n setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"Geen team\" },\n })\n }\n options={availableTeams.sort((a, b) =>\n a.type < b.type ? 1 : -1\n )}\n groupBy={(option) => option.type}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen teams beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n \n
\n handleNumberChange(e)}\n error={courseDetailsErrors.some((e) => e.path === \"meetings\")}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"meetings\")\n ? courseDetailsErrors.find((e) => e.path === \"meetings\")\n ?.message\n : \"Aantal lesmomenten\"\n }\n size=\"small\"\n />\n handleNumberChange(e)}\n error={courseDetailsErrors.some(\n (e) => e.path === \"contact_student\"\n )}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"contact_student\")\n ? courseDetailsErrors.find(\n (e) => e.path === \"contact_student\"\n )?.message\n : \"Contacttijd lesmoment met studenten (min)\"\n }\n size=\"small\"\n />\n
\n
\n handleNumberChange(e)}\n error={courseDetailsErrors.some((e) => e.path === \"raise_factor\")}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"raise_factor\")\n ? courseDetailsErrors.find((e) => e.path === \"raise_factor\")\n ?.message\n : \"Opslagfactor\"\n }\n size=\"small\"\n />\n handleNumberChange(e)}\n error={courseDetailsErrors.some(\n (e) => e.path === \"correction_time\"\n )}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"correction_time\")\n ? courseDetailsErrors.find(\n (e) => e.path === \"correction_time\"\n )?.message\n : \"Correctietijd per student (min)\"\n }\n size=\"small\"\n />\n
\n
\n handleNumberChange(e)}\n error={courseDetailsErrors.some((e) => e.path === \"travel_time\")}\n helperText={\n courseDetailsErrors.find((e) => e.path === \"travel_time\")\n ? courseDetailsErrors.find((e) => e.path === \"travel_time\")\n ?.message\n : \"Reistijd\"\n }\n size=\"small\"\n />\n
\n
\n
\n
\n (create ? createCourse() : updateCourse())}\n >\n {create ? \"Maak aan en voeg toe\" : \"Sla wijzigingen op\"}\n \n {cellType?.update && (\n removeCourseCheckLength()}\n innerProps={{ style: { marginTop: \"12px\" } }}\n >\n Verwijder rij uit de planning\n \n )}\n
\n
\n \n
\n
\n \n Selecteer een bestaande cursus\n \n
\n
\n -b.group_by.localeCompare(a.group_by)\n )}\n groupBy={(option) => option.group_by}\n getOptionLabel={(option) =>\n `${option.code}${\n option.workmethod.name !== \"Standaard\"\n ? ` - ${option.workmethod.name}`\n : \"\"\n }`\n }\n onChange={(e, v) => {\n if (v) {\n setCourseDetails({\n ...courseDetails,\n ...v,\n team:\n v.team.id === 0 ? { id: -1, name: \"Geen team\" } : v.team,\n })\n }\n }}\n renderInput={(params) => (\n \n )}\n />\n
\n
\n setShowDeleteConfirmation(false)}\n title={`Cursus verwijderen`}\n content={() => (\n <>\n (\n <>\n Alle klassen worden ook verwijderd als je\n deze cursus verwijderd.\n
\n
\n Weet je het zeker?\n \n )}\n />\n \n )}\n actions={() => (\n <>\n \n removeCourse()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder cursus uit de planning\n \n \n )}\n />\n
\n )\n}\n\nconst CourseOverlayValidiationObject = object({\n id: number().required(),\n course_id: number().required(),\n code: string().required(),\n name: string().required(),\n workmethod: object({\n id: number().required(),\n name: string().required(),\n }).required(),\n team: object({\n id: number().required(),\n name: string().required(),\n }).required(),\n meetings: number().required(),\n meeting_duration: number().required(),\n correction_time: number().required(),\n travel_time: number().required(),\n teachers_simultaniously_teaching: number().required(),\n contact_student: number().required(),\n raise_factor: number().required(),\n pos_x: number().required(),\n pos_y: number().required(),\n update: boolean().required(),\n side: string(),\n type: string(),\n})\n\ntype CellWorkload = {\n workload: number\n}\n\ntype AvailableTeachers = {\n name: string\n teachers: {\n id: number\n personnel_code: string\n available_hours: number\n }[]\n}\n\ntype Label = {\n id: number\n name: string\n color: string\n}\n\ntype Note = {\n id: number\n note: string\n}\n\ntype CellOverlayProps = {\n cell: StudyYearCell\n course: StudyYearCoursCell\n year: number\n op: number\n}\n\nexport const CellOverlay = (props: CellOverlayProps) => {\n const { cell, course, year, op } = props\n const [searchTerm, setSearchTerm] = useState(\"\")\n const [teams, setTeams] = useState([])\n const [note, setNote] = useState({\n id: -1,\n note: \"\",\n })\n const [teacherWorkloadOverrides, setTeacherWorkloadOverrides] = useState<\n (string | number)[]\n >(cell.teachers.map((t) => t.workload_override as number))\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [saveCellStatus, setSaveCellStatus] = useFetchState()\n\n const { data: dataWorkload, error: errorWorkload } = useSWR(\n `/api/planning/cell/${cell.id}/teacher-workload`\n )\n const { data: dataAvailableTeachers, error: errorAvailableTeachers } = useSWR<\n AvailableTeachers[]\n >(`/api/planning/cell/${cell.id}/available-teachers`)\n const { data: dataLabels, error: errorLabels } = useSWR(\n `/api/planning/cell/${cell.id}/labels`\n )\n const { data: dataNote, error: errorNote } = useSWR(\n `/api/planning/cell/${cell.id}/note`\n )\n\n useEffect(() => {\n if (typeof dataAvailableTeachers !== \"undefined\") {\n setTeams(dataAvailableTeachers)\n }\n }, [dataAvailableTeachers])\n\n useEffect(() => {\n if (typeof dataNote !== \"undefined\") {\n setNote(dataNote)\n }\n }, [dataNote])\n\n useEffect(() => {\n setTeacherWorkloadOverrides(\n cell.teachers.map((t) => t.workload_override as number)\n )\n }, [cell])\n\n useEffect(() => {\n if (searchTerm.length > 0) {\n let filteredTeams: AvailableTeachers[] = []\n\n teams.forEach((t) => {\n let filteredList = t.teachers.filter((teacher) =>\n teacher.personnel_code\n .toLowerCase()\n .includes(searchTerm.toLowerCase())\n )\n if (filteredList.length > 0) {\n filteredTeams.push({\n name: t.name,\n teachers: filteredList,\n })\n }\n })\n\n setTeams(filteredTeams)\n } else {\n if (typeof dataAvailableTeachers !== \"undefined\") {\n setTeams(dataAvailableTeachers)\n }\n }\n }, [searchTerm])\n\n const handleWorkloadOverrideChange = (\n e: React.ChangeEvent,\n index: number\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n let list = [...teacherWorkloadOverrides]\n list[index] =\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value\n\n setTeacherWorkloadOverrides([...list])\n }\n\n const saveCell = async () => {\n setSaveCellStatus(\"loading\")\n if (dataNote?.note !== note.note) {\n await saveNote()\n }\n fetch(`/api/planning/cell/${cell.id}/teacher-workload-override`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(\n cell.teachers.map((v, i) => {\n return {\n ...v,\n cell_id: cell.id,\n workload_override: teacherWorkloadOverrides[i],\n }\n })\n ),\n }).then(() => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n snackbarText(\"De wijzigingen zijn opgeslagen\")\n snackbarVisible(true)\n })\n }\n\n const setLabel = (id: number) => {\n setSaveCellStatus(\"loading\")\n fetch(`/api/planning/cell/${cell.id}/label`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ id: id }),\n }).then(() => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n snackbarText(\"Het label is toegewijzen\")\n snackbarVisible(true)\n })\n }\n\n const removeLabel = () => {\n setSaveCellStatus(\"loading\")\n fetch(`/api/planning/cell/${cell.id}/label`, { method: \"DELETE\" }).then(\n () => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n snackbarText(\"Het label is verwijderd\")\n snackbarVisible(true)\n }\n )\n }\n\n const saveNote = () => {\n return fetch(`/api/planning/cell/${cell.id}/note`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(note),\n }).then(() => {\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n })\n }\n\n const removeNote = () => {\n setSaveCellStatus(\"loading\")\n fetch(`/api/planning/cell/${cell.id}/note`, { method: \"DELETE\" }).then(\n () => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n snackbarText(\"De notitie is verwijderd\")\n snackbarVisible(true)\n }\n )\n }\n\n const assignTeacherToCell = (id: number) => {\n setSaveCellStatus(\"loading\")\n fetch(`/api/planning/cell/${cell.id}/teacher`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ id: id }),\n }).then(() => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n mutate(`/api/planning/cell/${cell.id}/available-teachers`)\n snackbarText(\"De docent is toegewezen\")\n snackbarVisible(true)\n })\n }\n\n const removeTeacherFromCell = (id: number) => {\n setSaveCellStatus(\"loading\")\n fetch(`/api/planning/cell/${cell.id}/teacher`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ id: id }),\n }).then(() => {\n setSaveCellStatus(\"success\")\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n )\n mutate(\n `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/notes`\n )\n mutate(`/api/planning/cell/${cell.id}/available-teachers`)\n snackbarText(\"De docent is uit de cell verwijderd\")\n snackbarVisible(true)\n })\n }\n\n return (\n
\n
\n \n {course.name}\n \n \n \n Belasting:\n {dataWorkload ? (\n ` ${dataWorkload.workload} ${\n dataWorkload.workload > 1 ? \"uren\" : \"uur\"\n }`\n ) : (\n \n )}\n \n \n saveCell()}\n >\n Sla wijzigingen op\n \n \n
\n \n
\n
\n \n {cell.teachers.length > 0 && dataWorkload ? (\n <>\n {cell.teachers.map((teacher, key) => {\n return (\n \n \n \n \n {dataWorkload ? (\n `${\n teacher.available_hours +\n ((teacher.workload_override as unknown) as number) +\n dataWorkload.workload\n } ⮕ ${\n teacher.available_hours +\n ((teacher.workload_override as unknown) as number) -\n (typeof teacherWorkloadOverrides[key] === \"number\"\n ? ((teacherWorkloadOverrides[\n key\n ] as unknown) as number)\n : 0)\n }`\n ) : (\n \n )}\n \n handleWorkloadOverrideChange(e, key)}\n />\n removeTeacherFromCell(teacher.id)}\n >\n \n \n \n \n )\n })}\n \n ) : (\n \n \n \n )}\n \n \n setSearchTerm(e.target.value)}\n type=\"text\"\n variant=\"outlined\"\n label=\"Docentcode\"\n size=\"small\"\n style={{ marginBottom: \"12px\" }}\n />\n
\n {dataAvailableTeachers ? (\n }>\n {teams.length > 0 ? (\n <>\n {teams.map((team) => (\n \n
    \n {`${team.name}`}\n {team.teachers.length > 0 ? (\n <>\n {team.teachers.map((teacher) => (\n \n assignTeacherToCell(teacher.id)\n }\n button\n key={`item-${team.name}-${teacher.id}`}\n style={{\n backgroundColor:\n teacher.available_hours < 0\n ? hex2rgba(\"#cc0033\", 0.2)\n : \"white\",\n }}\n className=\"available-teachers-list-item\"\n >\n \n {teacher.personnel_code}\n \n \n {dataWorkload &&\n ` ${teacher.available_hours} ⮕ ${\n teacher.available_hours -\n dataWorkload.workload\n }`}\n \n \n ))}\n \n ) : (\n <>\n \n \n \n \n )}\n
\n \n ))}\n \n ) : (\n <>\n \n \n \n \n )}\n
\n ) : (\n \n )}\n
\n
\n \n
\n
\n
\n {dataLabels &&\n dataLabels.map((label, key) => (\n setLabel(label.id)}\n style={{\n background: hex2rgba(label.color, 0.2),\n color: label.color,\n border: `1px solid ${label.color}`,\n }}\n >\n {label.name}\n
\n ))}\n
\n
\n removeLabel()}\n disabled={saveCellStatus.loading}\n fullWidth\n >\n Verwijder label\n \n
\n
\n \n
\n
Notitie
\n {dataNote ? (\n <>\n setNote({ ...note, note: e.target.value })}\n rows={4}\n multiline={true}\n />\n {/* saveNote()}\n >\n Sla op\n */}\n {\n removeNote()\n setNote({\n id: -1,\n note: \"\",\n })\n }}\n >\n Verwijder notitie\n \n \n ) : (\n \n )}\n
\n
\n
\n \n )\n}\n","import \"./Cells.css\"\nimport React, { useEffect, useState } from \"react\"\nimport {\n StudyYearCell,\n StudyYearClassCell,\n StudyYearCoursCell,\n} from \"./StudyYear\"\nimport AddIcon from \"@material-ui/icons/AddRounded\"\nimport { Popover, PopoverOrigin } from \"@material-ui/core\"\nimport { CellOverlay, ClassOverlay, CourseOverlay } from \"./CellOverlays\"\nimport { hex2rgba } from \"../../utils\"\nimport { useRecoilState } from \"recoil\"\nimport { CurrentCellOverlayOpenState } from \"../../state/planning\"\n\nconst popoverOrigin: {\n anchorOrigin: PopoverOrigin\n transformOrigin: PopoverOrigin\n} = {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"center\",\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"center\",\n },\n}\n\ntype HeadCellClassProps = {\n year: number\n op: number\n _class: StudyYearClassCell\n first: boolean\n last: boolean\n length: number\n selectedStudyYear: number[]\n selectedOP: number[]\n classesPlannedInOP: StudyYearClassCell[]\n}\n\nexport type HeadCellClassType = {\n left: boolean\n right: boolean\n update: boolean\n}\n\nexport const HeadCellClass = (props: HeadCellClassProps) => {\n const {\n year,\n op,\n _class,\n first,\n last,\n length,\n selectedStudyYear,\n selectedOP,\n classesPlannedInOP,\n } = props\n const [anchorEl, setAnchorEl] = React.useState(null)\n const [cellType, setCellType] = useState({\n left: false,\n right: false,\n update: false,\n })\n\n const handleClose = () => {\n setAnchorEl(null)\n setCellType({\n left: false,\n right: false,\n update: false,\n })\n }\n\n const open = Boolean(anchorEl)\n\n return (\n <>\n \n
\n {\n if (!first) {\n setCellType({\n ...cellType,\n left: true,\n })\n setAnchorEl(event.currentTarget)\n }\n }}\n />\n {\n setCellType({\n ...cellType,\n update: true,\n })\n setAnchorEl(event.currentTarget)\n }}\n >\n {_class.name}\n
\n {\n if (!last) {\n setCellType({\n ...cellType,\n right: true,\n })\n setAnchorEl(event.currentTarget)\n }\n }}\n />\n \n \n \n \n \n \n )\n}\n\ntype HeadCellCourseProps = {\n year: number\n op: number\n course: StudyYearCoursCell\n first: boolean\n last: boolean\n length: number\n}\n\nexport type HeadCellCourseType = {\n top: boolean\n bottom: boolean\n update: boolean\n}\n\nexport const HeadCellCourse = (props: HeadCellCourseProps) => {\n const { year, op, course, first, last, length } = props\n const [anchorEl, setAnchorEl] = React.useState(null)\n const [cellType, setCellType] = useState({\n top: false,\n bottom: false,\n update: false,\n })\n\n const handleClose = () => {\n setAnchorEl(null)\n setCellType({\n top: false,\n bottom: false,\n update: false,\n })\n }\n\n const open = Boolean(anchorEl)\n\n return (\n <>\n \n
\n {\n if (!first) {\n setCellType({\n ...cellType,\n top: true,\n })\n setAnchorEl(event.currentTarget)\n }\n }}\n />\n {\n setCellType({\n ...cellType,\n update: true,\n })\n setAnchorEl(event.currentTarget)\n }}\n >\n {course.name}\n \n {course.work_method !== \"Standaard\" && course.work_method}\n \n
\n {\n if (!last) {\n setCellType({\n ...cellType,\n bottom: true,\n })\n setAnchorEl(event.currentTarget)\n }\n }}\n />\n \n \n \n \n \n \n )\n}\n\ntype BodyCellProps = {\n cell: StudyYearCell\n course: StudyYearCoursCell\n year: number\n op: number\n}\n\nexport const BodyCell = (props: BodyCellProps) => {\n const { cell, course, year, op } = props\n const [currentCellOverlayOpen, setCurrentCellOverlayOpen] = useRecoilState(\n CurrentCellOverlayOpenState\n )\n const [anchorEl, setAnchorEl] = React.useState(null)\n\n const ref = React.useRef(null)\n\n const handleClose = () => {\n setCurrentCellOverlayOpen(-1)\n }\n\n useEffect(() => {\n setAnchorEl(ref.current)\n }, [])\n\n const teachers = cell && cell.teachers.slice(0, 2)\n const open = currentCellOverlayOpen === cell.id\n\n return (\n <>\n {\n setCurrentCellOverlayOpen(cell.id)\n setAnchorEl(event.currentTarget)\n }}\n ref={ref}\n >\n v.available_hours < 0)\n ? `2px solid #cc0033`\n : cell.label.color\n ? `2px solid ${cell.label.color}`\n : `none`,\n backgroundColor: cell.teachers.some((v) => v.available_hours < 0)\n ? hex2rgba(\"#cc0033\", 0.2)\n : cell.label.color\n ? hex2rgba(cell.label.color, 0.2)\n : \"white\",\n height: \"71px\",\n }}\n >\n {cell &&\n teachers &&\n teachers.map((teacher, key) => (\n \n {teacher.personnel_code}{\" \"}\n {cell.teachers.length > 2 &&\n teachers.length === key + 1 &&\n `, +${cell.teachers.length - 2}`}\n \n ))}\n \n \n \n \n \n \n )\n}\n\ntype CreateCellProps = {\n type: \"class\" | \"course\"\n year: number\n op: number\n selectedStudyYear: number[]\n selectedOP: number[]\n classesPlannedInOP: StudyYearClassCell[]\n}\n\nexport const CreateCell = (props: CreateCellProps) => {\n const {\n type,\n year,\n op,\n selectedStudyYear,\n selectedOP,\n classesPlannedInOP,\n } = props\n const [\n anchorEl,\n setAnchorEl,\n ] = React.useState(null)\n\n const handleClick = (\n event: React.MouseEvent\n ) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const open = Boolean(anchorEl)\n\n return (\n <>\n \n \n \n \n {type === \"class\" ? (\n \n ) : (\n \n )}\n \n \n )\n}\n","import {\n Checkbox,\n CircularProgress,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n} from \"@material-ui/core\"\nimport {\n pdf,\n Page,\n Text,\n View,\n Image,\n Document,\n StyleSheet,\n PDFViewer,\n} from \"@react-pdf/renderer\"\nimport html2canvas from \"html2canvas\"\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { useRecoilState, useRecoilValue } from \"recoil\"\nimport useSWR from \"swr\"\nimport {\n ExportDefaultFooter,\n ExportDefaultHeader,\n pageDefaultStyles,\n ExportPDFButton,\n} from \".\"\nimport { exportPlanningDialogState } from \"../../state/app\"\nimport { currentCurriculumAndKindObject } from \"../../state/planning\"\nimport { FullScreenDialog } from \"../Dialog\"\nimport InformationCard from \"../InformationCard\"\nimport HRLogo from \"../../images/hr-logo-plain@4x.png\"\nimport { Button } from \"../Buttons\"\n\ntype ExportPlanningProps = {\n data: ExportPlanningResponse\n img: string\n}\n\nconst ExportPlanning = (props: ExportPlanningProps) => {\n const { data, img } = props\n\n return (\n <>\n
\n
\n
\n \n {data.curriculum} - {data.institute} - {data.education} -\n Studiejaar {data.study_year} - OP{data.op}\n \n \n {new Date().toLocaleDateString()} -{\" \"}\n {new Date().toLocaleTimeString()}\n \n
\n
\n
\n
\n \n Hogeschool Rotterdam\n \n \n Instituut voor Communicatie, Media en IT\n \n
\n \"HR\"\n
\n
\n
\n \n \n )\n}\n\ntype ExportPlanningDialogProps = {\n year: number\n op: number\n studyYearRef: React.RefObject\n studyYearCellsRef: React.RefObject\n studyYearNotesRef: React.RefObject\n open: boolean\n onClose: () => void\n}\n\ntype ExportPlanningResponse = {\n study_year: string\n op: number\n curriculum: string\n education: string\n institute: string\n}\n\ntype ExportPlanningOptions = {\n notes: boolean\n}\n\nconst ExportPlanningDialog = (props: ExportPlanningDialogProps) => {\n const {\n open,\n onClose,\n year,\n op,\n studyYearRef,\n studyYearCellsRef,\n studyYearNotesRef,\n } = props\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const [options, setOptions] = useState({\n notes: false,\n })\n const exportRef = useRef(null)\n const [img, setImg] = useState(undefined)\n const [canvas, setCanvas] = useState(undefined)\n\n const { data, error } = useSWR(\n open && currentCurriculumAndKind.curriculum && currentCurriculumAndKind.kind\n ? `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}/export`\n : null,\n (url) =>\n fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(options),\n }).then((r) => r.json())\n )\n\n const handleChange = (event: React.ChangeEvent) => {\n setOptions({ ...options, [event.target.name]: event.target.checked })\n }\n\n useEffect(() => {\n if (\n open &&\n studyYearRef.current &&\n studyYearCellsRef.current &&\n studyYearNotesRef.current\n ) {\n html2canvas(studyYearCellsRef.current).then((canvas) => {\n const png = canvas.toDataURL(\"image/png\")\n setImg(png)\n })\n } else {\n setImg(undefined)\n setCanvas(undefined)\n }\n }, [open])\n\n useEffect(() => {\n if (data && img && exportRef.current) {\n if (exportRef.current) {\n html2canvas(exportRef.current).then((canvas) => {\n const png = canvas.toDataURL(\"image/png\")\n setCanvas(png)\n })\n }\n }\n }, [data, img, exportRef])\n\n return (\n <>\n (\n
\n
\n
Exporteer instellingen
\n \n \n \n }\n label=\"Notities\"\n />\n \n \n (\n <>Vink aan wat in de export meegenomen moet worden.\n )}\n style={{ marginTop: \"6px\" }}\n />\n
\n
\n
\n {data && canvas ? (\n \n \n \n ) : (\n \n )}\n
\n {error ? (\n
\n Er is een probleem met het genereren van de PDF.\n
\n ) : data && img ? (\n
\n \n
\n ) : (\n
\n \n
\n )}\n
\n
\n )}\n />\n \n )\n}\n\nexport default ExportPlanningDialog\n","import \"./StudyYear.css\"\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n CurrentCellOverlayOpenState,\n currentCurriculumAndKindObject,\n planningViewState,\n} from \"../../state/planning\"\nimport useSWR, { mutate } from \"swr\"\nimport classes from \"*.module.css\"\nimport {\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n makeStyles,\n createMuiTheme,\n ThemeProvider,\n CircularProgress,\n IconButton,\n Tooltip,\n} from \"@material-ui/core\"\nimport { BodyCell, CreateCell, HeadCellClass, HeadCellCourse } from \"./Cells\"\nimport RemoveCircleOutlineRoundedIcon from \"@material-ui/icons/RemoveCircleOutlineRounded\"\nimport FullscreenRoundedIcon from \"@material-ui/icons/FullscreenRounded\"\nimport PhotoCameraRoundedIcon from \"@material-ui/icons/PhotoCameraRounded\"\nimport {\n exportPlanningDialogState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport html2canvas from \"html2canvas\"\nimport ExportPlanningDialog from \"../Export/ExportPlanning\"\n\nexport type StudyYearPlanning = {\n classes: StudyYearClassCell[]\n courses: StudyYearCoursCell[]\n}\n\nexport type StudyYearClassCell = {\n id: number\n pos_x: number\n pos_y: number\n class_id: number\n name: string\n}\n\nexport type StudyYearCoursCell = {\n id: number\n pos_x: number\n pos_y: number\n course_id: number\n name: string\n work_method: string\n cells: StudyYearCell[]\n}\n\nexport type StudyYearCell = {\n id: number\n pos_x: number\n pos_y: number\n label: {\n name: string\n color: string\n }\n note: {\n note: string\n }\n teachers: {\n id: number\n personnel_code: string\n available_hours: number\n workload_override: number | string\n }[]\n}\n\ntype StudyYearProps = {\n position: number\n selectedStudyYear: number[]\n selectedOP: number[]\n year_and_op: {\n year: {\n value: number[]\n setValue: React.Dispatch>\n }\n op: {\n value: number[]\n setValue: React.Dispatch>\n }\n }\n}\n\nexport const StudyYear = (props: StudyYearProps) => {\n const { position, selectedStudyYear, selectedOP, year_and_op } = props\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const [exportPlanningDialog, setExportPlanningDialog] = useRecoilState(\n exportPlanningDialogState\n )\n const studyYearRef = useRef(null)\n const studyYearCellsRef = useRef(null)\n const studyYearNotesRef = useRef(null)\n\n const year = year_and_op.year.value[position]\n const op = year_and_op.op.value[position]\n\n const {\n data: dataCellData,\n error: errorCellData,\n isValidating: isValidatingCellData,\n } = useSWR(\n currentCurriculumAndKind.curriculum &&\n currentCurriculumAndKind.kind &&\n year &&\n op\n ? `/api/planning/${currentCurriculumAndKind.curriculum}/${currentCurriculumAndKind.kind}/${year}/${op}`\n : null\n )\n\n return (\n <>\n {dataCellData && (\n \n )}\n
\n
\n {dataCellData && (\n <>\n \n \n \n \n {dataCellData.classes.map((_class, key) => {\n return (\n \n )\n })}\n \n \n \n \n {dataCellData.courses.map((course, key) => {\n return (\n \n \n {dataCellData.classes.map((_, key) => {\n const index = key + 1\n const cell = course.cells.find(\n (c) => c.pos_x === index\n )\n\n return (\n \n )\n })}\n \n )\n })}\n \n \n \n \n \n \n )}\n \n \n
\n
\n
\n
\n \n
\n
\n \n setExportPlanningDialog({ ...exportPlanningDialog, expanded: false })\n }\n />\n \n )\n}\n\ntype StudyYearActionsProps = {\n position: StudyYearProps[\"position\"]\n year_and_op: StudyYearProps[\"year_and_op\"]\n}\n\nconst StudyYearActions = (props: StudyYearActionsProps) => {\n const { position, year_and_op } = props\n const setExportPlanningDialog = useSetRecoilState(exportPlanningDialogState)\n const planningView = useRecoilValue(planningViewState)\n\n const theme = createMuiTheme({\n palette: {\n type: \"dark\",\n primary: {\n light: \"#fff\",\n main: \"#fff\",\n dark: \"#fff\",\n contrastText: \"#fff\",\n },\n },\n })\n\n return (\n
\n \n
\n {planningView === \"op\" ? (\n <>\n \n {\n year_and_op.year.setValue([\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n ])\n }}\n >\n Studiejaar 1\n Studiejaar 2\n Studiejaar 3\n Studiejaar 4\n \n \n OP{year_and_op.op.value[position]}\n \n ) : (\n <>\n Studiejaar {year_and_op.year.value[position]}\n \n {\n year_and_op.op.setValue([\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n ])\n }}\n >\n OP1\n OP2\n OP3\n OP4\n \n \n \n )}\n
\n
\n \n \n setExportPlanningDialog({\n year: year_and_op.year.value[position],\n op: year_and_op.op.value[position],\n expanded: true,\n })\n }\n >\n \n \n \n
\n
\n
\n )\n}\n\ndeclare module \"@material-ui/core/styles/createMuiTheme\" {\n interface Theme {\n status: {\n danger: string\n }\n }\n interface ThemeOptions {\n status?: {\n danger?: string\n }\n }\n}\n\nconst TableLead = (\n props: Omit\n) => {\n const { position, year_and_op } = props\n const planningView = useRecoilValue(planningViewState)\n\n const theme = createMuiTheme({\n palette: {\n type: \"dark\",\n primary: {\n light: \"#fff\",\n main: \"#fff\",\n dark: \"#fff\",\n contrastText: \"#fff\",\n },\n },\n })\n\n return (\n \n \n
\n Studiejaar {year_and_op.year.value[position]} - OP\n {year_and_op.op.value[position]}\n {/* {planningView === \"op\" ? (\n <>\n \n {\n year_and_op.year.setValue([\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n ])\n }}\n >\n Studiejaar 1\n Studiejaar 2\n Studiejaar 3\n Studiejaar 4\n \n \n OP{year_and_op.op.value[position]}\n \n ) : (\n <>\n Studiejaar {year_and_op.year.value[position]}\n \n {\n year_and_op.op.setValue([\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n e.target.value as number,\n ])\n }}\n >\n OP1\n OP2\n OP3\n OP4\n \n \n \n )} */}\n
\n \n
\n )\n}\n\ntype StudyYearNotesProps = {\n curriculum: string\n kind: string\n year: number\n op: number\n ref: React.RefObject\n}\n\ntype Notes = {\n id: number\n cell_id: number\n date: Date\n note: string\n _class_name: string\n course_name: string\n teachers: string[]\n}\n\nconst StudyYearNotes = React.forwardRef(\n (props, ref) => {\n const { curriculum, kind, year, op } = props\n\n const currentCellOverlayOpen = useSetRecoilState(\n CurrentCellOverlayOpenState\n )\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n\n const {\n data: dataNotes,\n error: errorNotes,\n isValidating: isValidatingNotes,\n } = useSWR(\n curriculum && kind && year && op\n ? `/api/planning/${curriculum}/${kind}/${year}/${op}/notes`\n : null\n )\n\n const removeNote = (id: number) => {\n fetch(`/api/planning/cell/${id}/note`, { method: \"DELETE\" }).then(() => {\n mutate(`/api/planning/${curriculum}/${kind}/${year}/${op}`)\n mutate(`/api/planning/${curriculum}/${kind}/${year}/${op}/notes`)\n snackbarText(\"De notitie is verwijderd\")\n snackbarVisible(true)\n })\n }\n\n return (\n
\n
Notities
\n {dataNotes ? (\n dataNotes.length > 0 ? (\n <>\n {dataNotes.map((note, key) => (\n
\n
\n \n {note._class_name} - {note.course_name}\n \n \n {note.teachers.length > 0\n ? note.teachers.join(\", \")\n : \"Geen docent\"}\n \n removeNote(note.cell_id)}\n >\n \n \n
\n currentCellOverlayOpen(note.cell_id)}\n >\n {note.note}\n
\n
\n ))}\n \n ) : (\n \n Geen notities\n \n )\n ) : (\n \n \n
\n )}\n \n )\n }\n)\n","import React, { useEffect, useState } from \"react\"\nimport { useRecoilValue } from \"recoil\"\nimport useSWR from \"swr\"\nimport {\n currentCurriculumAndKindObject,\n planningViewState,\n} from \"../../state/planning\"\nimport { StudyYear } from \"./StudyYear\"\n\nexport const Planning = () => {\n const currentCurriculumAndKind = useRecoilValue(\n currentCurriculumAndKindObject\n )\n const planningView = useRecoilValue(planningViewState)\n const [selectedStudyYear, setSelectedStudyYear] = useState([])\n const [selectedOP, setSelectedOP] = useState([])\n\n useEffect(() => {\n if (planningView === \"study-year\") {\n setSelectedStudyYear([1, 2, 3, 4])\n setSelectedOP([1, 1, 1, 1])\n } else {\n setSelectedStudyYear([1, 1, 1, 1])\n setSelectedOP([1, 2, 3, 4])\n }\n }, [planningView])\n\n return (\n
\n \n \n \n \n
\n )\n}\n","import React from \"react\"\nimport { TopbarPlanning, Sidebar } from \"../../components/Layout\"\nimport { useHistory } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport {\n createDialogState,\n currentCurriculumState,\n searchbarState,\n} from \"../../state/app\"\nimport { Planning } from \"../../components/Planning\"\n\nimport \"./Planningsoverview.css\"\n\nexport const Planningsoverview = () => {\n const setCurrentCurriculum = useSetRecoilState(currentCurriculumState)\n const setSearchbar = useSetRecoilState(searchbarState)\n const setCreateDialog = useSetRecoilState(createDialogState)\n\n let history = useHistory()\n history.listen(() => {\n // setCurrentCurriculum({ id: -1, name: \"\" })\n setCreateDialog(false)\n setSearchbar(\"\")\n })\n\n return (\n
\n {/* */}\n \n \n
\n )\n}\n","import React from \"react\"\nimport useSWR, { mutate } from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n currentCurriculumState,\n searchbarState,\n selectedCurriculumForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n createStyles,\n lighten,\n makeStyles,\n Theme,\n} from \"@material-ui/core/styles\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport {\n Checkbox,\n Divider,\n IconButton,\n TableContainer,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Dialog } from \"../Dialog\"\nimport { ExceptionResponse, useFetchState } from \"../../utils\"\nimport { useHistory } from \"react-router-dom\"\nimport { Button } from \"../Buttons\"\n\ntype TeacherType = {\n id: number\n personnel_code: string\n}\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof TeacherType\n label: string\n numeric: boolean\n}\n\nconst headCells: HeadCell[] = [\n {\n id: \"personnel_code\",\n numeric: false,\n disablePadding: false,\n label: \"Docentcode\",\n },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n Docenten\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\nexport const TeacherTable = () => {\n const setSelectedCurriculumForDetails = useSetRecoilState(\n selectedCurriculumForDetailsState\n )\n const currentCurriculum = useRecoilValue(currentCurriculumState)\n const searchQuery = useRecoilValue(searchbarState)\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const { data, error } = useSWR(\n currentCurriculum.id !== -1\n ? `/api/teacher/all/${currentCurriculum.id}`\n : null\n )\n const [deleteTeacherStatus, setDeleteTeacherStatus] = useFetchState()\n const [selected, setSelected] = React.useState([])\n const [\n deleteConfirmationDialog,\n setDeleteConfirmationDialog,\n ] = React.useState(false)\n let history = useHistory()\n\n if (!data) return \n\n if (error) return \n\n const dataFiltered = data.filter((c) =>\n c.personnel_code.toLowerCase().includes(searchQuery.toLowerCase())\n )\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = dataFiltered.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (\n event: React.MouseEvent,\n teacher: TeacherType\n ) => {\n const selectedIndex = selected.indexOf(teacher)\n let newSelected: TeacherType[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, teacher)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const deleteSelected = () => {\n setDeleteTeacherStatus(\"loading\")\n const payload = selected\n fetch(\"/api/teacher/delete-multiple\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then(async (r) => {\n if (r.ok) {\n setDeleteTeacherStatus(\"success\")\n setDeleteConfirmationDialog(false)\n setSnackbarText(\n `De geselecteerde ${\n selected.length > 1 ? \"docenten zijn\" : \"docent is\"\n } verwijderd.`\n )\n setSnackbarVisible(true)\n setSelected([])\n mutate(`/api/teacher/all/${currentCurriculum.id}`)\n } else {\n setDeleteTeacherStatus(\"error\")\n const json = (await r.json()) as ExceptionResponse\n console.log(json)\n }\n })\n .catch((e) => {\n setDeleteTeacherStatus(\"error\")\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de ${\n selected.length > 1 ? \"docenten\" : \"docent\"\n }.`\n )\n setSnackbarVisible(true)\n })\n }\n\n const isSelected = (teacher: TeacherType) => selected.indexOf(teacher) !== -1\n\n return (\n <>\n \n \n \n \n \n \n {data.length > 0 ? (\n dataFiltered.length > 0 ? (\n <>\n {dataFiltered.map((teacher, key) => {\n const isItemSelected = isSelected(teacher)\n\n return (\n \n \n handleClick(event, teacher)}\n />\n \n \n history.push(`/teachers/${teacher.id}`)\n }\n >\n {teacher.personnel_code}\n \n \n )\n })}\n \n ) : (\n \n \n Geen resultaten\n \n \n )\n ) : (\n \n \n Er zijn geen docenten. Maak een docent aan.\n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`${selected.length > 1 ? \"Docenten\" : \"Docent\"} verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde{\" \"}\n {selected.length > 1 ? \"docenten\" : \"docent\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder {selected.length > 1 ? \"docenten\" : \"docent\"}\n \n \n )}\n />\n \n )\n}\n","import { object, string, number, bool, mixed, array, boolean } from \"yup\"\nimport {\n Organisation,\n TeacherDetailsType,\n Team,\n Position,\n TeacherAanstellingType,\n MOTTask,\n} from \".\"\nimport { newMOTTaskType } from \"./MOT\"\n\nexport const teacherDetailsValidationObject = object({\n personnel_code: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n first_name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n last_name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n isPlaceholder: bool().required(),\n organisation: object({\n id: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n }).defined(),\n team: object({\n id: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n }).defined(),\n position: object({\n id: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n }).defined(),\n})\n\nexport const teacherAanstellingValidationObject = object<\n Omit\n>({\n months_active: number()\n .min(0, \">= 0\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n fte_op1: number()\n .min(0, \">= 0\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n fte_op2: number()\n .min(0, \">= 0\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n fte_op3: number()\n .min(0, \">= 0\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n fte_op4: number()\n .min(0, \">= 0\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n organisational: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n professional: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n di_op1: number().min(0, \">= 0\").typeError(\"Dit veld is verplicht\").required(),\n di_op2: number().min(0, \">= 0\").typeError(\"Dit veld is verplicht\").required(),\n di_op3: number().min(0, \">= 0\").typeError(\"Dit veld is verplicht\").required(),\n di_op4: number().min(0, \">= 0\").typeError(\"Dit veld is verplicht\").required(),\n})\n\nexport const teacherAanstellingMOTValidationObject = object({\n id: number().required(),\n name: string().required(\"Dit veld is verplicht\"),\n type: string().required(\"Dit veld is verplicht\"),\n hours: number()\n .typeError(\"Dit veld is verplicht\")\n .min(0, \">= 0\")\n .required(\"Dit veld is verplicht\"),\n active_op1: boolean().required(),\n active_op2: boolean().required(),\n active_op3: boolean().required(),\n active_op4: boolean().required(),\n})\n\nexport const teacherAanstellingMOTArrayValidationObject = array().of(\n teacherAanstellingMOTValidationObject\n)\n\nexport const newMOTTaskValidationObject = object>({\n name: string().required(\"Dit veld is verplicht\"),\n type: string().required(\"Dit veld is verplicht\"),\n hours: number()\n .min(0, \"Uren kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n active_op1: boolean().required(),\n active_op2: boolean().required(),\n active_op3: boolean().required(),\n active_op4: boolean().required(),\n})\n","import React, { useEffect, useState } from \"react\"\nimport useSWR, { mutate } from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n currentCurriculumState,\n selectedCurriculumForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n createStyles,\n lighten,\n makeStyles,\n Theme,\n} from \"@material-ui/core/styles\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport {\n Checkbox,\n Divider,\n IconButton,\n Paper,\n TableContainer,\n Toolbar,\n Tooltip,\n Typography,\n TextField,\n FormControl,\n Select,\n MenuItem,\n FormGroup,\n FormControlLabel,\n} from \"@material-ui/core\"\nimport { Dialog } from \"../Dialog\"\nimport Button from \"@material-ui/core/Button/Button\"\nimport AddIcon from \"@material-ui/icons/AddRounded\"\nimport {\n checkValidationErrors,\n DialogError,\n Errors,\n ExceptionResponse,\n ExceptionResponseState,\n} from \"../../utils\"\nimport { newMOTTaskValidationObject } from \"./ValidationObjects\"\nimport { ValidationError } from \"yup\"\nimport { MOTTask } from \".\"\nimport { Autocomplete } from \"@material-ui/lab\"\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof MOTTask\n label: string\n numeric: boolean\n minWidth: number\n}\n\nconst headCells: HeadCell[] = [\n {\n id: \"name\",\n numeric: false,\n disablePadding: false,\n label: \"Taak\",\n minWidth: 200,\n },\n {\n id: \"type\",\n numeric: false,\n disablePadding: false,\n label: \"Type\",\n minWidth: 150,\n },\n {\n id: \"hours\",\n numeric: true,\n disablePadding: false,\n label: \"Uren\",\n minWidth: 75,\n },\n {\n id: \"active_op1\",\n numeric: false,\n disablePadding: false,\n label: \"OP1\",\n minWidth: 40,\n },\n {\n id: \"active_op2\",\n numeric: false,\n disablePadding: false,\n label: \"OP2\",\n minWidth: 40,\n },\n {\n id: \"active_op3\",\n numeric: false,\n disablePadding: false,\n label: \"OP3\",\n minWidth: 40,\n },\n {\n id: \"active_op4\",\n numeric: false,\n disablePadding: false,\n label: \"OP4\",\n minWidth: 40,\n },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n MOT taken\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\ntype CurriculumMOTTableProps = {\n errors: { message: string; index: number; path: string }[]\n mot_tasks: MOTTask[]\n setMOTTasks: (mot_tasks: MOTTask[]) => void\n}\n\nexport type newMOTTaskType = MOTTask\n\nexport const CreateTeacherDialogMOTTable = (props: CurriculumMOTTableProps) => {\n const { errors, mot_tasks, setMOTTasks } = props\n const currentCurriculum = useRecoilValue(currentCurriculumState)\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [selected, setSelected] = useState([])\n const [createMOTTaskDialog, setCreateMOTTaskDialog] = useState(false)\n const [newMOTTask, setNewMOTTask] = useState({\n id: -1,\n name: \"\",\n type: \"Organisatorische\",\n hours: 0,\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n const [newMOTTaskErrors, setnewMOTTaskErrors] = useState<\n Errors[]\n >([])\n const [\n newMOTTaskCreateErrorMessage,\n setNewMOTTaskCreateErrorMessage,\n ] = useState({\n status: -1,\n statusText: \"\",\n type: \"\",\n message: \"\",\n })\n const [deleteConfirmationDialog, setDeleteConfirmationDialog] = useState<\n boolean\n >(false)\n const [MOTOptions, setMOTOptions] = useState([])\n\n const { data: dataMOTOptions, error: errorMOTOptions } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/mot/new-teacher-options`\n : null\n )\n\n useEffect(() => {\n if (!createMOTTaskDialog) {\n setNewMOTTask({\n id: -1,\n name: \"\",\n type: \"Organisatorische\",\n hours: 0,\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n setnewMOTTaskErrors([])\n } else {\n if (typeof dataMOTOptions !== \"undefined\") {\n setMOTOptions(dataMOTOptions)\n }\n }\n }, [createMOTTaskDialog])\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = mot_tasks.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (event: React.MouseEvent, task: MOTTask) => {\n const selectedIndex = selected.indexOf(task)\n let newSelected: MOTTask[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, task)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const handleChange = (task: MOTTask) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`[${task.id}] ${task.name}: ${task.hours}`)\n\n let new_mot_tasks = mot_tasks\n const index = new_mot_tasks.findIndex((t) => t.id === task.id)\n new_mot_tasks[index] = task\n\n setMOTTasks(new_mot_tasks)\n }\n\n const resetNewState = () => {\n setNewMOTTask({\n id: -1,\n name: \"\",\n hours: 0,\n type: \"Organisatorische\",\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n }\n\n const createMOTTask = () => {\n newMOTTaskValidationObject\n .validate(newMOTTask, { abortEarly: false })\n .then(() => {\n let arr = mot_tasks\n\n arr.push({\n id: Math.floor(Math.random() * 10000),\n name: newMOTTask.name,\n type: newMOTTask.type,\n hours: newMOTTask.hours,\n active_op1: newMOTTask.active_op1,\n active_op2: newMOTTask.active_op2,\n active_op3: newMOTTask.active_op3,\n active_op4: newMOTTask.active_op4,\n })\n setCreateMOTTaskDialog(false)\n setNewMOTTask({\n id: -1,\n name: \"\",\n type: \"Organisatorische\",\n hours: 0,\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n\n setMOTTasks(arr)\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setnewMOTTaskErrors)\n )\n }\n\n const deleteSelected = () => {\n let arr = mot_tasks.filter((a) => !selected.includes(a))\n setDeleteConfirmationDialog(false)\n setSelected([])\n\n setMOTTasks(arr)\n }\n\n const isSelected = (task: MOTTask) => selected.indexOf(task) !== -1\n\n return (\n \n \n \n \n \n \n \n {mot_tasks.length > 0 ? (\n <>\n \n \n setCreateMOTTaskDialog(true)}>\n \n \n \n \n Maak een nieuwe MOT taak aan\n \n \n {mot_tasks.map((task, key) => {\n const isItemSelected = isSelected(task)\n\n return (\n \n \n handleClick(event, task)}\n />\n \n \n \n handleChange({\n ...task,\n name: e.target.value,\n })\n }\n type=\"text\"\n error={errors.some(\n (e) => e.index === key && e.path === \"name\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"name\"\n )?.message\n }\n />\n \n \n \n {\n handleChange({\n ...task,\n type: e.target.value as string,\n })\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n \n \n \n handleChange({\n ...task,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n type=\"number\"\n error={errors.some(\n (e) => e.index === key && e.path === \"hours\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"hours\"\n )?.message\n }\n />\n \n \n \n handleChange({\n ...task,\n active_op1: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op2: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op3: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op4: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n )\n })}\n \n ) : (\n <>\n \n \n setCreateMOTTaskDialog(true)}>\n \n \n \n \n Maak een nieuwe MOT taak aan\n \n \n \n \n Er zijn geen MOT taken. Maak een MOT taak aan.\n \n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`MOT ${selected.length > 1 ? \"taken\" : \"taak\"} verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde MOT{\" \"}\n {selected.length > 1 ? \"taken\" : \"taak\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder MOT {selected.length > 1 ? \"taken\" : \"taak\"}\n \n \n )}\n />\n setCreateMOTTaskDialog(false)}\n title={`Nieuwe MOT taak`}\n content={() => (\n
\n
\n option.type}\n getOptionLabel={(option) => option.name}\n onChange={(e, v, r) => {\n if (v) {\n setNewMOTTask(v)\n } else {\n resetNewState()\n }\n }}\n renderInput={(params) => (\n \n )}\n fullWidth\n />\n
\n
\n

Kies een uit het curriculum of maak een nieuwe aan

\n
\n
\n \n setNewMOTTask({ ...newMOTTask, name: e.target.value })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"name\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"name\")?.message\n }\n fullWidth\n />\n
\n
\n \n {\n handleChange({\n ...newMOTTask,\n type: e.target.value as string,\n })\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n
\n
\n \n setNewMOTTask({\n ...newMOTTask,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"hours\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"hours\")\n ? newMOTTaskErrors.find((e) => e.path === \"hours\")?.message\n : \"Uren worden per OP toegewezen\"\n }\n fullWidth\n />\n
\n \n \n \n setNewMOTTask({\n ...newMOTTask,\n active_op1: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP1\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op2: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP2\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op3: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP3\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op4: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP4\"\n labelPlacement=\"top\"\n />\n \n
\n {newMOTTaskCreateErrorMessage.message.length > 0 && (\n \n )}\n \n )}\n actions={() => (\n <>\n \n createMOTTask()}\n color=\"primary\"\n variant=\"contained\"\n >\n Maak taak aan\n \n \n )}\n />\n
\n )\n}\n","import \"./CreateTeacherDialog.css\"\nimport {\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n InputLabel,\n MenuItem,\n Select,\n Step,\n StepLabel,\n Stepper,\n TextField,\n} from \"@material-ui/core\"\nimport { Autocomplete } from \"@material-ui/lab\"\nimport React, { useEffect, useState } from \"react\"\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport {\n createDialogState,\n currentCurriculumState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n checkArrayValidationErrors,\n checkValidationErrors,\n Errors,\n ErrorsArray,\n ExceptionResponse,\n useFetchState,\n} from \"../../utils\"\nimport { Dialog } from \"../Dialog\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Loader } from \"../Loader\"\nimport { CreateTeacherDialogMOTTable } from \"./MOT\"\nimport {\n teacherAanstellingMOTArrayValidationObject,\n teacherAanstellingMOTValidationObject,\n teacherAanstellingValidationObject,\n teacherDetailsValidationObject,\n} from \"./ValidationObjects\"\nimport { ValidationError } from \"yup\"\nimport { Button } from \"../Buttons\"\n\nexport type TeacherDetailsType = {\n personnel_code: string\n first_name: string\n last_name: string\n isPlaceholder: boolean\n organisation: Organisation\n team: Team\n position: Position\n}\n\nexport type Organisation = {\n id: number\n name: string\n}\n\nexport type Team = {\n id: number\n name: string\n}\n\nexport type Position = {\n id: number\n name: string\n}\n\nexport type TeacherAanstellingType = {\n contract: \"Vast\" | \"Tijdelijk\"\n months_active: number\n fte_op1: number\n fte_op2: number\n fte_op3: number\n fte_op4: number\n di_op1: number\n di_op2: number\n di_op3: number\n di_op4: number\n organisational: number\n professional: number\n mot_tasks: MOTTask[]\n}\n\nexport type MOTTask = {\n id: number\n name: string\n type: string\n hours: number\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\nexport type defaultFTE = {\n fte: number\n}\n\nexport type defaultDI = {\n di: number\n}\n\nexport type defaultOrganisational = {\n organisational: number\n}\n\nexport type defaultProfessional = {\n professional: number\n}\n\nconst getSteps = () => {\n return [\"Docent details\", \"Aanstelling\"]\n}\n\nexport const CreateTeacherDialog = () => {\n const [createDialog, setCreateDialog] = useRecoilState(createDialogState)\n const currentCurriculum = useRecoilValue(currentCurriculumState)\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [activeStep, setActiveStep] = useState(0)\n const [nextButtonDisabled, setNextButtonDisabled] = useState(true)\n\n const [createTeacherStatus, setCreateTeacherStatus] = useFetchState()\n const [teacherDetails, setTeacherDetails] = useState({\n personnel_code: \"\",\n first_name: \"\",\n last_name: \"\",\n isPlaceholder: false,\n organisation: { id: -1, name: \"\" },\n team: { id: -1, name: \"\" },\n position: { id: -1, name: \"\" },\n })\n const [teacherAanstelling, setTeacherAanstelling] = useState<\n TeacherAanstellingType\n >({\n contract: \"Vast\",\n months_active: 12,\n fte_op1: -1,\n fte_op2: -1,\n fte_op3: -1,\n fte_op4: -1,\n di_op1: -1,\n di_op2: -1,\n di_op3: -1,\n di_op4: -1,\n organisational: -1,\n professional: -1,\n mot_tasks: [],\n })\n const [detailsErrors, setDetailsErrors] = useState<\n Errors[]\n >([])\n const [aanstellingErrors, setAanstellingErrors] = useState<\n Errors[]\n >([])\n const [errorsMOT, setErrorsMOT] = useState[]>([])\n\n const {\n data: dataAvailableOrganisations,\n error: errorAvailableOrganisations,\n } = useSWR(`api/teacher/available-organisations`)\n const { data: dataAvailableTeams, error: errorAvailableTeams } = useSWR<\n Team[]\n >(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/available-teams`\n : null\n )\n const {\n data: dataAvailablePositions,\n error: errorAvailablePositions,\n } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/available-positions`\n : null\n )\n const { data: dataDefaultFTE, error: errorDefaultFTE } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/default-fte`\n : null\n )\n const { data: dataDefaultDI, error: errorDefaultDI } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/default-di`\n : null\n )\n const {\n data: dataDefaultOrganisational,\n error: errorDefaultOrganisational,\n } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/default-organisational`\n : null\n )\n const {\n data: dataDefaultProfessional,\n error: errorDefaultProfessional,\n } = useSWR(\n currentCurriculum.id !== -1\n ? `api/teacher/${currentCurriculum.id}/default-professional`\n : null\n )\n\n useEffect(() => {\n if (createDialog) {\n setTeacherAanstelling({\n ...teacherAanstelling,\n fte_op1: dataDefaultFTE ? dataDefaultFTE.fte : -1,\n fte_op2: dataDefaultFTE ? dataDefaultFTE.fte : -1,\n fte_op3: dataDefaultFTE ? dataDefaultFTE.fte : -1,\n fte_op4: dataDefaultFTE ? dataDefaultFTE.fte : -1,\n di_op1: dataDefaultDI ? dataDefaultDI.di : -1,\n di_op2: dataDefaultDI ? dataDefaultDI.di : -1,\n di_op3: dataDefaultDI ? dataDefaultDI.di : -1,\n di_op4: dataDefaultDI ? dataDefaultDI.di : -1,\n organisational: dataDefaultOrganisational\n ? dataDefaultOrganisational.organisational\n : -1,\n professional: dataDefaultProfessional\n ? dataDefaultProfessional.professional\n : -1,\n })\n } else {\n setActiveStep(0)\n setTeacherDetails({\n personnel_code: \"\",\n first_name: \"\",\n last_name: \"\",\n isPlaceholder: false,\n organisation: { id: -1, name: \"\" },\n team: { id: -1, name: \"\" },\n position: { id: -1, name: \"\" },\n })\n setTeacherAanstelling({\n contract: \"Vast\",\n months_active: 12,\n fte_op1: -1,\n fte_op2: -1,\n fte_op3: -1,\n fte_op4: -1,\n di_op1: -1,\n di_op2: -1,\n di_op3: -1,\n di_op4: -1,\n organisational: -1,\n professional: -1,\n mot_tasks: [],\n })\n }\n }, [createDialog, dataDefaultFTE, dataDefaultDI])\n\n useEffect(() => {\n teacherDetailsValidationObject\n .validate(teacherDetails, { abortEarly: false })\n .then(() => setNextButtonDisabled(false))\n .catch(() => setNextButtonDisabled(true))\n }, [teacherDetails])\n\n const handleChangeDetails = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setTeacherDetails({\n ...teacherDetails,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleChangeNumberDetails = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setTeacherDetails({\n ...teacherDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const handleChangeCheckboxDetails = (\n event: React.ChangeEvent\n ) => {\n setTeacherDetails({\n ...teacherDetails,\n [event.target.name]: event.target.checked,\n })\n }\n\n const handleChangeNumberAanstelling = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setTeacherAanstelling({\n ...teacherAanstelling,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const createTeacher = () => {\n teacherDetailsValidationObject\n .validate(teacherDetails, { abortEarly: false })\n .then(() => {\n setDetailsErrors([])\n teacherAanstellingValidationObject\n .validate(teacherAanstelling, { abortEarly: false })\n .then(() => {\n setAanstellingErrors([])\n teacherAanstellingMOTArrayValidationObject\n .validate(teacherAanstelling.mot_tasks, { abortEarly: false })\n .then(() => {\n setCreateTeacherStatus(\"loading\")\n setErrorsMOT([])\n fetch(`/api/teacher/${currentCurriculum.id}/create`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...teacherDetails,\n ...teacherAanstelling,\n }),\n }).then(async (r) => {\n if (r.ok) {\n setCreateTeacherStatus(\"success\")\n snackbarText(\"De docent is aangemaakt\")\n snackbarVisible(true)\n setCreateDialog(false)\n mutate(`/api/teacher/all/${currentCurriculum.id}`)\n } else {\n setCreateTeacherStatus(\"error\")\n const json = await r.json()\n console.log(json)\n snackbarText(\n \"Er was een probleem bij het aanmaken van de docent\"\n )\n snackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) => {\n console.log(e)\n checkArrayValidationErrors(e, setErrorsMOT)\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setAanstellingErrors)\n )\n })\n .catch((e: ValidationError) => checkValidationErrors(e, setDetailsErrors))\n }\n\n return (\n setCreateDialog(false)}\n title=\"Maak docent aan\"\n content={() => (\n <>\n \n {getSteps().map((label) => (\n \n {label}\n \n ))}\n \n {activeStep === 0 ? (\n <>\n
\n
\n
\n handleChangeDetails(e)}\n error={detailsErrors.some(\n (e) => e.path === \"personnel_code\"\n )}\n helperText={\n detailsErrors.find((e) => e.path === \"personnel_code\")\n ?.message\n }\n />\n
\n
\n handleChangeDetails(e)}\n error={detailsErrors.some((e) => e.path === \"first_name\")}\n helperText={\n detailsErrors.find((e) => e.path === \"first_name\")\n ?.message\n }\n />\n handleChangeDetails(e)}\n error={detailsErrors.some((e) => e.path === \"last_name\")}\n helperText={\n detailsErrors.find((e) => e.path === \"last_name\")\n ?.message\n }\n />\n
\n
\n {!dataAvailablePositions ? (\n \n ) : errorAvailablePositions ? (\n \n ) : (\n \n v !== null\n ? setTeacherDetails({\n ...teacherDetails,\n position: v,\n })\n : setTeacherDetails({\n ...teacherDetails,\n position: { id: -1, name: \"\" },\n })\n }\n options={dataAvailablePositions}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen resultaten\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n
\n
\n
\n {!dataAvailableOrganisations ? (\n \n ) : errorAvailableOrganisations ? (\n \n ) : (\n \n v !== null\n ? setTeacherDetails({\n ...teacherDetails,\n organisation: v,\n })\n : setTeacherDetails({\n ...teacherDetails,\n organisation: { id: -1, name: \"\" },\n })\n }\n options={dataAvailableOrganisations}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen resultaten\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n
\n {!dataAvailableTeams ? (\n \n ) : errorAvailableTeams ? (\n \n ) : (\n \n v !== null\n ? setTeacherDetails({ ...teacherDetails, team: v })\n : setTeacherDetails({\n ...teacherDetails,\n team: { id: -1, name: \"\" },\n })\n }\n options={dataAvailableTeams}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen resultaten\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n
\n \n }\n label=\"Docent is een placeholder:\"\n labelPlacement=\"start\"\n />\n
\n
\n
\n \n ) : activeStep === 1 ? (\n <>\n
\n
\n
\n
\n FTE per periode (Standaard per OP:{\" \"}\n {typeof dataDefaultFTE !== \"undefined\" &&\n dataDefaultFTE.fte}\n )\n
\n
\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"fte_op1\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"fte_op1\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"fte_op2\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"fte_op2\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"fte_op3\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"fte_op3\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"fte_op4\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"fte_op4\")\n ?.message\n }\n />\n
\n
\n
\n
\n {/* handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"months_active\"\n )}\n helperText={\n aanstellingErrors.find(\n (e) => e.path === \"months_active\"\n )?.message\n }\n /> */}\n
\n {/*
\n DI per periode (Standaard per OP:{\" \"}\n {typeof dataDefaultDI !== \"undefined\" && dataDefaultDI.di}\n )\n
\n
\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"di_op1\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"di_op1\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"di_op2\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"di_op2\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"di_op3\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"di_op3\")\n ?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"di_op4\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"di_op4\")\n ?.message\n }\n />\n
*/}\n
\n
\n
\n \n \n Type aanstelling\n \n \n setTeacherAanstelling({\n ...teacherAanstelling,\n contract: e.target\n .value as TeacherAanstellingType[\"contract\"],\n })\n }\n >\n Vast\n Tijdelijk\n \n \n
\n
\n
\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"organisational\"\n )}\n helperText={\n aanstellingErrors.find(\n (e) => e.path === \"organisational\"\n )?.message\n }\n />\n handleChangeNumberAanstelling(e)}\n error={aanstellingErrors.some(\n (e) => e.path === \"professional\"\n )}\n helperText={\n aanstellingErrors.find((e) => e.path === \"professional\")\n ?.message\n }\n />\n
\n
\n
\n \n
\n \n setTeacherAanstelling({ ...teacherAanstelling, mot_tasks })\n }\n />\n
\n \n ) : (\n <>You're not supposed to be here 🤔\n )}\n \n )}\n actions={() => (\n <>\n
\n setActiveStep(activeStep - 1)}\n disabled={activeStep === 0}\n >\n Terug\n \n \n activeStep === getSteps().length - 1\n ? createTeacher()\n : setActiveStep(activeStep + 1)\n }\n >\n {activeStep === getSteps().length - 1 ? \"Maak aan\" : \"Volgende\"}\n \n
\n \n )}\n />\n )\n}\n","import React from \"react\"\nimport { Topbar } from \"../../components/Layout\"\nimport { useHistory } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport { createDialogState, searchbarState } from \"../../state/app\"\nimport { TeacherTable } from \"../../components/TeacherTable\"\nimport { CreateTeacherDialog } from \"../../components/CreateTeacherDialog\"\n\nexport const Teachers = () => {\n const setSearchbar = useSetRecoilState(searchbarState)\n const setCreateDialog = useSetRecoilState(createDialogState)\n\n let history = useHistory()\n history.listen(() => {\n setCreateDialog(false)\n setSearchbar(\"\")\n })\n\n return (\n
\n \n
\n
\n \n
\n
\n \n
\n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport useSWR, { mutate } from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n currentCurriculumState,\n searchbarState,\n selectedCourseForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n createStyles,\n lighten,\n makeStyles,\n Theme,\n} from \"@material-ui/core/styles\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport {\n Checkbox,\n Divider,\n IconButton,\n TableContainer,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Dialog } from \"../Dialog\"\nimport { Button } from \"../Buttons\"\nimport { ExceptionResponse, useFetchState } from \"../../utils\"\nimport { currentCurriculumAndKindObject } from \"../../state/planning\"\nimport InformationCard from \"../InformationCard\"\n\ntype CourseType = {\n id: number\n code: string\n workmethod: string\n op: string\n}\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof CourseType\n label: string\n numeric: boolean\n}\n\nconst headCells: HeadCell[] = [\n { id: \"code\", numeric: false, disablePadding: false, label: \"Cursuscode\" },\n { id: \"op\", numeric: false, disablePadding: false, label: \"OP\" },\n {\n id: \"workmethod\",\n numeric: false,\n disablePadding: false,\n label: \"Werkmethode\",\n },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n Cursussen\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\ntype CourseDeleteErrors = {\n code: string\n year_and_op: {\n year: number\n op: number\n }[]\n}\n\nexport const CourseTable = () => {\n const setSelectedCourseForDetails = useSetRecoilState(\n selectedCourseForDetailsState\n )\n const searchQuery = useRecoilValue(searchbarState)\n const currentCurriculum = useRecoilValue(currentCurriculumAndKindObject)\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [deleteCourseStatus, setDeleteCourseStatus] = useFetchState()\n const { data, error } = useSWR(\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}`\n : null\n )\n const [selected, setSelected] = React.useState([])\n const [courseUsedInPlanningError, setCourseUsedInPlanningError] = useState<\n boolean\n >(false)\n const [\n courseUsedInPlanningStudyYearsAndOPs,\n setCourseUsedInPlanningStudyYearAndOPs,\n ] = useState([])\n const [\n deleteConfirmationDialog,\n setDeleteConfirmationDialog,\n ] = React.useState(false)\n\n useEffect(() => {\n if (!deleteConfirmationDialog) {\n setCourseUsedInPlanningError(false)\n setCourseUsedInPlanningStudyYearAndOPs([])\n }\n }, [deleteConfirmationDialog])\n\n if (!data) return \n\n if (error) return \n\n const dataFiltered = data.filter(\n (c) =>\n c.code.toLowerCase().includes(searchQuery.toLowerCase()) ||\n c.workmethod.toLowerCase().includes(searchQuery.toLowerCase()) ||\n c.op.toLowerCase().includes(searchQuery.toLowerCase())\n )\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = dataFiltered.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (\n event: React.MouseEvent,\n curriculum: CourseType\n ) => {\n const selectedIndex = selected.indexOf(curriculum)\n let newSelected: CourseType[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, curriculum)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const deleteSelected = () => {\n setDeleteCourseStatus(\"loading\")\n fetch(\"/api/course/delete-multiple\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(selected),\n }).then(async (r) => {\n if (r.ok) {\n setDeleteCourseStatus(\"success\")\n setDeleteConfirmationDialog(false)\n setSnackbarText(\n `De geselecteerde ${\n selected.length > 1 ? \"cursussen zijn\" : \"cursus is\"\n } verwijderd`\n )\n setSnackbarVisible(true)\n setSelected([])\n setSelectedCourseForDetails(-1)\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}`\n )\n } else {\n setDeleteCourseStatus(\"error\")\n if (r.status === 400) {\n const json: CourseDeleteErrors[] = await r.json()\n console.log(json)\n\n setCourseUsedInPlanningStudyYearAndOPs(json)\n setCourseUsedInPlanningError(true)\n } else {\n const json: ExceptionResponse = await r.json()\n console.log(json)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de ${\n selected.length > 1 ? \"cursussen\" : \"cursus\"\n }`\n )\n setSnackbarVisible(true)\n }\n }\n })\n }\n\n const isSelected = (curriculum: CourseType) =>\n selected.indexOf(curriculum) !== -1\n\n return (\n <>\n \n \n \n \n \n \n {data.length > 0 ? (\n dataFiltered.length > 0 ? (\n <>\n {dataFiltered.map((curriculum, key) => {\n const isItemSelected = isSelected(curriculum)\n\n return (\n \n \n handleClick(event, curriculum)}\n />\n \n \n setSelectedCourseForDetails(curriculum.id)\n }\n >\n {curriculum.code}\n \n \n setSelectedCourseForDetails(curriculum.id)\n }\n >\n {curriculum.op}\n \n \n setSelectedCourseForDetails(curriculum.id)\n }\n >\n {curriculum.workmethod}\n \n \n )\n })}\n \n ) : (\n \n \n Geen resultaten\n \n \n )\n ) : (\n \n \n Er zijn geen cursussen. Maak een cursus aan.\n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`${selected.length > 1 ? \"Cursussen\" : \"Cursus\"} verwijderen`}\n content={() => (\n <>\n

\n Weet je zeker dat je de geselecteerde{\" \"}\n {selected.length > 1 ? \"cursussen\" : \"cursus\"} wilt verwijderen?\n

\n {courseUsedInPlanningError && (\n (\n <>\n De {selected.length > 1 ? \"cursussen zijn\" : \"cursus is\"}{\" \"}\n ingeplanned. Verwijder de{\" \"}\n {selected.length > 1 ? \"cursussen\" : \"cursus\"} uit de\n planning om het te verwijderen.\n
\n
\n {courseUsedInPlanningStudyYearsAndOPs.map((c, key) => (\n \n {c.code}\n
    \n {c.year_and_op.map((yao, key) => (\n
  • \n Studiejaar {yao.year} - OP{yao.op}\n
  • \n ))}\n
\n
\n ))}\n \n )}\n />\n )}\n \n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder {selected.length > 1 ? \"cursussen\" : \"cursus\"}\n \n \n )}\n />\n \n )\n}\n","import \"./EmptyState.css\"\nimport React from \"react\"\n\ntype EmptyDetailsStateProps = {\n kind?: \"curriculum\" | \"course\"\n}\n\nexport const EmptyDetailsState = ({ kind }: EmptyDetailsStateProps) => {\n const getKind = (kind: EmptyDetailsStateProps[\"kind\"]) => {\n switch (kind) {\n case \"curriculum\":\n return \"Selecteer een curriculum\"\n case \"course\":\n return \"Selecteer een cursus\"\n default:\n return \"Er is niks geselecteerd\"\n }\n }\n\n return (\n
\n

{getKind(kind)}

\n
\n )\n}\n","import { number, object, string } from \"yup\"\nimport { CourseDetailsType } from \".\"\n\nexport const courseDetailsValidationObject = object<\n Omit<\n CourseDetailsType,\n \"workmethod\" | \"course_owner\" | \"team\" | \"teached_on_day\"\n >\n>({\n code: string().typeError(\"Dit veld is verplicht\").required(),\n name: string().typeError(\"Dit veld is verplicht\").required(),\n ects: number()\n .min(0, \"Studiepunten kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n raise_factor: number()\n .min(0, \"De opslagfactor kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n meetings: number()\n .min(0, \"Bijeenkomsten kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n meeting_duration: number()\n .min(0, `Contactduur bijeenkomsten kan geen negatief getal zijn`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n teachers_simultaniously_teaching: number()\n .min(0, `Dit kan geen negatief getal zijn`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n contact_students: number()\n .min(0, `Contacttijd studenten kan geen negatief getal zijn`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n study_year: number().typeError(\"Dit veld is verplicht\").required(),\n op: number().typeError(\"Dit veld is verplicht\").required(),\n correction_time: number().typeError(\"Dit veld is verplicht\").required(),\n travel_time: number().typeError(\"Dit veld is verplicht\").required(),\n kind: string().required(),\n})\n","import React, { useEffect, useState } from \"react\"\nimport Toolbar from \"@material-ui/core/Toolbar\"\nimport {\n createStyles,\n Divider,\n lighten,\n makeStyles,\n TextField,\n Theme,\n Typography,\n} from \"@material-ui/core\"\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n selectedCourseForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport useSWR, { mutate } from \"swr\"\nimport { EmptyDetailsState } from \"../EmptyDetailsState\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { ValidationError } from \"yup\"\nimport {\n checkValidationErrors,\n Errors,\n ExceptionResponse,\n useFetchState,\n} from \"../../utils\"\nimport { Dialog } from \"../Dialog\"\nimport Autocomplete from \"@material-ui/lab/Autocomplete\"\nimport FormControl from \"@material-ui/core/FormControl/FormControl\"\nimport InputLabel from \"@material-ui/core/InputLabel/InputLabel\"\nimport Select from \"@material-ui/core/Select/Select\"\nimport MenuItem from \"@material-ui/core/MenuItem/MenuItem\"\nimport { courseDetailsValidationObject } from \"./ValidationObjects\"\nimport { currentCurriculumAndKindObject } from \"../../state/planning\"\nimport InformationCard from \"../InformationCard\"\nimport { Button } from \"../Buttons\"\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n position: \"sticky\",\n top: 0,\n backgroundColor: \"white\",\n borderBottom: \"1px solid rgba(0, 0, 0, .12)\",\n zIndex: 2,\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flexGrow: 1,\n },\n deleteButton: {\n marginRight: \"16px\",\n },\n })\n)\n\nexport type CourseDetailsType = {\n code: string\n name: string\n ects: number\n raise_factor: number\n meetings: number\n meeting_duration: number\n teachers_simultaniously_teaching: number\n contact_students: number\n teached_on_day: number\n study_year: number\n op: number\n correction_time: number\n travel_time: number\n workmethod: Workmethod\n course_owner: CourseOwner\n team: Team\n kind: string\n}\n\nexport type Workmethod = {\n id: number\n name: string\n}\n\nexport type CourseOwner = {\n id: number\n personnel_code: string\n}\n\nexport type CourseOwnerOptions = {\n type: string\n id: number\n personnel_code: string\n}\n\nexport type Team = {\n id: number\n name: string\n}\n\nexport type TeamOptions = {\n type: string\n id: number\n name: string\n}\n\ntype CourseDeleteErrors = {\n year: number\n op: number\n}\n\nexport const CourseDetails = () => {\n const classes = useToolbarStyles()\n const currentCurriculum = useRecoilValue(currentCurriculumAndKindObject)\n const [selectedCourse, setSelectedCourse] = useRecoilState(\n selectedCourseForDetailsState\n )\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [updateCourseStatus, setUpdateCourseStatus] = useFetchState()\n const [deleteCourseStatus, setDeleteCourseStatus] = useFetchState()\n const [deleteConfirmationDialog, setDeleteConfirmationDialog] = useState<\n boolean\n >(false)\n const [courseUsedInPlanningError, setCourseUsedInPlanningError] = useState<\n boolean\n >(false)\n const [\n courseUsedInPlanningStudyYearsAndOPs,\n setCourseUsedInPlanningStudyYearAndOPs,\n ] = useState([])\n const [errors, setErrors] = useState[]>([])\n const [courseDetails, setCourseDetails] = useState({\n code: \"\",\n name: \"\",\n ects: -1,\n raise_factor: -1,\n meetings: -1,\n meeting_duration: -1,\n teachers_simultaniously_teaching: -1,\n contact_students: -1,\n teached_on_day: -1,\n study_year: 1,\n op: -1,\n correction_time: -1,\n travel_time: -1,\n workmethod: { id: -1, name: \"\" },\n course_owner: { id: -1, personnel_code: \"\" },\n team: { id: -1, name: \"\" },\n kind: currentCurriculum.kind,\n })\n const [availableCourseOwners, setAvailableCourseOwners] = useState<\n CourseOwnerOptions[]\n >([])\n const [availableTeams, setAvailableTeams] = useState([])\n const { data: dataCourseDetails, error: errorCourseDetails } = useSWR<\n CourseDetailsType\n >(() =>\n currentCurriculum && selectedCourse !== -1\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/${selectedCourse}`\n : null\n )\n // const {\n // data: dataAvailableCourseOwners,\n // error: errorAvailableCourseOwners,\n // } = useSWR(() =>\n // currentCurriculum.id !== -1\n // ? `/api/course/${currentCurriculum.id}/available-course-owners`\n // : null\n // )\n const { data: dataAvailableTeams, error: errorAvailableTeams } = useSWR<\n Team[]\n >(() =>\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-teams`\n : null\n )\n const {\n data: dataAvailableWorkmethods,\n error: errorAvailableWorkmethods,\n } = useSWR(() =>\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-workmethods`\n : null\n )\n\n useEffect(() => {\n if (!deleteConfirmationDialog) {\n setCourseUsedInPlanningError(false)\n setCourseUsedInPlanningStudyYearAndOPs([])\n }\n }, [deleteConfirmationDialog])\n\n useEffect(() => {\n if (typeof dataCourseDetails !== \"undefined\") {\n setCourseDetails(dataCourseDetails)\n }\n }, [dataCourseDetails])\n\n // useEffect(() => {\n // if (\n // typeof dataAvailableCourseOwners !== \"undefined\" &&\n // typeof dataCourseDetails !== \"undefined\"\n // ) {\n // let arr = dataAvailableCourseOwners as CourseOwnerOptions[]\n\n // arr = arr.map((aco) => ({\n // ...aco,\n // type: \"Beschikbare docenten\",\n // }))\n\n // arr.push({\n // ...dataCourseDetails.course_owner,\n // type: \"Huidige cursusbeheerder\",\n // })\n\n // setAvailableCourseOwners(arr)\n // }\n // }, [dataAvailableCourseOwners, dataCourseDetails])\n\n useEffect(() => {\n if (\n typeof dataAvailableTeams !== \"undefined\" &&\n typeof dataCourseDetails !== \"undefined\"\n ) {\n let arr = dataAvailableTeams as TeamOptions[]\n\n arr = arr.map((aco) => ({\n ...aco,\n type: \"Beschikbare teams\",\n }))\n\n arr.push({ ...dataCourseDetails.team, type: \"Huidige team\" })\n\n setAvailableTeams(arr)\n }\n }, [dataAvailableTeams, dataCourseDetails])\n\n useEffect(() => {\n if (selectedCourse) {\n setUpdateCourseStatus(\"initial\")\n setDeleteCourseStatus(\"initial\")\n }\n }, [selectedCourse])\n\n if (selectedCourse === -1) return \n\n if (!dataCourseDetails) return \n\n if (errorCourseDetails) return \n\n const handleChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const updateCourse = () => {\n courseDetailsValidationObject\n .validate(courseDetails, { abortEarly: false })\n .then(() => {\n setUpdateCourseStatus(\"loading\")\n setErrors([])\n fetch(`/api/course/update/${selectedCourse}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(courseDetails),\n }).then(async (r) => {\n if (r.ok) {\n setUpdateCourseStatus(\"success\")\n setSnackbarText(`De wijzigingen zijn opgeslagen`)\n setSnackbarVisible(true)\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/${selectedCourse}`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-course-owners`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-teams`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-workmethods`\n )\n } else {\n setUpdateCourseStatus(\"error\")\n const json: ExceptionResponse = await r.json()\n console.log(json)\n setSnackbarText(\n `Er is iets fout gegaan bij het opslaan van de wijzigingen`\n )\n setSnackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) => checkValidationErrors(e, setErrors))\n }\n\n const deleteCourse = () => {\n setDeleteCourseStatus(\"error\")\n setCourseUsedInPlanningError(false)\n fetch(`/api/course/delete/${selectedCourse}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }).then(async (r) => {\n if (r.ok) {\n setDeleteCourseStatus(\"success\")\n setDeleteConfirmationDialog(false)\n setSnackbarText(`De cursus is verwijderd`)\n setSnackbarVisible(true)\n setSelectedCourse(-1)\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}`\n )\n } else {\n setDeleteCourseStatus(\"error\")\n if (r.status === 400) {\n const json: CourseDeleteErrors[] = await r.json()\n console.log(json)\n\n setCourseUsedInPlanningStudyYearAndOPs(json)\n setCourseUsedInPlanningError(true)\n } else {\n const json: ExceptionResponse = await r.json()\n console.log(json)\n setSnackbarText(\n `Er is iets fout gegaan bij het verwijderen van de cursus`\n )\n setSnackbarVisible(true)\n }\n }\n })\n }\n\n return (\n <>\n \n \n {courseDetails.code}\n \n setDeleteConfirmationDialog(true)}\n className={classes.deleteButton}\n >\n Verwijder cursus\n \n updateCourse()}\n >\n Sla wijzigingen op\n \n \n
\n
\n handleChange(e)}\n error={errors.some((e) => e.path === \"code\")}\n helperText={errors.find((e) => e.path === \"code\")?.message}\n />\n handleChange(e)}\n error={errors.some((e) => e.path === \"name\")}\n helperText={errors.find((e) => e.path === \"name\")?.message}\n />\n {/* handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"ects\")}\n helperText={errors.find((e) => e.path === \"ects\")?.message}\n /> */}\n {!dataAvailableWorkmethods ? (\n \n ) : errorAvailableWorkmethods ? (\n \n ) : (\n \n setCourseDetails({ ...courseDetails, workmethod: v })\n }\n disableClearable\n options={dataAvailableWorkmethods}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen werkmethode beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n {/* {!dataAvailableCourseOwners ? (\n \n ) : errorAvailableCourseOwners ? (\n \n ) : (\n \n v !== null\n ? setCourseDetails({ ...courseDetails, course_owner: v })\n : setCourseDetails({\n ...courseDetails,\n course_owner: { id: -1, personnel_code: \"\" },\n })\n }\n onBlur={() =>\n courseDetails.course_owner.id === -1 &&\n setCourseDetails({\n ...courseDetails,\n course_owner: {\n id: -1,\n personnel_code: \"Geen cursusbeheerder\",\n },\n })\n }\n options={availableCourseOwners.sort((a, b) =>\n a.type < b.type ? 1 : -1\n )}\n groupBy={(option) => option.type}\n getOptionLabel={(option) => option.personnel_code}\n noOptionsText={\"Geen docenten beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )} */}\n {!dataAvailableTeams ? (\n \n ) : errorAvailableTeams ? (\n \n ) : (\n \n v !== null\n ? setCourseDetails({ ...courseDetails, team: v })\n : setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"\" },\n })\n }\n onBlur={() =>\n courseDetails.team.id === -1 &&\n setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"Geen team\" },\n })\n }\n options={availableTeams.sort((a, b) =>\n a.type < b.type ? 1 : -1\n )}\n groupBy={(option) => option.type}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen teams beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n {/* \n \n Wordt gegeven op dag\n \n \n setCourseDetails({\n ...courseDetails,\n teached_on_day: e.target.value as number,\n })\n }\n >\n Maandag\n Dinsdag\n Woensdag\n Donderdag\n Vrijdag\n \n */}\n \n \n Studiejaar\n \n \n setCourseDetails({\n ...courseDetails,\n study_year: e.target.value as number,\n })\n }\n >\n 1\n 2\n 3\n 4\n \n \n \n Periode\n \n setCourseDetails({\n ...courseDetails,\n op: e.target.value as number,\n })\n }\n >\n OP1\n OP2\n OP3\n OP4\n \n \n
\n
\n \n
\n
\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"meetings\")}\n helperText={\n errors.find((e) => e.path === \"meetings\")\n ? errors.find((e) => e.path === \"meetings\")?.message\n : \"Aantal lesmomenten\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"contact_students\")}\n helperText={\n errors.find((e) => e.path === \"contact_students\")\n ? errors.find((e) => e.path === \"contact_students\")?.message\n : \"Contacttijd lesmoment met studenten (min)\"\n }\n />\n {/* handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"teachers_simultaniously_teaching\"\n )}\n helperText={\n errors.find((e) => e.path === \"teachers_simultaniously_teaching\")\n ?.message\n }\n /> */}\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"raise_factor\")}\n helperText={\n errors.find((e) => e.path === \"raise_factor\")\n ? errors.find((e) => e.path === \"raise_factor\")?.message\n : \"Opslagfactor\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"correction_time\")}\n helperText={\n errors.find((e) => e.path === \"correction_time\")\n ? errors.find((e) => e.path === \"correction_time\")?.message\n : \"Correctietijd per student (min)\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"travel_time\")}\n helperText={\n errors.find((e) => e.path === \"travel_time\")\n ? errors.find((e) => e.path === \"travel_time\")?.message\n : \"Reistijd\"\n }\n />\n
\n
\n setDeleteConfirmationDialog(false)}\n title={`Cursus verwijderen`}\n content={() => (\n <>\n

Weet je zeker dat je de cursus wilt verwijderen?

\n {courseUsedInPlanningError && (\n (\n <>\n De cursus is ingeplanned. Verwijder de cursus uit de\n planning om het te verwijderen.\n
\n
\n Komt voor in:\n
\n {courseUsedInPlanningStudyYearsAndOPs.map((e, key) => (\n \n Studiejaar {e.year} - OP{e.op}\n \n ))}\n \n )}\n />\n )}\n \n )}\n actions={() => (\n <>\n \n deleteCourse()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder cursus\n \n \n )}\n />\n \n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n createDialogState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport { Dialog } from \"../Dialog\"\nimport { Button } from \"../Buttons\"\nimport {\n Divider,\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n} from \"@material-ui/core\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport Autocomplete from \"@material-ui/lab/Autocomplete/Autocomplete\"\nimport useSWR, { mutate } from \"swr\"\nimport { checkValidationErrors, Errors, useFetchState } from \"../../utils\"\nimport { ValidationError } from \"yup\"\nimport {\n CourseDetailsType,\n CourseOwner,\n CourseOwnerOptions,\n Team,\n TeamOptions,\n Workmethod,\n} from \"../CourseDetails\"\nimport { courseDetailsValidationObject } from \"../CourseDetails/ValidationObjects\"\nimport { currentCurriculumAndKindObject } from \"../../state/planning\"\n\ntype DefaultValues = {\n meetings: number\n contact_students: number\n raise_factor: number\n correction_time: number\n travel_time: number\n}\n\nexport const CreateCourseDialog = () => {\n const [createDialog, setCreateDialog] = useRecoilState(createDialogState)\n const currentCurriculum = useRecoilValue(currentCurriculumAndKindObject)\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n\n const [createCourseStatus, setCreateCourseStatus] = useFetchState()\n const [errors, setErrors] = useState[]>([])\n const [courseDetails, setCourseDetails] = useState({\n code: \"\",\n name: \"\",\n ects: 0,\n raise_factor: 0,\n meetings: 0,\n meeting_duration: 0,\n teachers_simultaniously_teaching: 0,\n contact_students: 0,\n teached_on_day: 0,\n study_year: 1,\n op: 1,\n correction_time: 0,\n travel_time: 0,\n workmethod: { id: -1, name: \"Standaard\" },\n course_owner: { id: -1, personnel_code: \"Geen cursusbeheerder\" },\n team: { id: -1, name: \"Geen team\" },\n kind: currentCurriculum.kind,\n })\n const [availableCourseOwners, setAvailableCourseOwners] = useState<\n CourseOwnerOptions[]\n >([])\n const [availableTeams, setAvailableTeams] = useState([])\n // const {\n // data: dataAvailableCourseOwners,\n // error: errorAvailableCourseOwners,\n // } = useSWR(() =>\n // currentCurriculum.id !== -1\n // ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-course-owners`\n // : null\n // )\n const { data: dataAvailableTeams, error: errorAvailableTeams } = useSWR<\n Team[]\n >(() =>\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-teams`\n : null\n )\n const {\n data: dataAvailableWorkmethods,\n error: errorAvailableWorkmethods,\n } = useSWR(() =>\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-workmethods`\n : null\n )\n const { data: dataDefaultValues, error: errorDefaultValues } = useSWR<\n DefaultValues\n >(() =>\n currentCurriculum\n ? `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/default-values`\n : null\n )\n\n // useEffect(() => {\n // if (typeof dataAvailableCourseOwners !== \"undefined\" && createDialog) {\n // let arr = dataAvailableCourseOwners as CourseOwnerOptions[]\n\n // arr = arr.map((aco) => ({\n // ...aco,\n // type: \"Beschikbare docenten\",\n // }))\n\n // setAvailableCourseOwners(arr)\n // }\n // }, [createDialog, dataAvailableCourseOwners])\n\n useEffect(() => {\n if (typeof dataAvailableTeams !== \"undefined\" && createDialog) {\n let arr = dataAvailableTeams as TeamOptions[]\n\n arr = arr.map((aco) => ({\n ...aco,\n type: \"Beschikbare teams\",\n }))\n\n setAvailableTeams(arr)\n }\n }, [createDialog, dataAvailableTeams])\n\n useEffect(() => {\n if (typeof dataAvailableWorkmethods !== \"undefined\" && createDialog) {\n const wm: Workmethod =\n dataAvailableWorkmethods[\n dataAvailableWorkmethods.findIndex((wm) => wm.name === \"Standaard\")\n ]\n setCourseDetails({ ...courseDetails, workmethod: wm })\n }\n }, [createDialog, dataAvailableWorkmethods])\n\n useEffect(() => {\n if (typeof dataDefaultValues !== \"undefined\" && createDialog) {\n setCourseDetails({\n ...courseDetails,\n ...dataDefaultValues,\n })\n }\n }, [createDialog, dataDefaultValues])\n\n useEffect(() => {\n if (createDialog) {\n mutate(\"/api/app/all-curricula\")\n } else {\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-course-owners`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-teams`\n )\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}/available-workmethods`\n )\n setCourseDetails({\n code: \"\",\n name: \"\",\n ects: 0,\n raise_factor: 0,\n meetings: 0,\n meeting_duration: 0,\n teachers_simultaniously_teaching: 0,\n contact_students: 0,\n teached_on_day: 0,\n study_year: 1,\n op: 1,\n correction_time: 0,\n travel_time: 0,\n workmethod: { id: -1, name: \"Standaard\" },\n course_owner: { id: -1, personnel_code: \"Geen cursusbeheerder\" },\n team: { id: -1, name: \"Geen team\" },\n kind: currentCurriculum.kind,\n })\n setCreateCourseStatus(\"initial\")\n }\n }, [createDialog])\n\n useEffect(() => {\n setCourseDetails({\n ...courseDetails,\n kind: currentCurriculum.kind,\n })\n }, [currentCurriculum.kind])\n\n const handleChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setCourseDetails({\n ...courseDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const createCourse = () => {\n courseDetailsValidationObject\n .validate(courseDetails, { abortEarly: false })\n .then(() => {\n setErrors([])\n setCreateCourseStatus(\"loading\")\n fetch(\n `/api/course/create/${currentCurriculum.curriculum}/${currentCurriculum.kind}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(courseDetails),\n }\n ).then(async (r) => {\n if (r.ok) {\n setCreateCourseStatus(\"success\")\n mutate(\n `/api/course/${currentCurriculum.curriculum}/${currentCurriculum.kind}`\n )\n setCreateDialog(false)\n snackbarText(\"De cursus is aangemaakt\")\n snackbarVisible(true)\n } else {\n setCreateCourseStatus(\"error\")\n const json = await r.json()\n console.log(json)\n snackbarText(\"Er was een probleem bij het aanmaken van de cursus\")\n snackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) => checkValidationErrors(e, setErrors))\n }\n\n return (\n setCreateDialog(false)}\n title=\"Maak cursus aan\"\n content={() => (\n <>\n
\n
\n handleChange(e)}\n error={errors.some((e) => e.path === \"code\")}\n helperText={errors.find((e) => e.path === \"code\")?.message}\n />\n handleChange(e)}\n error={errors.some((e) => e.path === \"name\")}\n helperText={errors.find((e) => e.path === \"name\")?.message}\n />\n {/* handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"ects\")}\n helperText={errors.find((e) => e.path === \"ects\")?.message}\n /> */}\n {!dataAvailableWorkmethods ? (\n \n ) : errorAvailableWorkmethods ? (\n \n ) : (\n \n setCourseDetails({ ...courseDetails, workmethod: v })\n }\n disableClearable\n options={dataAvailableWorkmethods}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen werkmethode beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n {/* {!dataAvailableCourseOwners ? (\n \n ) : errorAvailableCourseOwners ? (\n \n ) : (\n \n v !== null\n ? setCourseDetails({ ...courseDetails, course_owner: v })\n : setCourseDetails({\n ...courseDetails,\n course_owner: { id: -1, personnel_code: \"\" },\n })\n }\n onBlur={() =>\n courseDetails.course_owner.id === -1 &&\n setCourseDetails({\n ...courseDetails,\n course_owner: {\n id: -1,\n personnel_code: \"Geen cursusbeheerder\",\n },\n })\n }\n options={availableCourseOwners.sort((a, b) =>\n a.type < b.type ? 1 : -1\n )}\n groupBy={(option) => option.type}\n getOptionLabel={(option) => option.personnel_code}\n noOptionsText={\"Geen docenten beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )} */}\n {!dataAvailableTeams ? (\n \n ) : errorAvailableTeams ? (\n \n ) : (\n \n v !== null\n ? setCourseDetails({ ...courseDetails, team: v })\n : setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"\" },\n })\n }\n onBlur={() =>\n courseDetails.team.id === -1 &&\n setCourseDetails({\n ...courseDetails,\n team: { id: -1, name: \"Geen team\" },\n })\n }\n options={availableTeams.sort((a, b) =>\n a.type < b.type ? 1 : -1\n )}\n groupBy={(option) => option.type}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen teams beschikbaar\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n {/* \n \n Wordt gegeven op dag\n \n \n setCourseDetails({\n ...courseDetails,\n teached_on_day: e.target.value as number,\n })\n }\n >\n Maandag\n Dinsdag\n Woensdag\n Donderdag\n Vrijdag\n \n */}\n \n \n Studiejaar\n \n \n setCourseDetails({\n ...courseDetails,\n study_year: e.target.value as number,\n })\n }\n >\n 1\n 2\n 3\n 4\n \n \n \n Periode\n \n setCourseDetails({\n ...courseDetails,\n op: e.target.value as number,\n })\n }\n >\n OP1\n OP2\n OP3\n OP4\n \n \n
\n
\n \n
\n
\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"meetings\")}\n helperText={\n errors.find((e) => e.path === \"meetings\")\n ? errors.find((e) => e.path === \"meetings\")?.message\n : \"Aantal lesmomenten\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"contact_students\")}\n helperText={\n errors.find((e) => e.path === \"contact_students\")\n ? errors.find((e) => e.path === \"contact_students\")?.message\n : \"Contacttijd lesmoment met studenten (min)\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"raise_factor\")}\n helperText={\n errors.find((e) => e.path === \"raise_factor\")\n ? errors.find((e) => e.path === \"raise_factor\")?.message\n : \"Opslagfactor\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"correction_time\")}\n helperText={\n errors.find((e) => e.path === \"correction_time\")\n ? errors.find((e) => e.path === \"correction_time\")?.message\n : \"Correctietijd per student (min)\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"travel_time\")}\n helperText={\n errors.find((e) => e.path === \"travel_time\")\n ? errors.find((e) => e.path === \"travel_time\")?.message\n : \"Reistijd\"\n }\n />\n
\n
\n \n )}\n actions={() => (\n // createCourse()}\n // >\n // Maak aan\n // \n createCourse()}\n >\n Maak aan\n \n )}\n />\n )\n}\n","import React from \"react\"\nimport { CourseTable } from \"../../components/CourseTable\"\nimport { CourseDetails } from \"../../components/CourseDetails\"\nimport { Topbar } from \"../../components/Layout\"\nimport { useHistory } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport { searchbarState, createDialogState } from \"../../state/app\"\nimport { CreateCourseDialog } from \"../../components/CreateCourseDialog\"\n\nexport const Courses = () => {\n const setSearchbar = useSetRecoilState(searchbarState)\n const setCreateDialog = useSetRecoilState(createDialogState)\n\n let history = useHistory()\n history.listen(() => {\n setCreateDialog(false)\n setSearchbar(\"\")\n })\n\n return (\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n )\n}\n","import \"./CurriculaTable.css\"\nimport React from \"react\"\nimport useSWR, { mutate } from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n currentCurriculumState,\n searchbarState,\n selectedCurriculumForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n createStyles,\n lighten,\n makeStyles,\n Theme,\n} from \"@material-ui/core/styles\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport {\n Checkbox,\n Divider,\n IconButton,\n TableContainer,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Dialog } from \"../Dialog\"\nimport { Button } from \"../Buttons\"\nimport { ExceptionResponse, useFetchState } from \"../../utils\"\nimport { useGetAllCurricula } from \"../../api/app\"\nimport { currentCurriculumAndKindState } from \"../../state/planning\"\n\ntype CurriculaType = {\n id: number\n name: string\n}\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof CurriculaType\n label: string\n numeric: boolean\n}\n\nconst headCells: HeadCell[] = [\n { id: \"name\", numeric: false, disablePadding: false, label: \"Curriculum\" },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n Curricula\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\nexport const CurriculaTable = () => {\n const setSelectedCurriculumForDetails = useSetRecoilState(\n selectedCurriculumForDetailsState\n )\n const setCurrentCurriculum = useSetRecoilState(currentCurriculumState)\n const setCurrentCurriculumAndKinds = useSetRecoilState(\n currentCurriculumAndKindState\n )\n const searchQuery = useRecoilValue(searchbarState)\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [deleteCourseStatus, setDeleteCourseStatus] = useFetchState()\n const { data, error } = useSWR(\"/api/curricula\")\n const [selected, setSelected] = React.useState([])\n const [\n deleteConfirmationDialog,\n setDeleteConfirmationDialog,\n ] = React.useState(false)\n\n if (!data) return \n\n if (error) return \n\n const dataFiltered = data.filter((c) => c.name.includes(searchQuery))\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = dataFiltered.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (\n event: React.MouseEvent,\n curriculum: CurriculaType\n ) => {\n const selectedIndex = selected.indexOf(curriculum)\n let newSelected: CurriculaType[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, curriculum)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const deleteSelected = () => {\n setDeleteCourseStatus(\"loading\")\n const payload = selected\n fetch(\"/api/curricula/delete-multiple\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then(async (r) => {\n if (r.ok) {\n setDeleteCourseStatus(\"success\")\n setDeleteConfirmationDialog(false)\n setSnackbarText(\n `De geselecteerde ${\n selected.length > 1 ? \"curricula zijn\" : \"curriculum is\"\n } verwijderd.`\n )\n setSnackbarVisible(true)\n setSelected([])\n setSelectedCurriculumForDetails(-1)\n mutate(\"/api/app/all-curricula\").then((data: useGetAllCurricula) => {\n setCurrentCurriculum({\n id: data[0].id,\n name: data[0].name,\n kind: data[0].kinds[0],\n })\n setCurrentCurriculumAndKinds(`${data[0].name}-${data[0].kinds[0]}`)\n })\n mutate(\"/api/curricula\")\n } else {\n setDeleteCourseStatus(\"error\")\n const json = (await r.json()) as ExceptionResponse\n console.log(json)\n }\n })\n .catch((e) => {\n setDeleteCourseStatus(\"error\")\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van ${\n selected.length > 1 ? \"de curricula\" : \"het curriculum\"\n }.`\n )\n setSnackbarVisible(true)\n })\n }\n\n const isSelected = (curriculum: CurriculaType) =>\n selected.indexOf(curriculum) !== -1\n\n return (\n <>\n \n \n \n \n \n \n {data.length > 0 ? (\n dataFiltered.length > 0 ? (\n <>\n {dataFiltered.map((curriculum, key) => {\n const isItemSelected = isSelected(curriculum)\n\n return (\n \n \n handleClick(event, curriculum)}\n />\n \n \n setSelectedCurriculumForDetails(curriculum.id)\n }\n >\n {curriculum.name}\n \n \n )\n })}\n \n ) : (\n \n Geen resultaten\n \n )\n ) : (\n \n \n Er zijn geen curricula. Maak een curriculum aan.\n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`${\n selected.length > 1 ? \"Curricula\" : \"Curriculum\"\n } verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde{\" \"}\n {selected.length > 1 ? \"curricula\" : \"curriculum\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder {selected.length > 1 ? \"curricula\" : \"curriculum\"}\n \n \n )}\n />\n \n )\n}\n","import { number, object, array, string, date, bool } from \"yup\"\nimport { CurriculumDetailsMOT, CurriculumDetailsType } from \".\"\nimport { newMOTTaskType } from \"./MOT\"\n\nexport const curriculumDetailsValidationObject = object<\n Omit\n>({\n id: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n name: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_fte: number()\n .min(0, \"Het FTE kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n default_fte_hours: number()\n .min(0, \"De FTE uren kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n default_di: number()\n .min(0, \"Het DI kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n default_organisational: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_professional: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_w: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n course_formula_ct: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n course_formula_opslag: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n course_formula_n: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n course_formula_cor: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n course_formula_r: number()\n .min(0, `>= 0`)\n .typeError(\"Dit veld is verplicht\")\n .required(),\n start_date: date().required(),\n end_date: date().required(),\n availability_type: string().required(),\n})\n\nexport const curriculumDetailsMOTValidationObject = object<\n CurriculumDetailsMOT\n>({\n id: number().required(),\n type: string().required(),\n name: string().required(\"Dit veld is verplicht\"),\n hours: number()\n .typeError(\"Dit veld is verplicht\")\n .min(0, \">= 0\")\n .required(\"Dit veld is verplicht\"),\n active_op1: bool(),\n active_op2: bool(),\n active_op3: bool(),\n active_op4: bool(),\n})\n\nexport const curriculumDetailsMOTArrayValidationObject = array<\n CurriculumDetailsMOT\n>().of(curriculumDetailsMOTValidationObject)\n\nexport const newMOTTaskValidationObject = object({\n type: string(),\n name: string().required(\"Dit veld is verplicht\"),\n hours: number()\n .min(0, \"Uren kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n active_op1: bool(),\n active_op2: bool(),\n active_op3: bool(),\n active_op4: bool(),\n})\n","import React, { useEffect, useState } from \"react\"\nimport { mutate } from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport {\n selectedCurriculumForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport {\n createStyles,\n lighten,\n makeStyles,\n Theme,\n} from \"@material-ui/core/styles\"\nimport Table from \"@material-ui/core/Table\"\nimport TableBody from \"@material-ui/core/TableBody\"\nimport TableCell from \"@material-ui/core/TableCell\"\nimport TableHead from \"@material-ui/core/TableHead\"\nimport TableRow from \"@material-ui/core/TableRow\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport {\n Checkbox,\n Divider,\n IconButton,\n Paper,\n TableContainer,\n Toolbar,\n Tooltip,\n Typography,\n TextField,\n FormControl,\n MenuItem,\n Select,\n FormControlLabel,\n FormGroup,\n} from \"@material-ui/core\"\nimport { Dialog } from \"../Dialog\"\nimport Button from \"@material-ui/core/Button/Button\"\nimport AddIcon from \"@material-ui/icons/AddRounded\"\nimport { CurriculumDetailsMOT } from \".\"\nimport {\n checkValidationErrors,\n DialogError,\n Errors,\n ExceptionResponse,\n ExceptionResponseState,\n} from \"../../utils\"\nimport { newMOTTaskValidationObject } from \"./ValidationObjects\"\nimport { ValidationError } from \"yup\"\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof CurriculumDetailsMOT\n label: string\n numeric: boolean\n minWidth: number\n}\n\nconst headCells: HeadCell[] = [\n {\n id: \"name\",\n numeric: false,\n disablePadding: false,\n label: \"Taak\",\n minWidth: 200,\n },\n {\n id: \"type\",\n numeric: false,\n disablePadding: false,\n label: \"Type\",\n minWidth: 150,\n },\n {\n id: \"hours\",\n numeric: true,\n disablePadding: false,\n label: \"Uren\",\n minWidth: 75,\n },\n {\n id: \"active_op1\",\n numeric: false,\n disablePadding: false,\n label: \"OP1\",\n minWidth: 40,\n },\n {\n id: \"active_op2\",\n numeric: false,\n disablePadding: false,\n label: \"OP2\",\n minWidth: 40,\n },\n {\n id: \"active_op3\",\n numeric: false,\n disablePadding: false,\n label: \"OP3\",\n minWidth: 40,\n },\n {\n id: \"active_op4\",\n numeric: false,\n disablePadding: false,\n label: \"OP4\",\n minWidth: 40,\n },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n MOT taken\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\ntype CurriculumMOTTableProps = {\n errors: { message: string; index: number; path: string }[]\n mot_tasks: CurriculumDetailsMOT[]\n setCurriculumMOTTasks: (mot_tasks: CurriculumDetailsMOT[]) => void\n}\n\nexport type newMOTTaskType = {\n type: string\n name: string\n hours: number\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\nexport const CurriculumMOTTable = (props: CurriculumMOTTableProps) => {\n const { errors, mot_tasks, setCurriculumMOTTasks } = props\n const selectedCurriculum = useRecoilValue(selectedCurriculumForDetailsState)\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [selected, setSelected] = useState([])\n const [createMOTTaskDialog, setCreateMOTTaskDialog] = useState(false)\n const [newMOTTask, setNewMOTTask] = useState({\n type: \"Organisatorische\",\n name: \"\",\n hours: 0,\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n const [newMOTTaskErrors, setnewMOTTaskErrors] = useState<\n Errors[]\n >([])\n const [\n newMOTTaskCreateErrorMessage,\n setNewMOTTaskCreateErrorMessage,\n ] = useState({\n status: -1,\n statusText: \"\",\n type: \"\",\n message: \"\",\n })\n const [deleteConfirmationDialog, setDeleteConfirmationDialog] = useState<\n boolean\n >(false)\n\n useEffect(() => {\n if (!createMOTTaskDialog) {\n setNewMOTTask({\n type: \"Organisatorische\",\n name: \"\",\n hours: 0,\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n setnewMOTTaskErrors([])\n }\n }, [createMOTTaskDialog])\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = mot_tasks.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (\n event: React.MouseEvent,\n task: CurriculumDetailsMOT\n ) => {\n const selectedIndex = selected.indexOf(task)\n let newSelected: CurriculumDetailsMOT[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, task)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const handleChange = (task: CurriculumDetailsMOT) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`[${task.id}] ${task.name}: ${task.hours}`)\n\n let new_mot_tasks = mot_tasks\n const index = new_mot_tasks.findIndex((t) => t.id === task.id)\n new_mot_tasks[index] = task\n\n setCurriculumMOTTasks(new_mot_tasks)\n }\n\n const createMOTTask = () => {\n newMOTTaskValidationObject\n .validate(newMOTTask, { abortEarly: false })\n .then(() => {\n setnewMOTTaskErrors([])\n fetch(`/api/curricula/${selectedCurriculum}/mot/create`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(newMOTTask),\n })\n .then(async (r) => {\n if (r.ok) {\n mutate(`/api/curricula/${selectedCurriculum}`)\n setCreateMOTTaskDialog(false)\n setNewMOTTaskCreateErrorMessage({\n status: -1,\n statusText: \"\",\n type: \"\",\n message: \"\",\n })\n setSnackbarText(\"De MOT Taak is aangemaakt\")\n setSnackbarVisible(true)\n } else {\n const json = (await r.json()) as ExceptionResponse\n setNewMOTTaskCreateErrorMessage({\n status: r.status,\n statusText: r.statusText,\n type: json.type,\n message: json.message,\n })\n }\n })\n .catch((e) => {\n console.log(e)\n setNewMOTTaskCreateErrorMessage({\n status: -1,\n statusText: \"Unknown\",\n type: \"Unknown\",\n message:\n \"Is is iets fout gegaan bij het aanmaken van de MOT taak.\",\n })\n })\n })\n .catch((err: ValidationError) =>\n checkValidationErrors(err, setnewMOTTaskErrors)\n )\n }\n\n const deleteSelected = () => {\n const payload = selected\n fetch(`/api/curricula/${selectedCurriculum}/mot/delete-multiple`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then((r) => {\n if (r.ok) {\n setDeleteConfirmationDialog(false)\n setSnackbarText(\n `De geselecteerde MOT ${\n selected.length > 1 ? \"taken\" : \"taak\"\n } is verwijderd.`\n )\n setSnackbarVisible(true)\n setSelected([])\n mutate(`/api/curricula/${selectedCurriculum}`)\n }\n })\n .catch((e) => {\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de MOT ${\n selected.length > 1 ? \"taken\" : \"taak\"\n }.`\n )\n setSnackbarVisible(true)\n })\n }\n\n const isSelected = (task: CurriculumDetailsMOT) =>\n selected.indexOf(task) !== -1\n\n return (\n \n \n \n \n \n \n \n {mot_tasks.length > 0 ? (\n <>\n \n \n setCreateMOTTaskDialog(true)}>\n \n \n \n \n Maak een nieuwe MOT taak aan\n \n \n {mot_tasks.map((task, key) => {\n const isItemSelected = isSelected(task)\n\n return (\n \n \n handleClick(event, task)}\n />\n \n \n \n handleChange({\n ...task,\n name: e.target.value,\n })\n }\n type=\"text\"\n error={errors.some(\n (e) => e.index === key && e.path === \"name\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"name\"\n )?.message\n }\n />\n \n \n \n {\n handleChange({\n ...task,\n type: e.target.value as string,\n })\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n \n \n \n handleChange({\n ...task,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n type=\"number\"\n error={errors.some(\n (e) => e.index === key && e.path === \"hours\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"hours\"\n )?.message\n }\n />\n \n \n \n handleChange({\n ...task,\n active_op1: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op2: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op3: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...task,\n active_op4: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n )\n })}\n \n ) : (\n <>\n \n \n setCreateMOTTaskDialog(true)}>\n \n \n \n \n Maak een nieuwe MOT taak aan\n \n \n \n \n Er zijn geen MOT taken. Maak een MOT taak aan.\n \n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`MOT ${selected.length > 1 ? \"taken\" : \"taak\"} verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde MOT{\" \"}\n {selected.length > 1 ? \"taken\" : \"taak\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder MOT {selected.length > 1 ? \"taken\" : \"taak\"}\n \n \n )}\n />\n setCreateMOTTaskDialog(false)}\n title={`Nieuwe MOT taak`}\n content={() => (\n
\n
\n \n setNewMOTTask({ ...newMOTTask, name: e.target.value })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"name\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"name\")?.message\n }\n />\n \n {\n setNewMOTTask({\n ...newMOTTask,\n type: e.target.value as string,\n })\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n \n setNewMOTTask({\n ...newMOTTask,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"hours\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"hours\")\n ? newMOTTaskErrors.find((e) => e.path === \"hours\")?.message\n : \"Uren worden per OP toegewezen\"\n }\n />\n
\n \n \n \n setNewMOTTask({\n ...newMOTTask,\n active_op1: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP1\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op2: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP2\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op3: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP3\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op4: e.target.checked,\n })\n }\n color=\"primary\"\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP4\"\n labelPlacement=\"top\"\n />\n \n
\n {newMOTTaskCreateErrorMessage.message.length > 0 && (\n \n )}\n \n )}\n actions={() => (\n <>\n \n createMOTTask()}\n color=\"primary\"\n variant=\"contained\"\n >\n Maak taak aan\n \n \n )}\n />\n
\n )\n}\n","import { date, number, object, string } from \"yup\"\nimport { CurriculumDetailsType } from \"../CurriculumDetails\"\n\nexport const newCurriculumValidationObject = object<\n Omit\n>({\n id: number().required(),\n name: string().required(\"Dit veld is verplicht\"),\n default_fte: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_fte_hours: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_di: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_organisational: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n default_professional: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_w: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_ct: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_opslag: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_n: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_cor: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n course_formula_r: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n start_date: date().required(),\n end_date: date().required(),\n})\n","import React, { useEffect, useState } from \"react\"\nimport Stepper from \"@material-ui/core/Stepper\"\nimport { useRecoilState, useSetRecoilState } from \"recoil\"\nimport {\n createDialogState,\n currentCurriculumState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport { Dialog } from \"../Dialog\"\nimport Step from \"@material-ui/core/Step\"\nimport StepLabel from \"@material-ui/core/StepLabel\"\nimport Button from \"@material-ui/core/Button\"\nimport {\n Card,\n CardContent,\n Divider,\n TextField,\n Tooltip,\n} from \"@material-ui/core\"\nimport { useGetAllCurricula } from \"../../api/app\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport Autocomplete from \"@material-ui/lab/Autocomplete/Autocomplete\"\nimport List from \"@material-ui/core/List\"\nimport ListItem from \"@material-ui/core/ListItem\"\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\"\nimport ListItemText from \"@material-ui/core/ListItemText\"\nimport Checkbox from \"@material-ui/core/Checkbox\"\nimport Paper from \"@material-ui/core/Paper\"\nimport useSWR, { mutate } from \"swr\"\nimport { CurriculumDetailsType } from \"../CurriculumDetails\"\nimport { MaterialUiPickersDate } from \"@material-ui/pickers/typings/date\"\nimport { checkValidationErrors, Errors } from \"../../utils\"\nimport { DatePicker } from \"@material-ui/pickers/DatePicker\"\nimport { curriculumDetailsValidationObject } from \"../CurriculumDetails/ValidationObjects\"\nimport { ValidationError } from \"yup\"\nimport { newCurriculumValidationObject } from \"./ValidationObjects\"\nimport InformationCard from \"../InformationCard\"\nimport { currentCurriculumAndKindState } from \"../../state/planning\"\nimport HelpRoundedIcon from \"@material-ui/icons/HelpRounded\"\n\nconst getSteps = () => {\n return [\"Keuze kopiëren\", \"Details wijzigen\"]\n}\n\ntype curriculumToCopyFrom = { id: number; name: string }\n\ntype AvailabilityKinds = {\n id: number\n block_duration: number\n block_amount: number\n}\n\nexport const totalHours: number = 1659\n\nexport const CreateCurriculumDialog = () => {\n const [createDialog, setCreateDialog] = useRecoilState(createDialogState)\n const setCurrentCurriculum = useSetRecoilState(currentCurriculumState)\n const setCurrentCurriculumAndKinds = useSetRecoilState(\n currentCurriculumAndKindState\n )\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [activeStep, setActiveStep] = useState(0)\n const {\n data: dataAllCurricula,\n error: errorAllCurricula,\n } = useGetAllCurricula()\n const [curriculumName, setCurriculumName] = useState(\"\")\n const [\n curriculumToCopyFrom,\n setCurriculumToCopyFrom,\n ] = useState({ id: -1, name: \"\" })\n const [availabilityKind, setAvailabilityKind] = useState({\n id: -1,\n block_duration: -1,\n block_amount: -1,\n })\n const [left, setLeft] = React.useState([\n \"Docenten\",\n \"Cursussen\",\n \"Klassen\",\n \"MOT taken\",\n \"Teams\",\n ])\n const [right, setRight] = React.useState([])\n const { data: dataCurriculumDetails, error: errorCurriculumDetails } = useSWR(\n curriculumToCopyFrom.id !== -1\n ? `/api/curricula/${curriculumToCopyFrom.id}`\n : null\n )\n const { data: dataAvailabilityKinds, error: errorAvailabilityKinds } = useSWR<\n AvailabilityKinds[]\n >(\"/api/curricula/availability-kinds\")\n const [errors, setErrors] = useState[]>([])\n const [\n curriculumDetails,\n setCurriculumDetails,\n ] = useState({\n id: -1,\n name: \"\",\n default_fte: 0,\n default_fte_hours: 0,\n default_di: 0,\n default_organisational: 0,\n default_professional: 0,\n course_formula_w: 0,\n course_formula_ct: 0,\n course_formula_opslag: 0,\n course_formula_n: 0,\n course_formula_cor: 0,\n course_formula_r: 0,\n start_date: new Date(),\n end_date: new Date(),\n mot_tasks: [],\n availability_type: \"\",\n })\n\n useEffect(() => {\n if (typeof dataCurriculumDetails !== \"undefined\") {\n setCurriculumDetails({ ...dataCurriculumDetails, name: curriculumName })\n } else {\n setCurriculumDetails({\n id: -1,\n name: curriculumName,\n default_fte: 0,\n default_fte_hours: 0,\n default_di: 0,\n default_organisational: 0,\n default_professional: 0,\n course_formula_w: 0,\n course_formula_ct: 0,\n course_formula_opslag: 0,\n course_formula_n: 0,\n course_formula_cor: 0,\n course_formula_r: 0,\n start_date: new Date(),\n end_date: new Date(),\n mot_tasks: [],\n availability_type: \"\",\n })\n }\n }, [dataCurriculumDetails, curriculumName])\n\n useEffect(() => {\n setCurriculumDetails({ ...curriculumDetails, name: curriculumName })\n }, [curriculumName])\n\n useEffect(() => {\n if (typeof dataAvailabilityKinds !== \"undefined\") {\n setAvailabilityKind(dataAvailabilityKinds[0])\n }\n }, [dataAvailabilityKinds])\n\n useEffect(() => {\n if (createDialog) {\n mutate(\"/api/app/all-curricula\")\n } else {\n setActiveStep(0)\n setCurriculumName(\"\")\n setCurriculumToCopyFrom({ id: -1, name: \"\" })\n setLeft([\"Docenten\", \"Cursussen\", \"Klassen\", \"MOT taken\", \"Teams\"])\n setRight([])\n setCurriculumDetails({\n id: -1,\n name: curriculumName,\n default_fte: 0,\n default_fte_hours: 0,\n default_di: 0,\n default_organisational: 0,\n default_professional: 0,\n course_formula_w: 0,\n course_formula_ct: 0,\n course_formula_opslag: 0,\n course_formula_n: 0,\n course_formula_cor: 0,\n course_formula_r: 0,\n start_date: new Date(),\n end_date: new Date(),\n mot_tasks: [],\n availability_type: \"\",\n })\n }\n }, [createDialog])\n\n if (!dataAllCurricula) return <>\n\n if (errorAllCurricula) return \n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n setCurriculumDetails({\n ...curriculumDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const handleDateChange = (\n d: MaterialUiPickersDate,\n type: \"start_date\" | \"end_date\"\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${type}: ${d?.toLocaleDateString()}`)\n setCurriculumDetails({ ...curriculumDetails, [type]: d })\n }\n\n const createCurriculum = () => {\n const payload = {\n name: curriculumName,\n default_fte: curriculumDetails.default_fte,\n default_fte_hours: curriculumDetails.default_fte_hours,\n default_di: curriculumDetails.default_di,\n default_organisational: curriculumDetails.default_organisational,\n default_professional: curriculumDetails.default_professional,\n course_formula_w: curriculumDetails.course_formula_w,\n course_formula_ct: curriculumDetails.course_formula_ct,\n course_formula_opslag: curriculumDetails.course_formula_opslag,\n course_formula_n: curriculumDetails.course_formula_n,\n course_formula_cor: curriculumDetails.course_formula_cor,\n course_formula_r: curriculumDetails.course_formula_r,\n start_date: curriculumDetails.start_date,\n end_date: curriculumDetails.end_date,\n availability_kind: availabilityKind.id,\n curriculum_to_copy_from_id: curriculumToCopyFrom.id,\n copy_entities: right,\n }\n\n newCurriculumValidationObject\n .validate(curriculumDetails, { abortEarly: false })\n .then(() => {\n fetch(\"/api/curricula\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n }).then(async (r) => {\n if (r.ok) {\n mutate(\"/api/curricula\")\n setCreateDialog(false)\n snackbarText(\"Het curriculum is aangemaakt\")\n snackbarVisible(true)\n mutate(\"/api/app/all-curricula\").then(\n (data: useGetAllCurricula) => {\n setCurrentCurriculum({\n id: data[0].id,\n name: data[0].name,\n kind: data[0].kinds[0],\n })\n setCurrentCurriculumAndKinds(\n `${data[0].name}-${data[0].kinds[0]}`\n )\n }\n )\n } else {\n const json = await r.json()\n console.log(json)\n snackbarText(\n \"Er was een probleem bij het aanmaken van het curriculum\"\n )\n snackbarVisible(true)\n }\n })\n })\n .catch((err: ValidationError) => {\n checkValidationErrors(err, setErrors)\n })\n }\n\n return (\n setCreateDialog(false)}\n title=\"Maak curriculum aan\"\n content={() => (\n <>\n \n {getSteps().map((label) => (\n \n {label}\n \n ))}\n \n {activeStep === 0 ? (\n <>\n
\n
\n {\n if (e.target.value.length < 6) {\n setCurriculumName(e.target.value)\n }\n }}\n helperText={`Bijvoorbeeld: 21/22`}\n />\n \n v !== null\n ? setCurriculumToCopyFrom(v)\n : setCurriculumToCopyFrom({ id: -1, name: \"\" })\n }\n options={dataAllCurricula}\n getOptionLabel={(option) => option.name}\n renderInput={(params) => (\n \n )}\n />\n
\n
\n
\n \n
\n \n ) : activeStep === 1 ? (\n <>\n {curriculumToCopyFrom.id === -1 || !!dataCurriculumDetails ? (\n <>\n
\n
Standaard waardes
\n (\n <>\n
\n \n Totaal aantal uren per schooljaar\n {\" \"}\n x FTE{\" \"}\n x{\" \"}\n \n (DI | %)\n {\" \"}\n = X uren\n
\n \n )}\n />\n
\n (\n <>\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"default_fte\"\n )}\n helperText={\n errors.find((e) => e.path === \"default_fte\")\n ?.message\n ? errors.find((e) => e.path === \"default_fte\")\n ?.message\n : \"Voor elk OP\"\n }\n />\n \n 1 FTE = 1659 uren per schooljaar\n \n \n )}\n />\n {/* (\n <>\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"default_di\"\n )}\n helperText={\n errors.find((e) => e.path === \"default_di\")\n ?.message\n ? errors.find((e) => e.path === \"default_di\")\n ?.message\n : \"Voor elk OP\"\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_di} ={\" \"}\n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n )}{\" \"}\n uur per OP\n \n \n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n )}{\" \"}\n x 4 ={\" \"}\n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n ) * 4}{\" \"}\n uur per schooljaar\n \n \n )}\n /> */}\n
\n
\n (\n <>\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"default_organisational\"\n )}\n helperText={\n errors.find(\n (e) => e.path === \"default_organisational\"\n )?.message\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_organisational}% ={\" \"}\n {Math.round(\n totalHours *\n (curriculumDetails.default_organisational /\n 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n uren per schooljaar\n \n \n {Math.round(\n totalHours *\n (curriculumDetails.default_organisational /\n 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n / 4 ={\" \"}\n {Math.round(\n (totalHours *\n (curriculumDetails.default_organisational /\n 100) *\n curriculumDetails.default_fte) /\n 4\n )}{\" \"}\n uren per OP\n \n \n )}\n />\n (\n <>\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"default_professional\"\n )}\n helperText={\n errors.find(\n (e) => e.path === \"default_professional\"\n )?.message\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_professional}% ={\" \"}\n {Math.round(\n totalHours *\n (curriculumDetails.default_professional /\n 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n uren per schooljaar\n \n \n {Math.round(\n totalHours *\n (curriculumDetails.default_professional /\n 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n / 4 ={\" \"}\n {Math.round(\n (totalHours *\n (curriculumDetails.default_professional /\n 100) *\n curriculumDetails.default_fte) /\n 4\n )}{\" \"}\n per OP\n \n \n )}\n />\n
\n
\n (\n <>\n \n Uren worden op hele getallen afgerond en waarnodig\n naar beneden.\n \n \n )}\n />\n
\n
\n \n
\n
\n Formule cursus ={\" \"}\n w x{\" \"}\n Ct x{\" \"}\n Opslag +{\" \"}\n n x{\" \"}\n Cor +{\" \"}\n R = y min /\n 60 = z uur\n
\n
\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_w\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_w\")\n ? errors.find((e) => e.path === \"course_formula_w\")\n ?.message\n : \"Aantal lesmomenten. Bijv.: 4\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_ct\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_ct\")\n ? errors.find((e) => e.path === \"course_formula_ct\")\n ?.message\n : \"Contacttijd lesmoment met studenten (min). Bijv.: 150\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_opslag\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_opslag\")\n ? errors.find(\n (e) => e.path === \"course_formula_opslag\"\n )?.message\n : \"Opslagfactor. Bijv.: 1,4 of 1,6\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_n\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_n\")\n ? errors.find((e) => e.path === \"course_formula_n\")\n ?.message\n : \"Studenten in een klas. Bijv.: 30\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_cor\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_cor\")\n ? errors.find(\n (e) => e.path === \"course_formula_cor\"\n )?.message\n : \"Correctietijd per student (min). Bijv.: 10\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"course_formula_r\"\n )}\n helperText={\n errors.find((e) => e.path === \"course_formula_r\")\n ? errors.find((e) => e.path === \"course_formula_r\")\n ?.message\n : \"Reistijd. Bijv.: 0\"\n }\n />\n
\n
\n \n
\n
\n handleDateChange(d, \"start_date\")}\n format=\"dd-MM-yyyy\"\n cancelLabel=\"Annuleer\"\n okLabel=\"Selecteer datum\"\n />\n handleDateChange(d, \"end_date\")}\n format=\"dd-MM-yyyy\"\n cancelLabel=\"Annuleer\"\n okLabel=\"Selecteer datum\"\n />\n
\n
\n \n
\n {!dataAvailabilityKinds ? (\n \n ) : errorAvailabilityKinds ? (\n \n ) : (\n
\n (\n <>\n Met de beschikbaarheid type kan je aangeven\n hoeveel en hoelang de blokken in een dag zijn.\n \n )}\n style={{ marginBottom: \"24px\" }}\n />\n (\n <>\n Na het aanmaken van het curriculum kan de\n beschikbaarheid type niet meer worden gewijzigd.\n \n )}\n style={{ marginBottom: \"24px\" }}\n />\n \n v !== null\n ? setAvailabilityKind(v)\n : setAvailabilityKind({\n id: -1,\n block_duration: -1,\n block_amount: -1,\n })\n }\n options={dataAvailabilityKinds}\n getOptionLabel={(option) =>\n `${option.block_duration}min x ${option.block_amount} blokken`\n }\n renderInput={(params) => (\n \n )}\n />\n
\n )}\n
\n \n ) : !dataCurriculumDetails ? (\n \n ) : errorCurriculumDetails ? (\n \n ) : (\n <>err\n )}\n \n ) : (\n <>You're not supposed to be here 🤔\n )}\n \n )}\n actions={() => (\n
\n setActiveStep(activeStep - 1)}\n disabled={activeStep === 0}\n >\n Terug\n \n \n activeStep === getSteps().length - 1\n ? createCurriculum()\n : setActiveStep(activeStep + 1)\n }\n >\n {activeStep === getSteps().length - 1 ? \"Maak aan\" : \"Volgende\"}\n \n
\n )}\n />\n )\n}\n\nconst not = (a: string[], b: string[]) => {\n return a.filter((value) => b.indexOf(value) === -1)\n}\n\nconst intersection = (a: string[], b: string[]) => {\n return a.filter((value) => b.indexOf(value) !== -1)\n}\n\ntype TransferListProps = {\n chosenCurriculum: curriculumToCopyFrom\n leftState: {\n state: string[]\n setState: React.Dispatch>\n }\n rightState: {\n state: string[]\n setState: React.Dispatch>\n }\n}\n\nconst TransferList = (props: TransferListProps) => {\n const { chosenCurriculum, leftState, rightState } = props\n const [checked, setChecked] = React.useState([])\n const { state: left, setState: setLeft } = leftState\n const { state: right, setState: setRight } = rightState\n\n useEffect(() => {\n if (chosenCurriculum.id === -1) {\n setChecked([])\n setLeft([\"Docenten\", \"Cursussen\", \"Klassen\", \"MOT taken\", \"Teams\"])\n setRight([])\n }\n }, [chosenCurriculum])\n\n const leftChecked = intersection(checked, left)\n const rightChecked = intersection(checked, right)\n\n const handleToggle = (value: string) => () => {\n const currentIndex = checked.indexOf(value)\n const newChecked = [...checked]\n\n if (currentIndex === -1) {\n newChecked.push(value)\n } else {\n newChecked.splice(currentIndex, 1)\n }\n\n setChecked(newChecked)\n }\n\n const handleAllRight = () => {\n setRight(right.concat(left))\n setLeft([])\n }\n\n const handleCheckedRight = () => {\n setRight(right.concat(leftChecked))\n setLeft(not(left, leftChecked))\n setChecked(not(checked, leftChecked))\n }\n\n const handleCheckedLeft = () => {\n setLeft(left.concat(rightChecked))\n setRight(not(right, rightChecked))\n setChecked(not(checked, rightChecked))\n }\n\n const handleAllLeft = () => {\n setLeft(left.concat(right))\n setRight([])\n }\n\n const customList = (title: string, items: string[]) => (\n
\n {title}\n \n \n {items.map((value: string) => {\n const labelId = `transfer-list-item-${value}-label`\n\n return (\n \n \n \n \n \n \n )\n })}\n \n \n \n
\n )\n\n return (\n
\n {customList(\"Niet kopiëren\", left)}\n
\n \n ≫\n \n \n >\n \n \n <\n \n \n ≪\n \n
\n {customList(\"Wel kopiëren\", right)}\n
\n )\n}\n","import \"./CurriculumDetails.css\"\nimport React, { useEffect, useState } from \"react\"\nimport Toolbar from \"@material-ui/core/Toolbar\"\nimport {\n createStyles,\n Divider,\n lighten,\n makeStyles,\n TextField,\n Theme,\n Typography,\n} from \"@material-ui/core\"\nimport { useRecoilState, useSetRecoilState } from \"recoil\"\nimport {\n selectedCurriculumForDetailsState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport useSWR, { mutate } from \"swr\"\nimport { EmptyDetailsState } from \"../EmptyDetailsState\"\nimport { Loader } from \"../Loader\"\nimport { ErrorState } from \"../ErrorState\"\nimport { DatePicker } from \"@material-ui/pickers/DatePicker/DatePicker\"\nimport { MaterialUiPickersDate } from \"@material-ui/pickers/typings/date\"\nimport { CurriculumMOTTable } from \"./MOT\"\nimport { ValidationError } from \"yup\"\nimport {\n checkArrayValidationErrors,\n checkValidationErrors,\n Errors,\n ErrorsArray,\n ExceptionResponse,\n useFetchState,\n} from \"../../utils\"\nimport {\n curriculumDetailsMOTArrayValidationObject,\n curriculumDetailsValidationObject,\n} from \"./ValidationObjects\"\nimport { Dialog } from \"../Dialog\"\nimport { Button } from \"../Buttons\"\nimport { totalHours } from \"../CreateCurriculumDialog\"\nimport InformationCard from \"../InformationCard\"\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n position: \"sticky\",\n top: 0,\n backgroundColor: \"white\",\n borderBottom: \"1px solid rgba(0, 0, 0, .12)\",\n zIndex: 2,\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flexGrow: 1,\n },\n deleteButton: {\n marginRight: \"16px\",\n },\n })\n)\n\nexport type CurriculumDetailsType = {\n id: number\n name: string\n default_fte: number\n default_fte_hours: number\n default_di: number\n default_organisational: number\n default_professional: number\n course_formula_w: number\n course_formula_ct: number\n course_formula_opslag: number\n course_formula_n: number\n course_formula_cor: number\n course_formula_r: number\n start_date: Date\n end_date: Date\n mot_tasks: CurriculumDetailsMOT[]\n availability_type: string\n}\n\nexport type CurriculumDetailsMOT = {\n id: number\n type: string\n name: string\n hours: number\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\nexport const CurriculumDetails = () => {\n const classes = useToolbarStyles()\n const [selectedCurriculum, setSelectedCurriculum] = useRecoilState(\n selectedCurriculumForDetailsState\n )\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [updateCurriculumStatus, setUpdateCurriculumStatus] = useFetchState()\n const [deleteCurriculumStatus, setDeleteCurriculumStatus] = useFetchState()\n const [\n deleteConfirmationDialog,\n setDeleteConfirmationDialog,\n ] = useState(false)\n const [errors, setErrors] = useState[]>([])\n const [errorsMOT, setErrorsMOT] = useState<\n ErrorsArray[]\n >([])\n const [\n curriculumDetails,\n setCurriculumDetails,\n ] = useState({\n id: -1,\n name: \"\",\n default_fte: -1,\n default_fte_hours: -1,\n default_di: -1,\n default_organisational: -1,\n default_professional: -1,\n course_formula_w: -1,\n course_formula_ct: -1,\n course_formula_opslag: -1,\n course_formula_n: -1,\n course_formula_cor: -1,\n course_formula_r: -1,\n start_date: new Date(),\n end_date: new Date(),\n mot_tasks: [],\n availability_type: \"\",\n })\n const { data, error } = useSWR(() =>\n selectedCurriculum !== -1 ? `/api/curricula/${selectedCurriculum}` : null\n )\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setCurriculumDetails(data)\n }\n }, [data])\n\n useEffect(() => {\n if (selectedCurriculum) {\n setUpdateCurriculumStatus(\"initial\")\n setDeleteCurriculumStatus(\"initial\")\n }\n }, [selectedCurriculum])\n\n if (selectedCurriculum === -1) return \n\n if (!data) return \n\n if (error) return \n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n setCurriculumDetails({\n ...curriculumDetails,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const handleDateChange = (\n d: MaterialUiPickersDate,\n type: \"start_date\" | \"end_date\"\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${type}: ${d?.toLocaleDateString()}`)\n setCurriculumDetails({ ...curriculumDetails, [type]: d })\n }\n\n const updateCurriculum = () => {\n curriculumDetailsValidationObject\n .validate(curriculumDetails, { abortEarly: false })\n .then(() => {\n curriculumDetailsMOTArrayValidationObject\n .validate(curriculumDetails.mot_tasks, { abortEarly: false })\n .then(() => {\n setUpdateCurriculumStatus(\"loading\")\n setErrors([])\n setErrorsMOT([])\n fetch(`/api/curricula/${selectedCurriculum}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(curriculumDetails),\n })\n .then(async (r) => {\n if (r.ok) {\n setUpdateCurriculumStatus(\"success\")\n setSnackbarText(`De wijzigingen zijn opgeslagen`)\n setSnackbarVisible(true)\n mutate(`/api/curricula/${selectedCurriculum}`)\n } else {\n setUpdateCurriculumStatus(\"error\")\n const json = (await r.json()) as ExceptionResponse\n console.log(json)\n }\n })\n .catch((e) => {\n setUpdateCurriculumStatus(\"error\")\n console.log(e)\n setSnackbarText(\n `Er is iets fout gegaan bij het opslaan van de wijzigingen`\n )\n setSnackbarVisible(true)\n })\n })\n .catch((ve: ValidationError) =>\n checkArrayValidationErrors(ve, setErrorsMOT)\n )\n })\n .catch((ve: ValidationError) =>\n checkValidationErrors(ve, setErrors)\n )\n }\n\n const deleteCurriculum = () => {\n setDeleteCurriculumStatus(\"loading\")\n fetch(`/api/curricula/delete/${selectedCurriculum}`, {\n method: \"DELETE\",\n })\n .then(async (r) => {\n if (r.ok) {\n setDeleteCurriculumStatus(\"success\")\n setSelectedCurriculum(-1)\n setSnackbarText(`Het curriculum is verwijderd`)\n setSnackbarVisible(true)\n mutate(\"/api/curricula\")\n } else {\n setDeleteCurriculumStatus(\"error\")\n const json = (await r.json()) as ExceptionResponse\n console.log(json)\n }\n })\n .catch((e) => {\n setDeleteCurriculumStatus(\"error\")\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de curriculum`\n )\n setSnackbarVisible(true)\n })\n }\n\n return (\n <>\n \n \n {curriculumDetails.name}\n \n setDeleteConfirmationDialog(true)}\n className={classes.deleteButton}\n >\n Verwijder curriculum\n \n updateCurriculum()}\n >\n Sla wijzigingen op\n \n \n
\n
Standaard waardes
\n (\n <>\n
\n \n Totaal aantal uren per schooljaar\n {\" \"}\n x FTE x{\" \"}\n (DI | %) = X uren\n
\n \n )}\n />\n
\n (\n <>\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"default_fte\")}\n helperText={\n errors.find((e) => e.path === \"default_fte\")?.message\n ? errors.find((e) => e.path === \"default_fte\")?.message\n : \"Voor elk OP\"\n }\n />\n \n 1 FTE = 1659 uren per schooljaar\n \n \n )}\n />\n {/* (\n <>\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"default_di\")}\n helperText={\n errors.find((e) => e.path === \"default_di\")?.message\n ? errors.find((e) => e.path === \"default_di\")?.message\n : \"Voor elk OP\"\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_di} ={\" \"}\n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n )}{\" \"}\n uur per OP\n \n \n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n )}{\" \"}\n x 4 ={\" \"}\n {Math.ceil(\n curriculumDetails.default_di *\n totalHours *\n curriculumDetails.default_fte\n ) * 4}{\" \"}\n uur per schooljaar\n \n \n )}\n /> */}\n
\n
\n (\n <>\n handleChangeNumber(e)}\n error={errors.some(\n (e) => e.path === \"default_organisational\"\n )}\n helperText={\n errors.find((e) => e.path === \"default_organisational\")\n ?.message\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_organisational}% ={\" \"}\n {Math.round(\n totalHours *\n (curriculumDetails.default_organisational / 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n uren per schooljaar\n \n \n {Math.round(\n totalHours *\n (curriculumDetails.default_organisational / 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n / 4 ={\" \"}\n {Math.round(\n (totalHours *\n (curriculumDetails.default_organisational / 100) *\n curriculumDetails.default_fte) /\n 4\n )}{\" \"}\n uren per OP\n \n \n )}\n />\n (\n <>\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"default_professional\")}\n helperText={\n errors.find((e) => e.path === \"default_professional\")\n ?.message\n }\n />\n \n {totalHours} x {curriculumDetails.default_fte} x{\" \"}\n {curriculumDetails.default_professional}% ={\" \"}\n {Math.round(\n totalHours *\n (curriculumDetails.default_professional / 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n uren per schooljaar\n \n \n {Math.round(\n totalHours *\n (curriculumDetails.default_professional / 100) *\n curriculumDetails.default_fte\n )}{\" \"}\n / 4 ={\" \"}\n {Math.round(\n (totalHours *\n (curriculumDetails.default_professional / 100) *\n curriculumDetails.default_fte) /\n 4\n )}{\" \"}\n per OP\n \n \n )}\n />\n
\n
\n (\n <>\n \n Uren worden op hele getallen afgerond en waarnodig naar\n beneden.\n \n \n )}\n />\n
\n
\n \n
\n (\n
\n Formule cursus = w x{\" \"}\n Ct x{\" \"}\n Opslag +{\" \"}\n n x{\" \"}\n Cor +{\" \"}\n R = y min / 60 = z\n uur\n
\n )}\n />\n
\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_w\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_w\")\n ? errors.find((e) => e.path === \"course_formula_w\")?.message\n : \"Aantal lesmomenten. Bijv.: 4\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_ct\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_ct\")\n ? errors.find((e) => e.path === \"course_formula_ct\")?.message\n : \"Contacttijd lesmoment met studenten (min). Bijv.: 150\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_opslag\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_opslag\")\n ? errors.find((e) => e.path === \"course_formula_opslag\")\n ?.message\n : \"Opslagfactor. Bijv.: 1,4 of 1,6\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_n\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_n\")\n ? errors.find((e) => e.path === \"course_formula_n\")?.message\n : \"Studenten in een klas. Bijv.: 30\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_cor\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_cor\")\n ? errors.find((e) => e.path === \"course_formula_cor\")?.message\n : \"Correctietijd per student (min). Bijv.: 10\"\n }\n />\n handleChangeNumber(e)}\n error={errors.some((e) => e.path === \"course_formula_r\")}\n helperText={\n errors.find((e) => e.path === \"course_formula_r\")\n ? errors.find((e) => e.path === \"course_formula_r\")?.message\n : \"Reistijd. Bijv.: 0\"\n }\n />\n
\n
\n \n
\n
\n handleDateChange(d, \"start_date\")}\n format=\"dd-MM-yyyy\"\n cancelLabel=\"Annuleer\"\n okLabel=\"Selecteer datum\"\n />\n handleDateChange(d, \"end_date\")}\n format=\"dd-MM-yyyy\"\n cancelLabel=\"Annuleer\"\n okLabel=\"Selecteer datum\"\n />\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n setCurriculumDetails({ ...curriculumDetails, mot_tasks })\n }\n />\n
\n setDeleteConfirmationDialog(false)}\n title={`Curriculum verwijderen`}\n content={() => (\n

Weet je zeker dat je het curriculum wilt verwijderen?

\n )}\n actions={() => (\n <>\n \n deleteCurriculum()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder curriculum\n \n \n )}\n />\n \n )\n}\n","import \"./Curricula.css\"\nimport React from \"react\"\nimport { Topbar } from \"../../components/Layout\"\nimport { CurriculaTable } from \"../../components/CurriculaTable\"\nimport { CurriculumDetails } from \"../../components/CurriculumDetails\"\nimport { CreateCurriculumDialog } from \"../../components/CreateCurriculumDialog\"\nimport { useHistory } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport { searchbarState, createDialogState } from \"../../state/app\"\n\nexport const Curricula = () => {\n const setSearchbar = useSetRecoilState(searchbarState)\n const setCreateDialog = useSetRecoilState(createDialogState)\n\n let history = useHistory()\n history.listen(() => {\n setCreateDialog(false)\n setSearchbar(\"\")\n })\n\n return (\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n )\n}\n","import \"./TeacherNote.css\"\nimport React, { useEffect, useState } from \"react\"\nimport { TeacherNoteType } from \"../TeacherDetails/notes\"\nimport EditIcon from \"@material-ui/icons/EditRounded\"\nimport RemoveIcon from \"@material-ui/icons/RemoveCircleOutlineRounded\"\nimport { IconButton, TextField } from \"@material-ui/core\"\nimport { Dialog } from \"../Dialog\"\nimport { mutate } from \"swr\"\nimport { useParams } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../state/app\"\nimport {\n checkValidationErrors,\n Errors,\n ExceptionResponse,\n useFetchState,\n} from \"../../utils\"\nimport { object, string, ValidationError } from \"yup\"\nimport { Button } from \"../Buttons\"\n\ntype TeacherNoteProps = {\n editable?: boolean\n note: TeacherNoteType\n}\n\nexport const TeacherNote = (props: TeacherNoteProps) => {\n let { id }: { id: string } = useParams()\n const { editable, note } = props\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n\n const [updateNoteStatus, setUpdateNoteStatus] = useFetchState()\n const [deleteNoteStatus, setDeleteNoteStatus] = useFetchState()\n const date = new Date(note.date)\n const dateFormatted = `${date.toLocaleDateString()} @ ${date.getHours()}:${date.getMinutes()}`\n const [editedNote, setEditedNote] = useState(note.note)\n const [errors, setErrors] = useState[]>([])\n const [deleteConfirmationDialog, setDeleteConfirmationDialog] = useState<\n boolean\n >(false)\n const [editDialog, setEditDialog] = useState(false)\n\n const newNoteValidationObject = object({\n note: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n })\n\n const saveNote = () => {\n newNoteValidationObject\n .validate({ note: editedNote }, { abortEarly: false })\n .then(() => {\n setUpdateNoteStatus(\"loading\")\n fetch(`/api/teacher/${id}/note/update/${note.id}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ note: editedNote }),\n }).then(async (r) => {\n if (r.ok) {\n setUpdateNoteStatus(\"success\")\n setSnackbarText(\"De notitie is aangepast\")\n setSnackbarVisible(true)\n mutate(`/api/teacher/${id}/notes`)\n setEditDialog(false)\n } else {\n setUpdateNoteStatus(\"error\")\n const e: ExceptionResponse = await r.json()\n console.log(e)\n setSnackbarText(\n \"Er was een probleem bij het aanpassen van de notitie\"\n )\n setSnackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) => checkValidationErrors(e, setErrors))\n }\n const deleteNote = () => {\n setDeleteNoteStatus(\"loading\")\n fetch(`/api/teacher/${id}/note/delete/${note.id}`, {\n method: \"DELETE\",\n }).then(async (r) => {\n if (r.ok) {\n setDeleteNoteStatus(\"success\")\n setSnackbarText(\"De notitie is verwijderd\")\n setSnackbarVisible(true)\n mutate(`/api/teacher/${id}/notes`)\n mutate(`/api/teacher/${id}/notes-from-previous-curricula`)\n setDeleteConfirmationDialog(false)\n } else {\n setDeleteNoteStatus(\"error\")\n const e: ExceptionResponse = await r.json()\n console.log(e)\n setSnackbarText(\n \"Er was een probleem bij het verwijderen van de notitie\"\n )\n setSnackbarVisible(true)\n }\n })\n }\n\n return (\n
\n
\n
\n \n Curriculum {note.curriculum_name}\n \n {dateFormatted}\n
\n
\n {editable && (\n setEditDialog(true)}\n >\n \n \n )}\n setDeleteConfirmationDialog(true)}\n >\n \n \n
\n
\n
{note.note}
\n setEditDialog(false)}\n title=\"Notitie aanpassen\"\n content={() => (\n setEditedNote(e.target.value)}\n error={errors.some((e) => e.path === \"note\")}\n helperText={errors.find((e) => e.path === \"note\")?.message}\n />\n )}\n actions={() => (\n <>\n \n saveNote()}\n color=\"primary\"\n variant=\"contained\"\n >\n Opslaan\n \n \n )}\n />\n setDeleteConfirmationDialog(false)}\n title=\"Notitie verwijderen\"\n content={() =>

Weet je zeker dat je de notitie wilt verwijderen?

}\n actions={() => (\n <>\n \n deleteNote()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder notitie\n \n \n )}\n />\n
\n )\n}\n","import { Divider, TextField } from \"@material-ui/core\"\nimport React, { useEffect, useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport { object, string, ValidationError } from \"yup\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../state/app\"\nimport {\n checkValidationErrors,\n Errors,\n ExceptionResponse,\n useFetchState,\n} from \"../../utils\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Loader } from \"../Loader\"\nimport { TeacherNote } from \"../TeacherNote\"\nimport { Button } from \"../Buttons\"\n\nexport type TeacherNoteType = {\n id: number\n curriculum_name: string\n note: string\n date: Date\n}\n\nexport const TeacherNotes = () => {\n let { id }: { id: string } = useParams()\n\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [note, setNote] = useState(\"\")\n const [errors, setErrors] = useState[]>([])\n\n const [createNoteStatus, setCreateNoteStatus] = useFetchState()\n const { data: dataTeacherNotes, error: errorTeacherNotes } = useSWR<\n TeacherNoteType[]\n >(`/api/teacher/${id}/notes`)\n const {\n data: dataTeacherNotesFromPreviousCurricula,\n error: errorTeacherNotesFromPreviousCurricula,\n } = useSWR(\n `/api/teacher/${id}/notes-from-previous-curricula`\n )\n\n const newNoteValidationObject = object({\n note: string()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n })\n\n const saveNewNote = () => {\n newNoteValidationObject\n .validate({ note }, { abortEarly: false })\n .then(() => {\n setCreateNoteStatus(\"loading\")\n fetch(`/api/teacher/${id}/note`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ note }),\n }).then(async (r) => {\n if (r.ok) {\n setCreateNoteStatus(\"success\")\n setSnackbarText(\"De notitie is aangemaakt\")\n setSnackbarVisible(true)\n mutate(`/api/teacher/${id}/notes`)\n setNote(\"\")\n } else {\n setCreateNoteStatus(\"error\")\n setSnackbarText(\"Er was een probleem bij het maken van een notitie\")\n setSnackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) => checkValidationErrors(e, setErrors))\n }\n\n return (\n <>\n
\n

Notities

\n
\n setNote(e.target.value)}\n error={errors.some((e) => e.path === \"note\")}\n helperText={errors.find((e) => e.path === \"note\")?.message}\n />\n
\n
\n saveNewNote()}\n >\n Sla notitie op\n \n
\n \n
\n {!dataTeacherNotes ? (\n \n ) : errorTeacherNotes ? (\n \n ) : (\n <>\n {dataTeacherNotes.length <= 0 ? (\n <>\n \n Er zijn geen notities in het{\" \"}\n huidige curriculum. Maak er een aan.\n \n \n ) : (\n <>\n {dataTeacherNotes.map((note, key) => (\n \n ))}\n \n )}\n \n )}\n
\n \n
Notities uit andere curricula
\n
\n {!dataTeacherNotesFromPreviousCurricula ? (\n \n ) : errorTeacherNotesFromPreviousCurricula ? (\n \n ) : (\n <>\n {dataTeacherNotesFromPreviousCurricula.length <= 0 ? (\n <>\n \n Er zijn geen notities in andere curricula.\n \n \n ) : (\n <>\n {dataTeacherNotesFromPreviousCurricula.map((note, key) => (\n \n ))}\n \n )}\n \n )}\n
\n
\n \n )\n}\n","import {\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n FormGroup,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n} from \"@material-ui/core\"\nimport { Autocomplete } from \"@material-ui/lab\"\nimport React, { useEffect, useState } from \"react\"\nimport { useHistory, useParams } from \"react-router-dom\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport {\n currentCurriculumState,\n snackbarTextState,\n snackbarVisibleState,\n} from \"../../state/app\"\nimport { Errors, ExceptionResponse, useFetchState } from \"../../utils\"\nimport { Dialog } from \"../Dialog\"\nimport { ErrorState } from \"../ErrorState\"\nimport { Loader } from \"../Loader\"\nimport { Button } from \"../Buttons\"\n\ntype Personalia = {\n id: number\n curriculum_id: number\n personnel_code: string\n first_name: string\n last_name: string\n placeholder: boolean\n team: Team\n is_teamleader_of_team: boolean\n position: Position\n courseowner: Courseowner[]\n organisation: string\n}\n\ntype Position = {\n id: number\n name: string\n}\n\ntype Courseowner = {\n id: number\n code: string\n}\n\ntype Team = {\n id: number\n name: string\n}\n\nexport const TeacherPersonalia = () => {\n let history = useHistory()\n let { id }: { id: string } = useParams()\n\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [updateTeacherStatus, setUpdateTeacherStatus] = useFetchState()\n const [deleteTeacherStatus, setDeleteTeacherStatus] = useFetchState()\n const [deleteConfirmationDialog, setDeleteConfirmationDialog] = useState<\n boolean\n >(false)\n const [errors, setErrors] = useState[]>([])\n const [personalia, setPersonalia] = useState({\n id: -1,\n curriculum_id: -1,\n personnel_code: \"\",\n first_name: \"\",\n last_name: \"\",\n placeholder: false,\n team: { id: -1, name: \"\" },\n is_teamleader_of_team: false,\n position: { id: -1, name: \"\" },\n courseowner: [],\n organisation: \"\",\n })\n\n const { data, error } = useSWR(`/api/teacher/${id}/personalia`)\n const {\n data: dataAvailablePositions,\n error: errorAvailablePositions,\n } = useSWR(\n typeof data !== \"undefined\"\n ? `/api/teacher/${data.curriculum_id}/available-positions`\n : null\n )\n // const { data: dataAvailableCourseowner, error: errorAvailableCourseowner } = useSWR(\n // typeof data !== 'undefined' ? `/api/teacher/${data.curriculum_id}/available-courseowner` : null)\n const { data: dataAvailableTeams, error: errorAvailableTeams } = useSWR<\n Position[]\n >(\n typeof data !== \"undefined\"\n ? `/api/teacher/${data.curriculum_id}/available-teams`\n : null\n )\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setPersonalia(data)\n }\n }, [data])\n\n if (!data) return \n\n if (error) return \n\n const handleChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setPersonalia({\n ...personalia,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setPersonalia({\n ...personalia,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const handleChangeCheckbox = (event: React.ChangeEvent) => {\n setPersonalia({ ...personalia, [event.target.name]: event.target.checked })\n }\n\n const updatePersonalia = () => {\n setUpdateTeacherStatus(\"loading\")\n fetch(`/api/teacher/update`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(personalia),\n }).then(async (r) => {\n if (r.ok) {\n setUpdateTeacherStatus(\"success\")\n setSnackbarText(`De wijzigingen zijn opgeslagen`)\n setSnackbarVisible(true)\n mutate(`/api/teacher/${id}/personalia`)\n } else {\n setUpdateTeacherStatus(\"error\")\n const json: ExceptionResponse = await r.json()\n console.log(json)\n setSnackbarText(\n `Er is iets fout gegaan bij het opslaan van de wijzigingen`\n )\n setSnackbarVisible(true)\n }\n })\n }\n\n const deleteTeacher = () => {\n setDeleteTeacherStatus(\"loading\")\n fetch(`/api/teacher/delete/${data.id}`, {\n method: \"DELETE\",\n }).then(async (r) => {\n if (r.ok) {\n setDeleteTeacherStatus(\"success\")\n setSnackbarText(`De docent is verwijderd`)\n setSnackbarVisible(true)\n history.replace(\"/teachers\")\n mutate(`/api/teacher/all/${data.curriculum_id}`)\n } else {\n setDeleteTeacherStatus(\"error\")\n const json: ExceptionResponse = await r.json()\n console.log(json)\n setSnackbarText(\n `Er is iets fout gegaan bij het verwijderen van de docent`\n )\n setSnackbarVisible(true)\n }\n })\n }\n\n return (\n <>\n
\n

Personalia

\n
\n handleChange(e)}\n error={errors.some((e) => e.path === \"personnel_code\")}\n helperText={\n errors.find((e) => e.path === \"personnel_code\")?.message\n }\n />\n
\n
\n handleChange(e)}\n error={errors.some((e) => e.path === \"first_name\")}\n helperText={errors.find((e) => e.path === \"first_name\")?.message}\n />\n handleChange(e)}\n error={errors.some((e) => e.path === \"last_name\")}\n helperText={errors.find((e) => e.path === \"last_name\")?.message}\n />\n
\n
\n \n }\n label=\"Docent is een placeholder:\"\n labelPlacement=\"start\"\n />\n
\n \n
\n {!dataAvailablePositions ? (\n \n ) : errorAvailablePositions ? (\n \n ) : (\n \n v !== null\n ? setPersonalia({ ...personalia, position: v })\n : setPersonalia({\n ...personalia,\n position: data.position,\n })\n }\n options={dataAvailablePositions}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen resultaten\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n {/*
\n {!dataAvailableCourseowner\n ? \n : errorAvailableCourseowner\n ? \n : setPersonalia({ ...personalia, courseowner: v })}\n options={dataAvailableCourseowner}\n getOptionLabel={(option) => option.code}\n value={personalia.courseowner}\n filterSelectedOptions\n renderInput={(params) => (\n \n )}\n />}\n
*/}\n
\n {!dataAvailableTeams ? (\n \n ) : errorAvailableTeams ? (\n \n ) : (\n \n v !== null\n ? setPersonalia({ ...personalia, team: v })\n : setPersonalia({\n ...personalia,\n team: data.team,\n })\n }\n options={dataAvailableTeams}\n getOptionLabel={(option) => option.name}\n noOptionsText={\"Geen resultaten\"}\n renderInput={(params) => (\n \n )}\n />\n )}\n
\n
\n updatePersonalia()}\n >\n Sla personalia op\n \n setDeleteConfirmationDialog(true)}\n >\n Verwijder docent\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`Docent verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de docent{\" \"}\n {personalia.personnel_code} (\n {personalia.first_name} {personalia.last_name}) wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteTeacher()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder docent\n \n \n )}\n />\n \n )\n}\n","import {\n Checkbox,\n createStyles,\n Divider,\n FormControl,\n FormControlLabel,\n FormGroup,\n IconButton,\n InputLabel,\n lighten,\n makeStyles,\n MenuItem,\n Paper,\n Select,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Theme,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\"\nimport React, { useEffect, useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport { array, bool, number, object, string, ValidationError } from \"yup\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../../state/app\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport AddIcon from \"@material-ui/icons/AddRounded\"\nimport {\n checkValidationErrors,\n Errors,\n ErrorsArray,\n useFetchState,\n} from \"../../../utils\"\nimport { ErrorState } from \"../../ErrorState\"\nimport { Loader } from \"../../Loader\"\nimport { Dialog } from \"../../Dialog\"\nimport { Button } from \"../../Buttons\"\nimport HelpRoundedIcon from \"@material-ui/icons/HelpRounded\"\nimport InformationCard from \"../../InformationCard\"\n\ntype TabAanstellingType = {\n contract: string\n default_fte: number\n fte_op1: number\n fte_op2: number\n fte_op3: number\n fte_op4: number\n default_di: number\n di_op1: number\n di_op2: number\n di_op3: number\n di_op4: number\n organisational: number\n professional: number\n hours_subtracted_from_available_hours: number\n secondments: DetacheringType[]\n}\n\nexport const TabAanstelling = () => {\n let { id }: { id: string } = useParams()\n\n const snackbarText = useSetRecoilState(snackbarTextState)\n const snackbarVisible = useSetRecoilState(snackbarVisibleState)\n\n const [updateAanstellingStatus, setUpdateAanstellingStatus] = useFetchState()\n const [tabAanstellingErrors, setTabAanstellingErrors] = useState<\n Errors[]\n >([])\n const [errorsDetachering, setErrorsDetachering] = useState<\n ErrorsArray[]\n >([])\n const [tabAanstelling, setTabAanstelling] = useState({\n contract: \"\",\n default_fte: -1,\n fte_op1: -1,\n fte_op2: -1,\n fte_op3: -1,\n fte_op4: -1,\n default_di: -1,\n di_op1: -1,\n di_op2: -1,\n di_op3: -1,\n di_op4: -1,\n organisational: -1,\n professional: -1,\n hours_subtracted_from_available_hours: -1,\n secondments: [],\n })\n\n const { data, error } = useSWR(\n `/api/teacher/${id}/aanstelling`\n )\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setTabAanstelling(data)\n }\n }, [data])\n\n const handleChange = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setTabAanstelling({\n ...tabAanstelling,\n [e.target.name]: e.target.value,\n })\n }\n\n const handleChangeNumber = (\n e: React.ChangeEvent\n ) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`${e.target.name}: ${e.target.value}`)\n\n setTabAanstelling({\n ...tabAanstelling,\n [e.target.name]:\n e.target.value.length > 0 ? Number(e.target.value) : e.target.value,\n })\n }\n\n const updateAanstelling = () => {\n tabAanstellingValidationObject\n .validate(tabAanstelling, { abortEarly: false })\n .then(() => {\n setUpdateAanstellingStatus(\"loading\")\n setTabAanstellingErrors([])\n fetch(`/api/teacher/${id}/aanstelling/update`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(tabAanstelling),\n }).then(async (r) => {\n if (r.ok) {\n setUpdateAanstellingStatus(\"success\")\n snackbarText(\"De wijzigingen zijn opgeslagen\")\n snackbarVisible(true)\n mutate(`/api/teacher/${id}/aanstelling`)\n mutate(`/api/teacher/${id}/taaktoedeling`)\n } else {\n setUpdateAanstellingStatus(\"error\")\n console.log(r.status)\n snackbarText(\n \"Er was een probleem met het opslaan van de aanstelling\"\n )\n snackbarVisible(true)\n }\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors(e, setTabAanstellingErrors)\n )\n }\n\n if (!data) return \n\n if (error) return \n\n return (\n <>\n
\n \n Type aanstelling\n \n setTabAanstelling({\n ...tabAanstelling,\n contract: e.target.value as TabAanstellingType[\"contract\"],\n })\n }\n >\n Vast\n Tijdelijk\n \n \n
\n
Organisatorische en professionalisering
\n
\n (\n
\n \n {\n if (Number(e.target.value) < 0) {\n setTabAanstelling({\n ...tabAanstelling,\n organisational: 0,\n })\n } else {\n handleChangeNumber(e)\n }\n }}\n error={tabAanstellingErrors.some(\n (e) => e.path === \"organisational\"\n )}\n helperText={\n tabAanstellingErrors.find(\n (e) => e.path === \"organisational\"\n )?.message\n }\n />\n {\n if (Number(e.target.value) < 0) {\n setTabAanstelling({ ...tabAanstelling, professional: 0 })\n } else {\n handleChangeNumber(e)\n }\n }}\n error={tabAanstellingErrors.some(\n (e) => e.path === \"professional\"\n )}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"professional\")\n ?.message\n }\n />\n
\n \n Vul hier het percentage in voor het hele curriculum.\n \n
\n )}\n />\n \n
\n FTE per periode (Standaard per OP: {data.default_fte})\n
\n
\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"fte_op1\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"fte_op1\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"fte_op2\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"fte_op2\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"fte_op3\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"fte_op3\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"fte_op4\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"fte_op4\")?.message\n }\n />\n
\n
DI per periode in uren
\n
\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"di_op1\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"di_op1\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"di_op2\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"di_op2\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"di_op3\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"di_op3\")?.message\n }\n />\n handleChangeNumber(e)}\n error={tabAanstellingErrors.some((e) => e.path === \"di_op4\")}\n helperText={\n tabAanstellingErrors.find((e) => e.path === \"di_op4\")?.message\n }\n />\n
\n \n \n setTabAanstelling({ ...tabAanstelling, secondments: deta })\n }\n />\n
\n updateAanstelling()}\n >\n Sla wijzigingen op\n \n
\n \n
Taaktoedeling
\n (\n <>\n \n Uren worden op hele getallen afgerond en waarnodig naar beneden.\n \n \n )}\n />\n \n \n )\n}\n\nconst tabAanstellingValidationObject = object<\n Omit<\n TabAanstellingType,\n \"contract\" | \"default_fte\" | \"default_di\" | \"secondments\"\n >\n>({\n fte_op1: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n fte_op2: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n fte_op3: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n fte_op4: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n di_op1: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n di_op2: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n di_op3: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n di_op4: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n organisational: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n professional: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n hours_subtracted_from_available_hours: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n})\n\nexport const DetacheringValidationObject = object({\n id: number().required(),\n hours: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n reason: string().required(\"Dit veld is verplicht\"),\n active_op1: bool(),\n active_op2: bool(),\n active_op3: bool(),\n active_op4: bool(),\n})\n\nexport const DetacheringArrayValidationObject = array().of(\n DetacheringValidationObject\n)\n\nexport const newDetacheringValidationObject = object({\n hours: number()\n .typeError(\"Dit veld is verplicht\")\n .required(\"Dit veld is verplicht\"),\n reason: string().required(\"Dit veld is verplicht\"),\n active_op1: bool(),\n active_op2: bool(),\n active_op3: bool(),\n active_op4: bool(),\n})\n\ntype DetacheringType = {\n id: number\n hours: number\n reason: string\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\ninterface HeadCell {\n disablePadding: boolean\n id: keyof DetacheringType\n label: string\n numeric: boolean\n minWidth: number\n}\n\nconst headCells: HeadCell[] = [\n {\n id: \"hours\",\n numeric: true,\n disablePadding: false,\n label: \"Uren\",\n minWidth: 100,\n },\n {\n id: \"reason\",\n numeric: false,\n disablePadding: false,\n label: \"Reden\",\n minWidth: 200,\n },\n {\n id: \"active_op1\",\n numeric: false,\n disablePadding: false,\n label: \"OP1\",\n minWidth: 50,\n },\n {\n id: \"active_op2\",\n numeric: false,\n disablePadding: false,\n label: \"OP2\",\n minWidth: 50,\n },\n {\n id: \"active_op3\",\n numeric: false,\n disablePadding: false,\n label: \"OP3\",\n minWidth: 50,\n },\n {\n id: \"active_op4\",\n numeric: false,\n disablePadding: false,\n label: \"OP4\",\n minWidth: 50,\n },\n]\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\nconst EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n )\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n Detachering\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n}\n\ntype DetacheringProps = {\n errors: { message: string; index: number; path: string }[]\n detachering: DetacheringType[]\n setDetachering: (detachering: DetacheringType[]) => void\n}\n\nexport type newDetacheringType = {\n hours: number\n reason: string\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\nconst Detachering = (props: DetacheringProps) => {\n let { id }: { id: string } = useParams()\n const { errors, detachering, setDetachering } = props\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [deleteSelectedStatus, setDeleteSelectedStatus] = useFetchState()\n const [createDetacheringStatus, setCreateDetacheringStatus] = useFetchState()\n const [selected, setSelected] = useState([])\n const [\n createDetacheringDialog,\n setCreateDetacheringDialog,\n ] = useState(false)\n const [newDetachering, setNewDetachering] = useState({\n hours: 0,\n reason: \"\",\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n const [newDetacheringErrors, setNewDetacheringErrors] = useState<\n Errors[]\n >([])\n const [\n deleteConfirmationDialog,\n setDeleteConfirmationDialog,\n ] = useState(false)\n\n useEffect(() => {\n if (!createDetacheringDialog) {\n setNewDetachering({\n hours: 0,\n reason: \"\",\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n setNewDetacheringErrors([])\n }\n }, [createDetacheringDialog])\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = detachering.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (\n event: React.MouseEvent,\n task: DetacheringType\n ) => {\n const selectedIndex = selected.indexOf(task)\n let newSelected: DetacheringType[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, task)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const handleChange = (d: DetacheringType) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`[${d.id}] ${d.reason}: ${d.hours}`)\n\n let new_detachering = detachering\n const index = new_detachering.findIndex((t) => t.id === d.id)\n new_detachering[index] = d\n\n setDetachering(new_detachering)\n }\n\n const createDetachering = () => {\n newDetacheringValidationObject\n .validate(newDetachering, { abortEarly: false })\n .then(() => {\n setCreateDetacheringStatus(\"loading\")\n setNewDetacheringErrors([])\n fetch(`/api/teacher/${id}/detachering`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(newDetachering),\n })\n .then(async (r) => {\n if (r.ok) {\n setCreateDetacheringStatus(\"success\")\n mutate(`/api/teacher/${id}/aanstelling`)\n mutate(`/api/teacher/${id}/taaktoedeling`)\n setCreateDetacheringDialog(false)\n setSnackbarText(\"De detachering is aangemaakt\")\n setSnackbarVisible(true)\n } else {\n setCreateDetacheringStatus(\"error\")\n }\n })\n .catch((e) => {\n setCreateDetacheringStatus(\"error\")\n console.log(e)\n })\n })\n .catch((err: ValidationError) =>\n checkValidationErrors(err, setNewDetacheringErrors)\n )\n }\n\n const deleteSelected = () => {\n setDeleteSelectedStatus(\"loading\")\n const payload = selected\n fetch(`/api/teacher/${id}/detachering/delete-multiple`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then((r) => {\n if (r.ok) {\n setDeleteSelectedStatus(\"success\")\n setDeleteConfirmationDialog(false)\n setSnackbarText(\n `De geselecteerde detachering${\n selected.length > 1 ? \"en zijn\" : \" zijn\"\n } verwijderd.`\n )\n setSnackbarVisible(true)\n setSelected([])\n mutate(`/api/teacher/${id}/aanstelling`)\n mutate(`/api/teacher/${id}/taaktoedeling`)\n } else {\n setDeleteSelectedStatus(\"error\")\n }\n })\n .catch((e) => {\n setDeleteSelectedStatus(\"error\")\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de detachering${\n selected.length > 1 ? \"en\" : \"\"\n }.`\n )\n setSnackbarVisible(true)\n })\n }\n\n const isSelected = (detachering: DetacheringType) =>\n selected.indexOf(detachering) !== -1\n\n return (\n \n \n \n \n \n \n \n {detachering.length > 0 ? (\n <>\n \n \n setCreateDetacheringDialog(true)}\n >\n \n \n \n \n Maak een nieuwe detachering aan\n \n \n {detachering.map((deta, key) => {\n const isItemSelected = isSelected(deta)\n\n return (\n \n \n handleClick(event, deta)}\n />\n \n \n \n handleChange({\n ...deta,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n type=\"number\"\n error={errors.some(\n (e) => e.index === key && e.path === \"hours\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"hours\"\n )?.message\n }\n />\n \n \n \n handleChange({\n ...deta,\n reason: e.target.value,\n })\n }\n type=\"text\"\n error={errors.some(\n (e) => e.index === key && e.path === \"reason\"\n )}\n helperText={\n errors.find(\n (e) => e.index === key && e.path === \"reason\"\n )?.message\n }\n multiline\n />\n \n \n \n handleChange({\n ...deta,\n active_op1: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...deta,\n active_op2: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...deta,\n active_op3: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...deta,\n active_op4: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n )\n })}\n \n ) : (\n <>\n \n \n setCreateDetacheringDialog(true)}\n >\n \n \n \n \n Maak een nieuwe detachering aan\n \n \n \n \n Er zijn geen detacheringen. Maak een detachering aan.\n \n \n \n )}\n \n
\n
\n setDeleteConfirmationDialog(false)}\n title={`Detachering${selected.length > 1 ? \"en\" : \"\"} verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde detachering\n {selected.length > 1 ? \"en\" : \"\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected()}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder detachering{selected.length > 1 ? \"en\" : \"\"}\n \n \n )}\n />\n setCreateDetacheringDialog(false)}\n title={`Nieuwe detachering`}\n content={() => (\n
\n
\n \n setNewDetachering({\n ...newDetachering,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n error={newDetacheringErrors.some((e) => e.path === \"hours\")}\n helperText={\n newDetacheringErrors.find((e) => e.path === \"hours\")?.message\n }\n fullWidth\n />\n
\n
\n \n setNewDetachering({\n ...newDetachering,\n reason: e.target.value,\n })\n }\n error={newDetacheringErrors.some((e) => e.path === \"reason\")}\n helperText={\n newDetacheringErrors.find((e) => e.path === \"reason\")?.message\n }\n fullWidth\n multiline\n />\n
\n
\n \n \n setNewDetachering({\n ...newDetachering,\n active_op1: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP1\"\n labelPlacement=\"top\"\n />\n \n setNewDetachering({\n ...newDetachering,\n active_op2: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP2\"\n labelPlacement=\"top\"\n />\n \n setNewDetachering({\n ...newDetachering,\n active_op3: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP3\"\n labelPlacement=\"top\"\n />\n \n setNewDetachering({\n ...newDetachering,\n active_op4: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP4\"\n labelPlacement=\"top\"\n />\n \n
\n
\n )}\n actions={() => (\n <>\n \n createDetachering()}\n color=\"primary\"\n variant=\"contained\"\n >\n Maak detachering aan\n \n \n )}\n />\n
\n )\n}\n\nexport type TaakToedelingType = {\n total_available_hours: number\n total_available_hours_op1: number\n total_available_hours_op2: number\n total_available_hours_op3: number\n total_available_hours_op4: number\n di: TaakToedelingTypeDetails\n secondments: TaakToedelingTypeDetails\n organizational_tasks: TaakToedelingTypeDetails\n organization_tasks_other: TaakToedelingTypeDetails\n professionalization_tasks: TaakToedelingTypeDetails\n professionalization_tasks_other: TaakToedelingTypeDetails\n contact_time: TaakToedelingTypeDetails\n contact_time_with_factor: TaakToedelingTypeDetails\n supervision: {\n interns: TaakToedelingTypeDetails\n graduates: TaakToedelingTypeDetails\n }\n mean_raise_factor: number\n oddment_total: number\n oddment_op1: number\n oddment_op2: number\n oddment_op3: number\n oddment_op4: number\n}\n\ntype TaakToedelingTypeDetails = {\n total: number\n op1: number\n op2: number\n op3: number\n op4: number\n}\n\nconst TaaktoedelingTable = () => {\n let { id }: { id: string } = useParams()\n const { data, error } = useSWR(\n `/api/teacher/${id}/taaktoedeling`\n )\n\n if (!data) return \n\n if (error) return \n\n return (\n
\n \n \n \n \n Totaal\n OP1\n OP2\n OP3\n OP4\n \n \n \n \n \n Beschikbare uren\n \n {data.total_available_hours}\n \n {data.total_available_hours_op1}\n \n \n {data.total_available_hours_op2}\n \n \n {data.total_available_hours_op3}\n \n \n {data.total_available_hours_op4}\n \n \n \n \n DI\n \n {data.di.total}\n {data.di.op1}\n {data.di.op2}\n {data.di.op3}\n {data.di.op4}\n \n \n \n Detachering\n \n {data.secondments.total}\n {data.secondments.op1}\n {data.secondments.op2}\n {data.secondments.op3}\n {data.secondments.op4}\n \n \n \n Organisatorische taak\n \n \n Organisatorische taak ALG\n \n \n {data.organizational_tasks.total}\n \n {data.organizational_tasks.op1}\n {data.organizational_tasks.op2}\n {data.organizational_tasks.op3}\n {data.organizational_tasks.op4}\n \n \n \n \n Overige taken\n \n \n {data.organization_tasks_other.total}\n \n \n {data.organization_tasks_other.op1}\n \n \n {data.organization_tasks_other.op2}\n \n \n {data.organization_tasks_other.op3}\n \n \n {data.organization_tasks_other.op4}\n \n \n \n \n Professionaliseringstaak\n \n \n Basisrecht professionalisering\n \n \n {data.professionalization_tasks.total}\n \n \n {data.professionalization_tasks.op1}\n \n \n {data.professionalization_tasks.op2}\n \n \n {data.professionalization_tasks.op3}\n \n \n {data.professionalization_tasks.op4}\n \n \n \n \n \n Overige taken\n \n \n {data.professionalization_tasks_other.total}\n \n \n {data.professionalization_tasks_other.op1}\n \n \n {data.professionalization_tasks_other.op2}\n \n \n {data.professionalization_tasks_other.op3}\n \n \n {data.professionalization_tasks_other.op4}\n \n \n \n \n Onderwijstaken\n \n \n Contacttijd\n \n \n \n \n \n {data.contact_time.total}\n \n \n {data.contact_time.op1}\n \n \n {data.contact_time.op2}\n \n \n {data.contact_time.op3}\n \n \n {data.contact_time.op4}\n \n \n \n \n \n Contacttijd inclusief opslag\n \n \n {data.contact_time_with_factor.total}\n \n \n {data.contact_time_with_factor.op1}\n \n \n {data.contact_time_with_factor.op2}\n \n \n {data.contact_time_with_factor.op3}\n \n \n {data.contact_time_with_factor.op4}\n \n \n \n \n Begeleiding\n \n \n Stagiairs\n \n \n {data.supervision.interns.total}\n \n {data.supervision.interns.op1}\n {data.supervision.interns.op2}\n {data.supervision.interns.op3}\n {data.supervision.interns.op4}\n \n \n \n \n Afstudeerders\n \n \n {data.supervision.graduates.total}\n \n \n {data.supervision.graduates.op1}\n \n \n {data.supervision.graduates.op2}\n \n \n {data.supervision.graduates.op3}\n \n \n {data.supervision.graduates.op4}\n \n \n \n \n Restant beschikbare uren\n \n {data.oddment_total}\n {data.oddment_op1}\n {data.oddment_op2}\n {data.oddment_op3}\n {data.oddment_op4}\n \n \n
\n
\n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport {\n Table as MdTable,\n TableHead,\n TableRow,\n TableCell,\n Checkbox,\n createStyles,\n lighten,\n makeStyles,\n Theme,\n IconButton,\n Toolbar,\n Tooltip,\n Typography,\n Paper,\n Divider,\n TableBody,\n TableContainer,\n} from \"@material-ui/core\"\nimport DeleteIcon from \"@material-ui/icons/DeleteRounded\"\nimport AddIcon from \"@material-ui/icons/AddRounded\"\nimport { DialogProps } from \"../Dialog\"\n\nexport type HeadCell = {\n disablePadding: boolean\n id: keyof T\n label: string\n numeric: boolean\n minWidth: number\n}\n\ninterface EnhancedTableProps {\n numSelected: number\n onSelectAllClick: (event: React.ChangeEvent) => void\n rowCount: number\n}\n\ninterface EnhancedTableToolbarProps {\n numSelected: number\n setDeleteConfirmationDialog: React.Dispatch>\n}\n\nconst useToolbarStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: \"1 1 100%\",\n },\n })\n)\n\ntype TableDialogProps = {\n open: DialogProps[\"open\"]\n onClose: DialogProps[\"onClose\"]\n selected: T[]\n setSelected: React.Dispatch>\n}\n\ntype TableChildren = {\n data: T\n handleClick: (event: React.MouseEvent, task: T) => void\n handleChange: (d: T) => Promise\n key: number\n}\n\ntype TableProps = {\n title: string\n headcells: HeadCell[]\n data: T[]\n children: (props: TableChildren) => JSX.Element\n setData?: (data: T[]) => void\n resetNewState: () => void\n CreateDialog: (props: TableDialogProps) => JSX.Element\n DeleteDialog: (props: TableDialogProps) => JSX.Element\n text?: {\n new: string\n empty: string\n }\n BottomActions?: () => JSX.Element\n}\n\nfunction Table(props: TableProps) {\n const {\n title,\n headcells,\n data,\n children,\n setData,\n resetNewState,\n CreateDialog,\n DeleteDialog,\n text,\n BottomActions,\n } = props\n const [selected, setSelected] = useState([])\n\n const [createDialogOpen, setCreateDialogOpen] = useState(false)\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false)\n\n useEffect(() => {\n if (!createDialogOpen) {\n resetNewState()\n }\n }, [createDialogOpen])\n\n const handleSelectAllClick = (event: React.ChangeEvent) => {\n if (event.target.checked) {\n const newSelecteds = data.map((n) => n)\n setSelected(newSelecteds)\n return\n }\n setSelected([])\n }\n\n const handleClick = (event: React.MouseEvent, task: T) => {\n const selectedIndex = selected.indexOf(task)\n let newSelected: T[] = []\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, task)\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1))\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1))\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n )\n }\n\n setSelected(newSelected)\n }\n\n const handleChange = (d: T): Promise => {\n return new Promise((resolve, reject) => {\n if (process.env.NODE_ENV === \"development\")\n console.log(`[${d.id}] changed`)\n\n let new_data = [...data]\n const index = new_data.findIndex((t) => t.id === d.id)\n new_data[index] = d\n\n resolve(new_data)\n })\n }\n\n const EnhancedTableHead = (props: EnhancedTableProps) => {\n const { onSelectAllClick, numSelected, rowCount } = props\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headcells.map((headcell) => (\n \n {headcell.label}\n \n ))}\n \n \n )\n }\n\n const EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\n const classes = useToolbarStyles()\n const { numSelected, setDeleteConfirmationDialog } = props\n\n return (\n \n {numSelected > 0 ? (\n \n {numSelected} geselecteerd\n \n ) : (\n \n {title}\n \n )}\n {numSelected > 0 && (\n \n setDeleteConfirmationDialog(true)}\n >\n \n \n \n )}\n \n )\n }\n\n const isSelected = (d: T) => selected.indexOf(d) !== -1\n\n return (\n <>\n \n \n \n \n \n \n \n {data.length > 0 ? (\n <>\n \n \n setCreateDialogOpen(true)}>\n \n \n \n \n {text?.new ? text.new : \"Maak er een aan.\"}\n \n \n {data.map((d, key) => {\n const isItemSelected = isSelected(d)\n\n return (\n \n \n handleClick(event, d)}\n />\n \n {children({ data: d, handleClick, handleChange, key })}\n \n )\n })}\n \n ) : (\n <>\n \n \n setCreateDialogOpen(true)}>\n \n \n \n \n {text?.new ? text.new : \"Maak er een aan.\"}\n \n \n \n \n {text?.empty\n ? text.empty\n : \"Er bestaat nog niks. Maak er een aan.\"}\n \n \n \n )}\n \n \n \n {DeleteDialog({\n open: deleteDialogOpen,\n onClose: () => setDeleteDialogOpen(false),\n selected: selected,\n setSelected: setSelected,\n })}\n {CreateDialog({\n open: createDialogOpen,\n onClose: () => setCreateDialogOpen(false),\n selected: selected,\n setSelected: setSelected,\n })}\n \n {BottomActions && }\n \n )\n}\n\nexport default Table\n","import {\n Divider,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n TextField,\n Table as MdTable,\n} from \"@material-ui/core\"\nimport React, { useEffect, useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport { array, number, object, ValidationError } from \"yup\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../../state/app\"\nimport {\n checkArrayValidationErrors,\n checkValidationErrors,\n Errors,\n ErrorsArray,\n useFetchState,\n} from \"../../../utils\"\nimport { Dialog } from \"../../Dialog\"\nimport Table, { HeadCell } from \"../../Table\"\nimport { Button } from \"../../Buttons\"\n\ntype Supervision = {\n interns_summary: SupervisionSummary\n graduates_summary: SupervisionSummary\n interns: SupervisionObject[]\n graduates: SupervisionObject[]\n}\n\ntype SupervisionSummary = {\n total: number\n op1: number\n op2: number\n op3: number\n op4: number\n}\n\ntype SupervisionObject = {\n id: number\n start_op: number\n end_op: number\n}\n\ntype Onderwijstaken = {\n period: number\n course_code: string\n course_name: string\n curriculum_kind: string\n student_amount: number\n contact_student: number\n meetings: number\n meeting_duration: number\n raise_factor: number\n correction_time: number\n}\n\nexport const TabOnderwijstaken = () => {\n let { id }: { id: string } = useParams()\n const [tabSupervision, setTabSupervision] = useState({\n interns_summary: {\n total: -1,\n op1: -1,\n op2: -1,\n op3: -1,\n op4: -1,\n },\n graduates_summary: {\n total: -1,\n op1: -1,\n op2: -1,\n op3: -1,\n op4: -1,\n },\n interns: [],\n graduates: [],\n })\n const [onderwijstaken, setOnderwijstaken] = useState([])\n const [InternSupervisionErrors, setInternSupervisionErrors] = useState<\n ErrorsArray[]\n >([])\n\n const [\n openExportOnderwijstakenDialog,\n setOpenExportOnderwijstakenDialog,\n ] = useState(false)\n\n const { data: supervisionData, error: supervisionError } = useSWR<\n Supervision\n >(id ? `/api/teacher/${id}/supervision` : null)\n const { data: onderwijstakenData, error: onderwijstakenError } = useSWR<\n Onderwijstaken[]\n >(id ? `/api/teacher/${id}/onderwijstaken` : null)\n\n useEffect(() => {\n if (typeof supervisionData !== \"undefined\") {\n setTabSupervision(supervisionData)\n }\n if (typeof onderwijstakenData !== \"undefined\") {\n setOnderwijstaken(onderwijstakenData)\n }\n }, [supervisionData, onderwijstakenData])\n\n return (\n <>\n
Begeleiding
\n \n \n \n setTabSupervision({ ...tabSupervision, interns: data })\n }\n supervisionErrors={InternSupervisionErrors}\n setSupervisionErrors={setInternSupervisionErrors}\n supervisionKind=\"Stagiairs\"\n />\n \n \n setTabSupervision({ ...tabSupervision, graduates: data })\n }\n supervisionErrors={InternSupervisionErrors}\n setSupervisionErrors={setInternSupervisionErrors}\n supervisionKind=\"Afstudeerders\"\n />\n \n
\n
Onderwijstaken
\n {/* setOpenExportOnderwijstakenDialog(true)}\n >\n Exporteer\n */}\n
\n \n \n )\n}\n\ntype SupervisionTableProps = {\n supervision: SupervisionObject[]\n setSupervision: (data: SupervisionObject[]) => void\n supervisionErrors: ErrorsArray[]\n setSupervisionErrors: React.Dispatch<\n React.SetStateAction[]>\n >\n supervisionKind: \"Afstudeerders\" | \"Stagiairs\"\n}\n\nconst InternsSupervisionTable = (props: SupervisionTableProps) => {\n let { id }: { id: string } = useParams()\n const {\n supervision,\n setSupervision,\n supervisionErrors,\n setSupervisionErrors,\n supervisionKind,\n } = props\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [\n createNewSupervisionStatus,\n setCreateNewSupervisionStatus,\n ] = useFetchState()\n const [updateSupervisionStatus, setUpdateSupervisionStatus] = useFetchState()\n const [deleteSupervisionStatus, setDeleteSupervisionStatus] = useFetchState()\n const [newSupervision, setNewSupervision] = useState<\n Omit\n >({\n start_op: 1,\n end_op: 2,\n })\n const [newSupervisionErrors, setNewSupervisionErrors] = useState<\n Errors>[]\n >([])\n\n const headcells: HeadCell[] = [\n {\n id: \"start_op\",\n numeric: false,\n disablePadding: false,\n label: \"Start OP\",\n minWidth: 50,\n },\n {\n id: \"end_op\",\n numeric: false,\n disablePadding: false,\n label: \"End OP\",\n minWidth: 50,\n },\n ]\n\n const resetNewSupervisionState = () => {\n setNewSupervision({\n start_op: 1,\n end_op: 2,\n })\n }\n\n const createNewSupervision = (onClose: () => void) => {\n newSupervisionValidationObject\n .validate(newSupervision, { abortEarly: false })\n .then(() => {\n setCreateNewSupervisionStatus(\"loading\")\n setNewSupervisionErrors([])\n fetch(`/api/teacher/${id}/supervision`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n type: supervisionKind,\n ...newSupervision,\n }),\n })\n .then(async (r) => {\n if (r.ok) {\n setCreateNewSupervisionStatus(\"success\")\n mutate(`/api/teacher/${id}/supervision`)\n setSnackbarText(\"De begeleiding is toegevoegd\")\n setSnackbarVisible(true)\n onClose()\n }\n })\n .catch((e) => {\n setCreateNewSupervisionStatus(\"error\")\n console.log(e)\n })\n })\n .catch((err: ValidationError) =>\n checkValidationErrors>(\n err,\n setNewSupervisionErrors\n )\n )\n }\n\n const saveChanges = () => {\n supervisionArrayValidationObject\n .validate(supervision, { abortEarly: false })\n .then(() => {\n setUpdateSupervisionStatus(\"loading\")\n setSupervisionErrors([])\n fetch(`/api/teacher/${id}/supervision/update`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(supervision),\n })\n .then(async (r) => {\n setUpdateSupervisionStatus(\"success\")\n mutate(`/api/teacher/${id}/supervision`)\n setSnackbarText(\"De begeleiding is toegevoegd\")\n setSnackbarVisible(true)\n })\n .catch((e) => {\n setUpdateSupervisionStatus(\"error\")\n console.log(e)\n setSnackbarText(`Is is iets fout gegaan.`)\n setSnackbarVisible(true)\n })\n })\n .catch((e: ValidationError) =>\n checkArrayValidationErrors(e, setSupervisionErrors)\n )\n }\n\n const deleteSelected = (\n selected: SupervisionObject[],\n onClose: () => void,\n setSelected: React.Dispatch>\n ) => {\n setDeleteSupervisionStatus(\"loading\")\n fetch(`/api/teacher/${id}/supervision/delete-multiple`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(selected),\n })\n .then(async (r) => {\n if (r) {\n setDeleteSupervisionStatus(\"success\")\n mutate(`/api/teacher/${id}/supervision`)\n setSnackbarText(\"De begeleiding is toegevoegd\")\n setSnackbarVisible(true)\n setSelected([])\n onClose()\n } else {\n setDeleteSupervisionStatus(\"error\")\n }\n })\n .catch((e) => {\n setDeleteSupervisionStatus(\"error\")\n console.log(e)\n })\n }\n\n const getType = (): { plural: string; singular: string } => {\n switch (supervisionKind) {\n case \"Afstudeerders\":\n return { plural: \"afstudeerders\", singular: \"afstudeerder\" }\n case \"Stagiairs\":\n return { plural: \"stagiairs\", singular: \"stagiaire\" }\n default:\n return { plural: \"\", singular: \"\" }\n }\n }\n\n return (\n \n title={supervisionKind}\n headcells={headcells}\n data={supervision}\n resetNewState={() => resetNewSupervisionState()}\n CreateDialog={({ open, onClose }) => (\n onClose()}\n title={`Nieuwe begeleiding ${getType().singular}`}\n content={() => (\n
\n
\n \n setNewSupervision({\n ...newSupervision,\n start_op:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n type=\"number\"\n error={newSupervisionErrors.some(\n (e) => e.path === \"start_op\"\n )}\n helperText={\n newSupervisionErrors.find((e) => e.path === \"start_op\")\n ?.message\n }\n style={{ marginRight: \"12px\" }}\n />\n \n setNewSupervision({\n ...newSupervision,\n end_op:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n type=\"number\"\n error={newSupervisionErrors.some((e) => e.path === \"end_op\")}\n helperText={\n newSupervisionErrors.find((e) => e.path === \"end_op\")\n ?.message\n }\n />\n
\n
\n )}\n actions={() => (\n <>\n \n createNewSupervision(onClose)}\n color=\"primary\"\n variant=\"contained\"\n >\n Voeg begeleiding toe\n \n \n )}\n />\n )}\n DeleteDialog={({ open, onClose, selected, setSelected }) => (\n onClose()}\n title={`${\n selected.length > 1\n ? getType().plural.charAt(0).toUpperCase() +\n getType().plural.slice(1)\n : getType().singular.charAt(0).toUpperCase() +\n getType().singular.slice(1)\n } verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde{\" \"}\n {selected.length > 1 ? getType().plural : getType().singular} wilt\n verwijderen?\n

\n )}\n actions={() => (\n <>\n \n deleteSelected(selected, onClose, setSelected)}\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder{\" \"}\n {selected.length > 1 ? getType().plural : getType().singular}\n \n \n )}\n />\n )}\n text={{\n new: `Voeg een ${getType().singular} toe`,\n empty: `De docent begeleid geen ${getType().plural}. Voeg er een toe.`,\n }}\n BottomActions={() => (\n
\n saveChanges()}\n >\n Sla wijzigingen op\n \n
\n )}\n >\n {({ data, handleChange, key }) => (\n <>\n \n \n handleChange({\n ...data,\n start_op:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n }).then((data) => setSupervision(data))\n }\n type=\"number\"\n error={supervisionErrors.some(\n (e) => e.index === key && e.path === \"start_op\"\n )}\n helperText={\n supervisionErrors.find(\n (e) => e.index === key && e.path === \"start_op\"\n )?.message\n }\n />\n \n \n \n handleChange({\n ...data,\n end_op:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n }).then((data) => setSupervision(data))\n }\n type=\"number\"\n error={supervisionErrors.some(\n (e) => e.index === key && e.path === \"end_op\"\n )}\n helperText={\n supervisionErrors.find(\n (e) => e.index === key && e.path === \"end_op\"\n )?.message\n }\n />\n \n \n )}\n \n )\n}\n\nexport const newSupervisionValidationObject = object<\n Omit\n>({\n start_op: number()\n .min(0, \"> 0\")\n .max(4, \"< 5\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n end_op: number()\n .min(0, \"> 0\")\n .max(4, \"< 5\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n})\n\nexport const supervisionValidationObject = object({\n id: number().required(),\n start_op: number()\n .min(0, \"> 0\")\n .max(4, \"< 5\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n end_op: number()\n .min(0, \"> 0\")\n .max(4, \"< 5\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n})\n\nexport const supervisionArrayValidationObject = array().of(\n supervisionValidationObject\n)\n\ntype SupervisionSummaryProps = {\n interns: SupervisionSummary\n graduates: SupervisionSummary\n}\n\nconst SupervisionSummary = (props: SupervisionSummaryProps) => {\n const { interns, graduates } = props\n\n return (\n
\n \n \n \n \n OP1\n OP2\n OP3\n OP4\n Totaal\n \n \n \n \n Stagiairs\n {interns.op1}\n {interns.op2}\n {interns.op3}\n {interns.op4}\n {interns.total}\n \n \n Afstudeerders\n {graduates.op1}\n {graduates.op2}\n {graduates.op3}\n {graduates.op4}\n {graduates.total}\n \n \n \n
\n )\n}\n\ntype OnderwijsTakenProps = {\n onderwijstaken: Onderwijstaken[]\n}\n\nconst Onderwijstaken = (props: OnderwijsTakenProps) => {\n const { onderwijstaken } = props\n\n return (\n
\n \n \n \n Periode\n Cursus\n Naam\n V/D\n Aantal studenten\n Contacttijd incl. opslag (uren)\n Aantal bijeenkomsten\n Contact duur (min.)\n Opslag factor\n Toets correctietijd (min.)\n \n \n \n {onderwijstaken.length > 0 ? (\n <>\n {onderwijstaken.map((o, key) => (\n \n OP{o.period}\n \n {o.course_code}\n \n {o.course_name}\n \n {o.curriculum_kind === \"Voltijd\" ? \"VT\" : \"DT\"}\n \n {o.student_amount}\n {o.contact_student}\n {o.meetings}\n {o.meeting_duration}\n {o.raise_factor}\n {o.correction_time}\n \n ))}\n \n ) : (\n \n \n De docent is nergens ingeplanned\n \n \n )}\n \n \n
\n )\n}\n","import {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n MenuItem,\n Select,\n TableCell,\n TextField,\n} from \"@material-ui/core\"\nimport { Autocomplete } from \"@material-ui/lab\"\nimport React, { useEffect, useState } from \"react\"\nimport { useParams } from \"react-router-dom\"\nimport { useSetRecoilState } from \"recoil\"\nimport useSWR, { mutate } from \"swr\"\nimport { object, string, boolean, number, array, ValidationError } from \"yup\"\nimport { snackbarTextState, snackbarVisibleState } from \"../../../state/app\"\nimport {\n checkArrayValidationErrors,\n checkValidationErrors,\n Errors,\n ErrorsArray,\n useFetchState,\n} from \"../../../utils\"\nimport { Dialog } from \"../../Dialog\"\nimport Table, { HeadCell } from \"../../Table\"\nimport { Button } from \"../../Buttons\"\n\ntype TabMOT = {\n id: number\n name: string\n hours: number\n type: string\n active_op1: boolean\n active_op2: boolean\n active_op3: boolean\n active_op4: boolean\n}\n\nexport const TabMOT = () => {\n let { id }: { id: string } = useParams()\n\n const [MOTS, setMOTS] = useState([])\n const [MOTSErrors, setMOTSErrors] = useState[]>([])\n const { data, error } = useSWR(id ? `/api/teacher/${id}/mot` : null)\n\n const [MOTOptions, setMOTOptions] = useState([])\n const { data: dataMOTOptions, error: errorMOTOptions } = useSWR(\n id ? `/api/teacher/${id}/mot/options` : null\n )\n\n const setSnackbarText = useSetRecoilState(snackbarTextState)\n const setSnackbarVisible = useSetRecoilState(snackbarVisibleState)\n const [createMOTTaskStatus, setCreateMOTTaskStatus] = useFetchState()\n const [updateMOTTaskStatus, setUpdateMOTTaskStatus] = useFetchState()\n const [deleteMOTTaskStatus, setDeleteMOTTaskStatus] = useFetchState()\n const [newMOTTask, setNewMOTTask] = useState>({\n name: \"\",\n hours: 0,\n type: \"Organisatorische\",\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n const [newMOTTaskErrors, setnewMOTTaskErrors] = useState<\n Errors>[]\n >([])\n\n useEffect(() => {\n if (typeof data !== \"undefined\") {\n setMOTS(data)\n }\n if (typeof dataMOTOptions !== \"undefined\") {\n setMOTOptions(dataMOTOptions)\n }\n }, [data, dataMOTOptions])\n\n const headcells: HeadCell[] = [\n {\n id: \"name\",\n numeric: false,\n disablePadding: false,\n label: \"Naam\",\n minWidth: 200,\n },\n {\n id: \"type\",\n numeric: false,\n disablePadding: false,\n label: \"Type\",\n minWidth: 100,\n },\n {\n id: \"hours\",\n numeric: false,\n disablePadding: false,\n label: \"Uren\",\n minWidth: 100,\n },\n {\n id: \"active_op1\",\n numeric: false,\n disablePadding: false,\n label: \"OP1\",\n minWidth: 50,\n },\n {\n id: \"active_op2\",\n numeric: false,\n disablePadding: false,\n label: \"OP2\",\n minWidth: 50,\n },\n {\n id: \"active_op3\",\n numeric: false,\n disablePadding: false,\n label: \"OP3\",\n minWidth: 50,\n },\n {\n id: \"active_op4\",\n numeric: false,\n disablePadding: false,\n label: \"OP4\",\n minWidth: 50,\n },\n ]\n\n const resetNewState = () => {\n setNewMOTTask({\n name: \"\",\n hours: 0,\n type: \"Organisatorische\",\n active_op1: false,\n active_op2: false,\n active_op3: false,\n active_op4: false,\n })\n }\n\n const saveChanges = () => {\n MOTTasksArrayValidationObject.validate(MOTS, { abortEarly: false })\n .then(() => {\n setUpdateMOTTaskStatus(\"loading\")\n fetch(`/api/teacher/${id}/mot/update`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(MOTS),\n })\n .then(async (r) => {\n if (r.ok) {\n setUpdateMOTTaskStatus(\"success\")\n mutate(`/api/teacher/${id}/mot`)\n setSnackbarText(`De wijzigingen zijn opgeslagen`)\n setSnackbarVisible(true)\n } else {\n setUpdateMOTTaskStatus(\"error\")\n }\n })\n .catch((e) => console.log(e))\n })\n .catch((e: ValidationError) =>\n checkArrayValidationErrors(e, setMOTSErrors)\n )\n }\n\n const createMOTTask = (onClose: () => void) => {\n newMOTTaskValidationObject\n .validate(newMOTTask, { abortEarly: false })\n .then(() => {\n setCreateMOTTaskStatus(\"loading\")\n setnewMOTTaskErrors([])\n fetch(`/api/teacher/${id}/mot/new`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(newMOTTask),\n })\n .then(async (r) => {\n if (r.ok) {\n setCreateMOTTaskStatus(\"success\")\n mutate(`/api/teacher/${id}/mot`)\n setSnackbarText(`De MOT taak is aangemaakt`)\n setSnackbarVisible(true)\n onClose()\n }\n })\n .catch((e) => {\n setCreateMOTTaskStatus(\"error\")\n console.log(e)\n })\n })\n .catch((e: ValidationError) =>\n checkValidationErrors>(e, setnewMOTTaskErrors)\n )\n }\n\n const deleteSelected = (\n selected: TabMOT[],\n onClose: () => void,\n setSelected: React.Dispatch>\n ) => {\n setDeleteMOTTaskStatus(\"loading\")\n fetch(`/api/teacher/${id}/mot/delete-multiple`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(selected),\n })\n .then(async (r) => {\n if (r.ok) {\n setDeleteMOTTaskStatus(\"success\")\n mutate(`/api/teacher/${id}/mot`)\n setSelected([])\n setSnackbarText(\n `De MOT ${\n selected.length > 1 ? \"taken zijn\" : \"taak is\"\n } verwijderd`\n )\n setSnackbarVisible(true)\n onClose()\n } else {\n setDeleteMOTTaskStatus(\"error\")\n }\n })\n .catch((e) => {\n console.log(e)\n setSnackbarText(\n `Is is iets fout gegaan bij het verwijderen van de curriculum`\n )\n setSnackbarVisible(true)\n })\n }\n\n return (\n <>\n
\n \n title=\"MOT taken\"\n headcells={headcells}\n data={MOTS}\n resetNewState={() => resetNewState()}\n CreateDialog={({ open, onClose }) => (\n onClose()}\n title={`Nieuwe MOT taak`}\n content={() => (\n
\n
\n option.type}\n getOptionLabel={(option) => option.name}\n onChange={(e, v, r) => {\n if (v) {\n setNewMOTTask(v)\n } else {\n resetNewState()\n }\n }}\n renderInput={(params) => (\n \n )}\n fullWidth\n />\n
\n
\n

Kies een uit het curriculum of maak een nieuwe aan

\n
\n
\n \n setNewMOTTask({ ...newMOTTask, name: e.target.value })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"name\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"name\")?.message\n }\n fullWidth\n />\n
\n
\n \n {\n setNewMOTTask({\n ...newMOTTask,\n type: e.target.value as string,\n })\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n
\n
\n \n setNewMOTTask({\n ...newMOTTask,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n })\n }\n error={newMOTTaskErrors.some((e) => e.path === \"hours\")}\n helperText={\n newMOTTaskErrors.find((e) => e.path === \"hours\")\n ? newMOTTaskErrors.find((e) => e.path === \"hours\")\n ?.message\n : \"Uren worden per OP toegewezen\"\n }\n fullWidth\n />\n
\n \n \n \n setNewMOTTask({\n ...newMOTTask,\n active_op1: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP1\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op2: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP2\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op3: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP3\"\n labelPlacement=\"top\"\n />\n \n setNewMOTTask({\n ...newMOTTask,\n active_op4: e.target.checked,\n })\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n }\n label=\"OP4\"\n labelPlacement=\"top\"\n />\n \n
\n
\n )}\n actions={() => (\n <>\n \n createMOTTask(onClose)}\n color=\"primary\"\n variant=\"contained\"\n >\n Maak taak aan\n \n \n )}\n />\n )}\n DeleteDialog={({ open, onClose, selected, setSelected }) => (\n onClose()}\n title={`MOT ${\n selected.length > 1 ? \"taken\" : \"taak\"\n } verwijderen`}\n content={() => (\n

\n Weet je zeker dat je de geselecteerde MOT{\" \"}\n {selected.length > 1 ? \"taken\" : \"taak\"} wilt verwijderen?\n

\n )}\n actions={() => (\n <>\n \n \n deleteSelected(selected, onClose, setSelected)\n }\n color=\"primary\"\n variant=\"contained\"\n >\n Verwijder MOT {selected.length > 1 ? \"taken\" : \"taak\"}\n \n \n )}\n />\n )}\n text={{\n new: `Maak een nieuwe MOT taak aan`,\n empty: `Er zijn geen MOT taken. Maak een MOT taak aan.`,\n }}\n BottomActions={() => (\n
\n saveChanges()}\n >\n Sla wijzigingen op\n \n
\n )}\n >\n {({ data, handleChange, key }) => (\n <>\n \n \n handleChange({\n ...data,\n name: e.target.value,\n }).then((data) => setMOTS(data))\n }\n type=\"text\"\n error={MOTSErrors.some(\n (e) => e.index === key && e.path === \"name\"\n )}\n helperText={\n MOTSErrors.find((e) => e.index === key && e.path === \"name\")\n ?.message\n }\n />\n \n \n \n {\n handleChange({\n ...data,\n type: e.target.value as string,\n }).then((data) => setMOTS(data))\n }}\n >\n \n Organisatorische\n \n \n Professionalisering\n \n \n \n \n \n \n handleChange({\n ...data,\n hours:\n e.target.value.length > 0\n ? Number(e.target.value)\n : ((e.target.value as unknown) as number),\n }).then((data) => setMOTS(data))\n }\n type=\"number\"\n error={MOTSErrors.some(\n (e) => e.index === key && e.path === \"hours\"\n )}\n helperText={\n MOTSErrors.find(\n (e) => e.index === key && e.path === \"hours\"\n )?.message\n }\n />\n \n \n \n handleChange({\n ...data,\n active_op1: e.target.checked,\n }).then((data) => setMOTS(data))\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...data,\n active_op2: e.target.checked,\n }).then((data) => setMOTS(data))\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...data,\n active_op3: e.target.checked,\n }).then((data) => setMOTS(data))\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n \n handleChange({\n ...data,\n active_op4: e.target.checked,\n }).then((data) => setMOTS(data))\n }\n inputProps={{ \"aria-label\": \"primary checkbox\" }}\n />\n \n \n )}\n \n \n \n )\n}\n\nexport const newMOTTaskValidationObject = object>({\n name: string().required(\"Dit veld is verplicht\"),\n type: string().required(),\n hours: number()\n .min(0, \"Uren kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n active_op1: boolean().required(),\n active_op2: boolean().required(),\n active_op3: boolean().required(),\n active_op4: boolean().required(),\n})\n\nexport const MOTTasksValidationObject = object({\n id: number().required(),\n name: string().required(\"Dit veld is verplicht\"),\n type: string().required(),\n hours: number()\n .min(0, \"Uren kan geen negatief getal zijn\")\n .typeError(\"Dit veld is verplicht\")\n .required(),\n active_op1: boolean().required(),\n active_op2: boolean().required(),\n active_op3: boolean().required(),\n active_op4: boolean().required(),\n})\n\nexport const MOTTasksArrayValidationObject = array().of(\n MOTTasksValidationObject\n)\n","import { Divider, Tab, Tabs } from \"@material-ui/core\"\nimport React, { useState } from \"react\"\nimport { TabAanstelling } from \"./aanstelling\"\nimport { TabOnderwijstaken } from \"./onderwijstaken\"\nimport { TabMOT } from \"./mot\"\n\nexport const TeacherTabs = () => {\n const [tabIndex, setTabIndex] = useState(0)\n\n return (\n <>\n setTabIndex(v)}\n >\n \n \n \n {/* \n */}\n \n \n \n \n \n \n \n \n \n \n \n {/* \n DI / Verlof\n \n \n Beschikbaarheid / Voorkeuren\n */}\n \n )\n}\n\ntype TabPanelProps = {\n value: number\n index: number\n}\n\nconst TabPanel = (props: React.PropsWithChildren) => {\n const { value, index, children } = props\n\n return (\n <>{value === index &&
{children}
}\n )\n}\n","import React from \"react\"\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\"\nimport { ExportTeacherPersonaliaType } from \"./ExportTeacher\"\nimport { ExportDefaultSection } from \".\"\n\nconst ExportTeacherPersonaliaStyles = StyleSheet.create({\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n marginBottom: \"24pt\",\n },\n labels: {\n fontWeight: \"bold\",\n marginRight: \"20pt\",\n },\n values: {\n marginRight: \"100pt\",\n },\n})\n\ntype ExportTeacherPersonaliaProps = {\n personalia: ExportTeacherPersonaliaType\n}\n\nconst ExportTeacherPersonalia = (props: ExportTeacherPersonaliaProps) => {\n const { personalia } = props\n const styles = ExportTeacherPersonaliaStyles\n\n return (\n \n \n \n Docentcode\n Naam\n Achternaam\n \n \n {personalia.personnel_code}\n {personalia.name}\n {personalia.surname}\n \n \n Functie\n Team\n Type aanstelling\n \n \n {personalia.position}\n {personalia.team}\n {personalia.contract}\n \n \n \n )\n}\n\nexport default ExportTeacherPersonalia\n","import React from \"react\"\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\"\nimport { ExportDefaultSection, pageDefaultStyles } from \".\"\nimport { ExportTeacherOnderwijstakenType } from \"./ExportTeacher\"\n\nconst ExportTeacherOnderwijstakenStyles = StyleSheet.create({\n table_header_container: {\n display: \"flex\",\n flexDirection: \"row\",\n fontSize: \"10pt\",\n marginBottom: \"5pt\",\n fontWeight: \"bold\",\n },\n op: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"25pt\",\n },\n course: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"75pt\",\n },\n name: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"185pt\",\n },\n vd: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"25pt\",\n marginLeft: \"5pt\",\n },\n workmethod: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"65pt\",\n },\n student_amount: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"55pt\",\n marginRight: \"5pt\",\n },\n contact_student: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"60pt\",\n },\n meetings: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"65pt\",\n },\n meeting_duration: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"50pt\",\n },\n raise_factor: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"50pt\",\n },\n correction_time: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"65pt\",\n marginRight: \"5pt\",\n },\n travel_time: {\n display: \"flex\",\n flexDirection: \"column\",\n alignSelf: \"flex-end\",\n width: \"40pt\",\n },\n body_row: {\n alignSelf: \"flex-start\",\n },\n table_row_container: {\n marginVertical: \"2.5pt\",\n display: \"flex\",\n flexDirection: \"row\",\n fontSize: \"10pt\",\n },\n})\n\ntype ExportTeacherOnderwijstakenProps = {\n onderwijstaken: ExportTeacherOnderwijstakenType[]\n}\n\nexport const ExportTeacherOnderwijstaken = (\n props: ExportTeacherOnderwijstakenProps\n) => {\n const { onderwijstaken } = props\n const styles = ExportTeacherOnderwijstakenStyles\n\n return (\n \n \n OP\n Cursus\n Naam\n V/D\n Werkvorm\n \n Aantal\n studenten\n \n \n Contacttijd incl. opslag (uren)\n \n Aantal bijeenkomsten\n Contact duur (min.)\n Opslag factor\n Toets correctietijd (min.)\n Reistijd\n \n {onderwijstaken.map((task, key) => (\n \n \n OP{task.period}\n \n \n {task.course_code}\n \n \n {task.course_name}\n \n \n {task.curriculum_kind === \"Voltijd\" ? \"VT\" : \"DT\"}\n \n \n {task.workmethod}\n \n \n {task.student_amount}\n \n \n {task.contact_student}\n \n \n {task.meetings}\n \n \n {task.meeting_duration}\n \n \n {task.raise_factor}\n \n \n {task.correction_time}\n \n \n {task.travel_time}\n \n \n ))}\n \n )\n}\n\nexport default ExportTeacherOnderwijstaken\n","import React from \"react\"\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\"\nimport { ExportDefaultSection, ExportInformationCard } from \".\"\nimport { ExportTeacherTaaktoedelingType } from \"./ExportTeacher\"\n\nconst ExportTeacherTaaktoedelingStyles = StyleSheet.create({\n container: {\n marginBottom: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n },\n values_container: {\n display: \"flex\",\n flexDirection: \"row\",\n },\n label_container: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n label: {\n width: 30,\n fontWeight: \"bold\",\n },\n value: {\n width: 30,\n },\n value_container: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n divider: {\n marginHorizontal: 20,\n width: 2,\n height: \"100%\",\n backgroundColor: \"#fff\",\n },\n taaktoedeling_container: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: \"2pt\",\n minHeight: \"20pt\",\n },\n header_row: {\n fontWeight: \"bold\",\n },\n header_cell: {\n fontWeight: \"bold\",\n borderBottomWidth: \"1pt\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"#e6e6e6\",\n },\n body_cell: {\n borderBottomWidth: \"1pt\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"#e6e6e6\",\n },\n title1: {\n width: \"170pt\",\n },\n title2: {\n width: \"240pt\",\n },\n total: {\n width: \"50pt\",\n textAlign: \"right\",\n },\n op1: {\n width: \"40pt\",\n textAlign: \"right\",\n },\n op2: {\n width: \"40pt\",\n textAlign: \"right\",\n },\n op3: {\n width: \"40pt\",\n textAlign: \"right\",\n },\n op4: {\n width: \"40pt\",\n textAlign: \"right\",\n },\n})\n\ntype ExportTeacherTaaktoedelingProps = {\n data: ExportTeacherTaaktoedelingType\n}\n\nconst ExportTeacherTaaktoedeling = (props: ExportTeacherTaaktoedelingProps) => {\n const { data } = props\n const styles = ExportTeacherTaaktoedelingStyles\n\n return (\n \n \n \n Uren worden op hele getallen afgerond en waarnodig naar beneden.\n \n \n \n {/* \n \n FTE\n OP1\n OP2\n OP3\n OP4\n DI\n OP1\n OP2\n OP3\n OP4\n Organisatorische taak ALG (%)\n Basisrecht professionalisering (%)\n \n \n \n {data.fte_op1}\n {data.fte_op2}\n {data.fte_op3}\n {data.fte_op4}\n \n {data.di_op1}\n {data.di_op2}\n {data.di_op3}\n {data.di_op4}\n {data.organisational}%\n {data.professional}%\n \n \n */}\n \n \n \n \n Totaal\n OP1\n OP2\n OP3\n OP4\n \n \n \n Beschikbare uren\n \n \n OP1: {data.fte_op1} | OP2: {data.fte_op2} | OP3: {data.fte_op3} |\n OP4: {data.fte_op4}\n \n \n {data.taaktoedeling.total_available_hours}\n \n \n {data.taaktoedeling.total_available_hours_op1}\n \n \n {data.taaktoedeling.total_available_hours_op2}\n \n \n {data.taaktoedeling.total_available_hours_op3}\n \n \n {data.taaktoedeling.total_available_hours_op4}\n \n \n \n DI\n \n OP1: {data.di_op1} | OP2: {data.di_op2} | OP3: {data.di_op3} |\n OP4: {data.di_op4}\n \n \n {data.taaktoedeling.di.total}\n \n \n {data.taaktoedeling.di.op1}\n \n \n {data.taaktoedeling.di.op2}\n \n \n {data.taaktoedeling.di.op3}\n \n \n {data.taaktoedeling.di.op4}\n \n \n \n \n Detachering\n \n \n \n {data.taaktoedeling.secondments.total}\n \n \n {data.taaktoedeling.secondments.op1}\n \n \n {data.taaktoedeling.secondments.op2}\n \n \n {data.taaktoedeling.secondments.op3}\n \n \n {data.taaktoedeling.secondments.op4}\n \n \n \n \n Organisatorische taak\n \n \n Organisatorische taak ALG ({data.organisational}%)\n \n \n {data.taaktoedeling.organizational_tasks.total}\n \n \n {data.taaktoedeling.organizational_tasks.op1}\n \n \n {data.taaktoedeling.organizational_tasks.op2}\n \n \n {data.taaktoedeling.organizational_tasks.op3}\n \n \n {data.taaktoedeling.organizational_tasks.op4}\n \n \n \n \n \n Overige taken\n \n \n {data.taaktoedeling.organization_tasks_other.total}\n \n \n {data.taaktoedeling.organization_tasks_other.op1}\n \n \n {data.taaktoedeling.organization_tasks_other.op2}\n \n \n {data.taaktoedeling.organization_tasks_other.op3}\n \n \n {data.taaktoedeling.organization_tasks_other.op4}\n \n \n \n \n Professionaliseringstaak\n \n \n Basisrecht professionalisering ({data.professional}%)\n \n \n {data.taaktoedeling.professionalization_tasks.total}\n \n \n {data.taaktoedeling.professionalization_tasks.op1}\n \n \n {data.taaktoedeling.professionalization_tasks.op2}\n \n \n {data.taaktoedeling.professionalization_tasks.op3}\n \n \n {data.taaktoedeling.professionalization_tasks.op4}\n \n \n \n \n \n Overige taken\n \n \n {data.taaktoedeling.professionalization_tasks_other.total}\n \n \n {data.taaktoedeling.professionalization_tasks_other.op1}\n \n \n {data.taaktoedeling.professionalization_tasks_other.op2}\n \n \n {data.taaktoedeling.professionalization_tasks_other.op3}\n \n \n {data.taaktoedeling.professionalization_tasks_other.op4}\n \n \n \n \n Onderwijstaken\n \n \n Contacttijd\n \n \n {data.taaktoedeling.contact_time.total}\n \n \n {data.taaktoedeling.contact_time.op1}\n \n \n {data.taaktoedeling.contact_time.op2}\n \n \n {data.taaktoedeling.contact_time.op3}\n \n \n {data.taaktoedeling.contact_time.op4}\n \n \n \n \n \n Contacttijd inclusief opslag\n \n \n {data.taaktoedeling.contact_time_with_factor.total}\n \n \n {data.taaktoedeling.contact_time_with_factor.op1}\n \n \n {data.taaktoedeling.contact_time_with_factor.op2}\n \n \n {data.taaktoedeling.contact_time_with_factor.op3}\n \n \n {data.taaktoedeling.contact_time_with_factor.op4}\n \n \n \n \n Begeleiding\n \n \n Stagiairs\n \n \n {data.taaktoedeling.supervision.interns.total}\n \n \n {data.taaktoedeling.supervision.interns.op1}\n \n \n {data.taaktoedeling.supervision.interns.op2}\n \n \n {data.taaktoedeling.supervision.interns.op3}\n \n \n {data.taaktoedeling.supervision.interns.op4}\n \n \n \n \n \n Afstudeerders\n \n \n {data.taaktoedeling.supervision.graduates.total}\n \n \n {data.taaktoedeling.supervision.graduates.op1}\n \n \n {data.taaktoedeling.supervision.graduates.op2}\n \n \n {data.taaktoedeling.supervision.graduates.op3}\n \n \n {data.taaktoedeling.supervision.graduates.op4}\n \n \n \n \n Restant beschikbare uren\n \n \n \n {data.taaktoedeling.oddment_total}\n \n \n {data.taaktoedeling.oddment_op1}\n \n \n {data.taaktoedeling.oddment_op2}\n \n \n {data.taaktoedeling.oddment_op3}\n \n \n {data.taaktoedeling.oddment_op4}\n \n \n \n \n \n )\n}\n\nexport default ExportTeacherTaaktoedeling\n","import React from \"react\"\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\"\nimport { ExportDefaultSection } from \".\"\nimport { ExportTeacherMotType } from \"./ExportTeacher\"\n\nconst ExportTeacherMOTStyles = StyleSheet.create({\n container: {\n marginBottom: \"24pt\",\n },\n row_container: {\n display: \"flex\",\n flexDirection: \"row\",\n marginBottom: \"5pt\",\n },\n row_header: {\n fontWeight: \"bold\",\n },\n name: {\n width: 170,\n },\n type: {\n width: 130,\n },\n hours: {\n width: 50,\n },\n op: {\n width: 100,\n },\n})\n\ntype ExportTeacherMOTProps = {\n data: ExportTeacherMotType[]\n}\nconst ExportTeacherMOT = (props: ExportTeacherMOTProps) => {\n const { data } = props\n const styles = ExportTeacherMOTStyles\n\n return (\n \n \n \n Naam\n Type\n Uren\n OP\n \n {data.map((mot, key) => (\n \n {mot.name}\n {mot.type}\n {mot.hours}\n \n {[mot.op1, mot.op2, mot.op3, mot.op4].map((op, i, a) =>\n op\n ? `OP${i + 1}${\n a.filter((o) => o).length > 1 && i !== 3 ? \", \" : \"\"\n }`\n : \"\"\n )}\n \n \n ))}\n \n \n )\n}\n\nexport default ExportTeacherMOT\n","import React from \"react\"\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\"\nimport { ExportDefaultSection } from \".\"\nimport { ExportTeacherSecondmentType } from \"./ExportTeacher\"\n\nconst ExportTeacherSecondmentsStyle = StyleSheet.create({\n container: {\n marginBottom: \"24pt\",\n },\n row_container: {\n display: \"flex\",\n flexDirection: \"row\",\n marginBottom: \"5pt\",\n },\n row_header: {\n fontWeight: \"bold\",\n },\n hours: {\n width: 40,\n },\n reason: {\n width: 130,\n },\n})\n\ntype ExportTeacherSecondmentsProps = {\n data: ExportTeacherSecondmentType[]\n}\nconst ExportTeacherSecondments = (props: ExportTeacherSecondmentsProps) => {\n const { data } = props\n const styles = ExportTeacherSecondmentsStyle\n\n return (\n \n \n \n Uren\n Reden\n OP\n \n {data.map((secondment, key) => (\n \n {secondment.hours}\n {secondment.reason}\n \n {[\n secondment.op1,\n secondment.op2,\n secondment.op3,\n secondment.op4,\n ].map((op, i, a) =>\n op\n ? `OP${i + 1}${\n a.filter((o) => o).length > 1 && i !== 3 ? \", \" : \"\"\n }`\n : \"\"\n )}\n \n \n ))}\n \n \n )\n}\n\nexport default ExportTeacherSecondments\n","import {\n Checkbox,\n CircularProgress,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel,\n} from \"@material-ui/core\"\nimport React, { useState } from \"react\"\nimport useSWR from \"swr\"\nimport {\n pdf,\n Page,\n Text,\n View,\n Document,\n StyleSheet,\n PDFViewer,\n} from \"@react-pdf/renderer\"\nimport {\n ExportDefaultFooter,\n ExportDefaultHeader,\n ExportPDFButton,\n pageDefaultStyles,\n} from \".\"\nimport { Button } from \"../Buttons\"\nimport { FullScreenDialog } from \"../Dialog\"\nimport { TaakToedelingType } from \"../TeacherDetails/tabs/aanstelling\"\nimport ExportTeacherPersonalia from \"./ExportTeacherPersonalia\"\nimport ExportTeacherOnderwijstaken from \"./ExportTeacherOnderwijstaken\"\nimport ExportTeacherTaaktoedeling from \"./ExportTeacherTaaktoedeling\"\nimport InformationCard from \"../InformationCard\"\nimport ExportTeacherMOT from \"./ExportTeacherMOT\"\nimport ExportTeacherSecondments from \"./ExportTeacherSecondments\"\n\nconst ExportTeacherStyles = StyleSheet.create({\n page: {\n ...pageDefaultStyles,\n },\n})\n\ntype ExportTeacherProps = {\n teacher: ExportTeacherResponse\n options: ExportTeacherOptions\n}\n\nconst ExportTeacher = (props: ExportTeacherProps) => {\n const { teacher, options } = props\n const styles = ExportTeacherStyles\n\n return (\n \n \n \n {options.personalia && (\n \n )}\n {options.taaktoedeling && (\n \n )}\n {options.mot && }\n {options.secondments && (\n \n )}\n {options.onderwijstaken && (\n \n )}\n \n \n \n )\n}\n\ntype ExportTeacherDialogProps = {\n open: boolean\n onClose: () => void\n teacher_id: string\n}\n\ntype ExportTeacherResponse = {\n name: string\n surname: string\n personnel_code: string\n curriculum: string\n education: string\n institute: string\n personalia: ExportTeacherPersonaliaType\n onderwijstaken: ExportTeacherOnderwijstakenType[]\n taaktoedeling: ExportTeacherTaaktoedelingType\n mot: ExportTeacherMotType[]\n secondments: ExportTeacherSecondmentType[]\n}\n\nexport type ExportTeacherPersonaliaType = {\n personnel_code: string\n name: string\n surname: string\n position: string\n team: string\n contract: string\n}\n\nexport type ExportTeacherOnderwijstakenType = {\n period: number\n course_code: string\n course_name: string\n curriculum_kind: string\n workmethod: string\n student_amount: number\n contact_student: number\n meetings: number\n meeting_duration: number\n raise_factor: number\n correction_time: number\n travel_time: number\n}\n\nexport type ExportTeacherTaaktoedelingType = {\n fte_op1: number\n fte_op2: number\n fte_op3: number\n fte_op4: number\n di_op1: number\n di_op2: number\n di_op3: number\n di_op4: number\n organisational: number\n professional: number\n taaktoedeling: TaakToedelingType\n}\n\nexport type ExportTeacherMotType = {\n name: string\n type: string\n hours: number\n op1: boolean\n op2: boolean\n op3: boolean\n op4: boolean\n}\n\nexport type ExportTeacherSecondmentType = {\n hours: number\n reason: string\n op1: boolean\n op2: boolean\n op3: boolean\n op4: boolean\n}\n\ntype ExportTeacherOptions = {\n personalia: boolean\n taaktoedeling: boolean\n mot: boolean\n secondments: boolean\n onderwijstaken: boolean\n}\n\nexport const ExportTeacherDialog = (props: ExportTeacherDialogProps) => {\n const { open, onClose, teacher_id } = props\n const [options, setOptions] = useState({\n personalia: true,\n taaktoedeling: true,\n mot: true,\n secondments: true,\n onderwijstaken: true,\n })\n\n const { data, error } = useSWR(\n open ? `/api/teacher/${teacher_id}/export` : null,\n (url) =>\n fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(options),\n }).then((r) => r.json())\n )\n\n const handleChange = (event: React.ChangeEvent) => {\n setOptions({ ...options, [event.target.name]: event.target.checked })\n }\n\n return (\n <>\n (\n
\n
\n
Exporteer instellingen
\n \n \n \n }\n label=\"Personalia\"\n />\n \n }\n label=\"Taaktoedeling\"\n />\n \n }\n label=\"MOT taken\"\n />\n \n }\n label=\"Detachering\"\n />\n \n }\n label=\"Onderwijstaken\"\n />\n \n \n (\n <>Vink aan wat in de export meegenomen moet worden.\n )}\n style={{ marginTop: \"6px\" }}\n />\n
\n
\n
\n {data ? (\n \n )}\n filename={`${data.curriculum} - ${data.institute} - ${\n data.education\n } - ${\n data.personnel_code\n } - ${new Date().toLocaleDateString()} - ${new Date().toLocaleTimeString()}`}\n />\n ) : (\n \n )}\n
\n {error ? (\n
\n Er is een probleem met het genereren van de PDF.\n
\n ) : data ? (\n \n \n \n ) : (\n
\n \n
\n )}\n
\n
\n )}\n />\n \n )\n}\n","import \"../../components/TeacherDetails/TeacherDetails.css\"\nimport React, { useEffect, useState } from \"react\"\nimport { useHistory, useParams } from \"react-router-dom\"\nimport { TeacherNotes } from \"../../components/TeacherDetails/notes\"\nimport { TeacherPersonalia } from \"../../components/TeacherDetails/personalia\"\nimport { TeacherTabs } from \"../../components/TeacherDetails/tabs/tabs\"\nimport { IconButton } from \"@material-ui/core\"\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBackRounded\"\nimport useSWR from \"swr\"\nimport { useRecoilValue, useSetRecoilState } from \"recoil\"\nimport { Loader } from \"../../components/Loader\"\nimport { ErrorState } from \"../../components/ErrorState\"\nimport { Button } from \"../../components/Buttons\"\nimport { ExportTeacherDialog } from \"../../components/Export/ExportTeacher\"\n\nexport const TeacherDetails = () => {\n let history = useHistory()\n let { id }: { id: string } = useParams()\n let [exportTeacherDialog, setExportTeacherDialog] = useState(false)\n\n const { data, error } = useSWR<{ name: string; curriculum: string }>(\n `/api/teacher/${id}/personnel_code`\n )\n\n if (!data) return \n\n if (error) return \n\n return (\n
\n
\n
\n history.push(\"/teachers\")}\n >\n \n \n   Terug naar docenten\n
\n
\n
\n {data.name}\n  - Curriculum \n {data.curriculum}\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n setExportTeacherDialog(false)}\n teacher_id={id}\n />\n
\n )\n}\n","import React from \"react\"\nimport { BrowserRouter as Router, Route } from \"react-router-dom\"\n\nimport \"./App.css\"\n\nimport { NavigationBar } from \"./components/NavigationBar\"\nimport { AuthManager } from \"./components/AuthManager\"\nimport { Planningsoverview } from \"./pages/Planningsoverview\"\nimport { Teachers } from \"./pages/Teachers\"\nimport { Courses } from \"./pages/Courses\"\nimport { Curricula } from \"./pages/Curricula\"\nimport { Settings } from \"./pages/Settings\"\nimport Snackbar from \"@material-ui/core/Snackbar\"\nimport { useRecoilState, useRecoilValue } from \"recoil\"\nimport { snackbarTextState, snackbarVisibleState } from \"./state/app\"\nimport { TeacherDetails } from \"./pages/TeacherDetails\"\n\nexport const App = () => {\n const snackbarText = useRecoilValue(snackbarTextState)\n const [snackbarVisibility, setSnackbarVisibility] = useRecoilState(\n snackbarVisibleState\n )\n\n return (\n \n \n
\n \n
\n \n \n \n \n \n {/* */}\n
\n
\n
\n {\n if (reason === \"clickaway\") {\n return\n }\n setSnackbarVisibility(false)\n }}\n message={snackbarText}\n />\n
\n )\n}\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import \"bootstrap/dist/css/bootstrap.css\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { BrowserRouter } from \"react-router-dom\"\nimport { SWRConfig } from \"swr\"\nimport { App } from \"./App\"\nimport registerServiceWorker from \"./registerServiceWorker\"\nimport { unregister } from \"./registerServiceWorker\"\nimport { RecoilRoot } from \"recoil\"\nimport DateFnsUtils from \"@date-io/date-fns\"\nimport MuiPickersUtilsProvider from \"@material-ui/pickers/MuiPickersUtilsProvider\"\nimport { createMuiTheme, ThemeProvider } from \"@material-ui/core/styles\"\nimport * as Sentry from \"@sentry/react\"\nimport { Integrations } from \"@sentry/tracing\"\n\nSentry.init({\n dsn:\n \"https://689b163bd9d04172a252baf89e53ad33@o485883.ingest.sentry.io/5541877\",\n autoSessionTracking: true,\n integrations: [new Integrations.BrowserTracing()],\n\n // We recommend adjusting this value in production, or using tracesSampler\n // for finer control\n tracesSampleRate: process.env.NODE_ENV === \"production\" ? 1.0 : 0.0,\n})\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: \"#CC0033\",\n },\n secondary: {\n main: \"#003399\",\n },\n },\n})\n\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\")\nconst rootElement = document.getElementById(\"root\")\n\nReactDOM.render(\n \n ) =>\n fetch(...args).then((res) => res.json()),\n revalidateOnFocus: false,\n }}\n >\n \n \n \n \n \n \n \n \n ,\n rootElement\n)\n\n// registerServiceWorker()\nunregister()\n"],"sourceRoot":""}