{"version":3,"sources":["assets/bg.jpg","shared/enums/RoleEnum.ts","styles/theme.ts","components/routes/AdminRoute.tsx","assets/nfp-logo.svg","store/actionTypes.ts","i18n/useTranslator.ts","components/Link.tsx","services/Api.service.ts","services/User.service.ts","components/SidebarUserAvatar.tsx","components/SidebarMenuItem.tsx","components/sidebar-content/AdminSidebarContent.tsx","components/sidebar-content/AuthorSidebarContent.tsx","components/sidebar-content/ReviewerSidebarContent.tsx","components/sidebar-content/ScientificCouncilMemberSidebarContent.tsx","components/sidebar-content/FinanceCoordinatorSidebarContent.tsx","components/sidebar-content/BoardMemberSidebarContent.tsx","components/sidebar-content/CompetitionCoordinatorSidebarContent.tsx","components/sidebar-content/CompetitionCommitteeMemberSidebarContent.tsx","components/sidebar-content/CompetitionJuryMemberSidebarContent.tsx","components/Sidebar.tsx","components/layouts/Dashboard.tsx","store/user/actions.ts","shared/enums/BillingMethodEnum.ts","store/helpers.ts","services/Error.service.ts","components/RodoMessage.tsx","components/CircularProgress.tsx","components/Button.tsx","components/Message.tsx","components/RODOAcceptanceDialog.tsx","components/DashboardScreenWrapper.tsx","components/SectionHeader.tsx","components/Box.tsx","components/Form.tsx","components/FormContent.tsx","components/formik-controls/FormikTextField.tsx","components/form-fields/FieldTextField.tsx","components/formik-controls/FormikSelect.tsx","components/form-fields/FieldSelect.tsx","services/Competition.service.ts","shared/validators.ts","shared/enums/CompetitionTypeEnum.ts","components/BoxHeader.tsx","components/inputs/TextField.tsx","components/inputs/FileInput.tsx","components/FormControl.tsx","components/InputLabel.tsx","components/inputs/Select.tsx","components/inputs/Autocomplete.tsx","components/DocumentFormRow.tsx","components/ConfirmationDialog.tsx","components/DocumentationConfigurator.tsx","components/FormError.tsx","shared/enums/CompetitionCategoryEnum.ts","components/ListRow.tsx","shared/enums/SubmissionStatusEnum.ts","components/ListItem.tsx","components/ListHeader.tsx","components/ListHeaderItem.tsx","components/List.tsx","components/ListAction.tsx","components/CompetitionCoordinatorsSelector.tsx","components/forms/CompetitionForm.tsx","components/screens/Admin/AdminAddCompetitionScreen.tsx","components/AddNewAttachmentTemplate.tsx","components/Badge.tsx","components/RoleBadge.tsx","components/RoleVisibilityBadge.tsx","components/DocumentForAllReviewsBadge.tsx","components/DocumentationEdit.tsx","components/screens/Admin/CompetitionDetailsScreen.tsx","components/forms/UserForm.tsx","components/FormSuccess.tsx","components/screens/Admin/AdminUserDetailsScreen.tsx","services/Stage.service.ts","components/forms/StageForm.tsx","components/ScreenToolbar.tsx","components/screens/Admin/AdminStageDetailsScreen.tsx","components/BoxLoader.tsx","components/BoxSection.tsx","components/LabelValue.tsx","services/Submissions.service.ts","shared/enums/AttachmentStatusEnum.ts","shared/helpers/getDuplicateAttachments.ts","components/SubmissionDocumentation.tsx","shared/enums/CommentStatusEnum.ts","services/Date.service.ts","components/DiscussionTile.tsx","shared/enums/NoteStatusEnum.ts","components/Autosave.tsx","components/forms/CommentForm.tsx","components/AddComment.tsx","components/Discussion.tsx","components/DeleteNote.tsx","components/NotesTile.tsx","components/forms/NoteForm.tsx","shared/enums/MarkStatusEnum.ts","components/AddNote.tsx","components/Notes.tsx","shared/helpers/getSubmissionStatusLabel.ts","components/Divider.tsx","components/formik-controls/FormikCheckbox.tsx","components/form-fields/FieldCheckbox.tsx","components/forms/SubmissionForm.tsx","components/SubmissionStageDocumentationRow.tsx","components/SubmissionStagesDocumentation.tsx","components/ReviewSubmission.tsx","shared/enums/NotificationTypeEnum.ts","components/SubmissionDetails.tsx","components/ReviewerAutocomplete.tsx","components/AcceptSubmission.tsx","components/ReviewSubmissionAdminActions.tsx","components/CustomReviewerAutocomplete.tsx","components/SuggestedReviewers.tsx","components/SubmissionStages.tsx","components/RestoreSubmission.tsx","shared/AllowedMimeTypes.ts","components/SubmissionOtherAttachments.tsx","components/inputs/MultipleFileInput.tsx","components/AdditionalDocumentation.tsx","components/screens/Admin/AdminSubmissionDetailsScreen.tsx","components/screens/Admin/AdminUsersScreen.tsx","components/screens/Admin/AdminAddUserScreen.tsx","components/screens/Admin/AdminCompetitionsScreen.tsx","services/NotificationTemplate.service.ts","components/screens/Admin/AdminEmailTemplatesScreen.tsx","components/forms/EmailTemplateForm.tsx","components/screens/Admin/AdminEmailTemplateDetailsScreen.tsx","components/CompetitionRankingList.tsx","components/GrantImplementationRankingList.tsx","components/CompetitionRankingListWithTabs.tsx","components/screens/Common/CompetitionRankingListScreen.tsx","components/screens/Admin/AdminUserCompetitionListScreen.tsx","components/screens/Admin/AdminAddStageScreen.tsx","components/screens/Admin/AdminReportsScreen.tsx","services/Reports.service.ts","components/screens/Admin/FoundationInNumbersReportScreen.tsx","components/screens/wrappers/AdminScreens.tsx","assets/nfp-logo-dark.svg","components/layouts/UnloggedLayout.tsx","components/forms/RegistrationForm.tsx","components/HelpMessage.tsx","components/screens/RegistrationScreen.tsx","components/forms/LoginForm.tsx","components/screens/LoginScreen.tsx","components/screens/SuccessRegistrationScreen.tsx","components/routes/AuthorRoute.tsx","components/SubmissionsList.tsx","components/screens/Author/AuthorSubmissionsScreen.tsx","components/AuthorSubmissionInstructions.tsx","components/screens/Author/AuthorSubmissionDetailsScreen.tsx","components/screens/Author/AuthorCompetitionsScreen.tsx","components/SubmitSubmission.tsx","components/screens/Author/AuthorSubmissionScreen.tsx","components/screens/wrappers/AuthorScreens.tsx","components/routes/BoardMemberRoute.tsx","components/ActiveCompetitionList.tsx","components/screens/BoardMember/BoardMemberCompetitionsScreen.tsx","components/screens/BoardMember/BoardMemberSubmissionDetailsScreen.tsx","components/screens/Common/ReviewersScreen.tsx","components/screens/wrappers/BoardMemberScreens.tsx","components/routes/FinanceCoordinatorRoute.tsx","components/screens/FinanceCoordinator/FinanceCoordinatorCompetitionsScreen.tsx","components/screens/FinanceCoordinator/FinanceCoordinatorSubmissionDetailsScreen.tsx","components/screens/wrappers/FinanceCoordinatorScreens.tsx","components/routes/ReviewerRoute.tsx","components/screens/Reviewer/ReviewerActiveSubmissionsScreen.tsx","components/screens/Reviewer/ReviewerArchivedSubmissionsScreen.tsx","components/ReviewerSubmissionInstructions.tsx","components/screens/Reviewer/ReviewerSubmissionScreen.tsx","components/screens/wrappers/ReviewerScreens.tsx","components/routes/ScientificCouncilMemberRoute.tsx","components/screens/ScientificCouncilMember/ScientificCouncilMemberCompetitionsScreen.tsx","components/SubmissionInstructions.tsx","components/screens/Common/ScientificCouncilMemberSubmissionDetailsScreen.tsx","components/screens/wrappers/ScientificCouncilMemberScreens.tsx","components/forms/PasswordChangeForm.tsx","components/forms/UpdateSpecialtyForm.tsx","components/screens/ProfileScreen.tsx","components/PrivateRoute.tsx","components/screens/ConfirmEmailScreen.tsx","components/forms/ResetPasswordForm.tsx","components/screens/ResetPasswordScreen.tsx","store/user/reducer.ts","store/rootReducer.ts","store/index.ts","components/screens/PasswordResetEmailSentScreen.tsx","components/forms/CreatePasswordForm.tsx","components/screens/CreatePasswordScreen.tsx","components/screens/CreatePasswordSuccessScreen.tsx","components/screens/ResetPasswordErrorScreen.tsx","components/routes/CompetitionCoordinatorRoute.tsx","components/screens/CompetitionCoordinator/CompetitionCoordinatorCompetitionsScreen.tsx","components/screens/wrappers/CompetitionCoordinatorScreens.tsx","components/routes/CompetitionCommitteeMemberRoute.tsx","components/screens/CompetitionCommitteeMember/CompetitionCommitteeMemberCompetitionsScreen.tsx","components/screens/wrappers/CompetitionCommitteeMemberScreens.tsx","components/routes/CompetitionJuryMemberRoute.tsx","components/screens/CompetitionJuryMember/CompetitionJuryMemberCompetitionsScreen.tsx","components/screens/wrappers/CompetitionJuryMemberScreens.tsx","App.tsx","serviceWorker.js","i18n/translations/pl.ts","i18n/i18n.ts","index.tsx"],"names":["module","exports","RoleEnum","theme","palette","primary","main","secondary","success","contrastText","light","custom","radius","r_0","gray","g_0","g_1","g_2","g_3","g_4","overrides","MuiButton","createStyles","contained","boxShadow","AdminRoute","withRouter","Component","component","history","restProps","role","useSelector","state","user","useEffect","Admin","push","render","props","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ActionType","createElement","id","width","height","xlinkHref","_ref","svgRef","title","viewBox","ref","ForwardRef","forwardRef","useTranslator","useTranslation","Link","withStyles","root","fontWeight","opacity","clearStylings","classes","className","classNames","API_URL","process","REACT_APP_API_URL","window","location","origin","httpConfig","headers","getConfig","config","ApiService","resource","axios","get","data","post","put","delete","UserService","register","confirmEmail","emailConfirmationCode","userId","login","add","withCredentials","getMe","getSubmissionsByUser","getAll","getUsersByFilter","competition","searchPhrase","params","normalizeParameters","getOne","update","updateUserIsActiveField","value","updateSpecialty","specialty","changePassword","resetPassword","resetPasswordByEmailToken","setNewPasswordByEmailToken","logout","getCompetitionCoordinators","getReviewers","getReviewersGrid","updateAcademicTitle","setAcceptedRODO","acceptedRODO","SidebarUserAvatar","display","alignItems","fontSize","icon","marginRight","profile","color","common","white","textDecoration","marginTop","cursor","firstName","lastName","t","handleLogout","a","to","AccountCircle","onClick","SidebarMenuItem","paddingLeft","paddingRight","paddingTop","paddingBottom","Color","alpha","rgb","string","borderLeft","label","marginLeft","active","iconContainer","minWidth","Icon","activeClassName","exact","AdminSidebarContent","TrophyVariantOutline","AccountMultipleOutline","At","FileChartOutline","AuthorSidebarContent","TextBoxOutline","ReviewerSidebarContent","ScientificCouncilMemberSidebarContent","PeopleAltOutlined","FinanceCoordinatorSidebarContent","BoardMemberSidebarContent","CompetitionCoordinatorSidebarContent","CompetitionCommitteeMemberSidebarContent","CompetitionJuryMemberSidebarContent","Sidebar","background","flexDirection","userAvatar","position","bottom","borderTop","logo","maxWidth","content","marginBottom","overflowY","CompetitionCoordinator","Author","Reviewer","ScientificCouncilMember","CompetitionCommitteeMember","CompetitionJuryMember","FinanceCoordinator","BoardMember","Dashboard","sidebar","left","top","container","children","BillingMethodEnum","UserActions","payload","type","undefined","createAction","SET_USER","ErrorService","error","response","responseException","exceptionMessage","status","RodoMessage","textAlign","padding","href","rel","CircularProgress","Button","sizeSmall","loading","disabled","size","defaultProps","variant","loader","thickness","Message","ERROR","backgroundColor","borderRadius","INFO","info","RODOAcceptanceDialog","dialogBackground","backgroundSize","backgroundImage","BackgroundImage","backgroundRepeat","useState","serverError","setServerError","RODOChecked","setRODOChecked","Dialog","open","DialogTitle","DialogContent","FormControlLabel","control","Checkbox","name","onChange","e","checked","DialogActions","reload","DashboardScreenWrapper","setLoading","dispatch","useDispatch","result","LinearProgress","SectionHeader","justifyContent","margin","right","Box","Form","React","FormContent","FormikTextField","FieldTextField","FormikSelect","menuItemError","fieldName","items","FormControl","Boolean","InputLabel","htmlFor","map","item","MenuItem","FieldSelect","form","useFormikContext","inputProps","touched","errors","CompetitionService","getForCompetitionCoordinator","getActive","getActiveForView","getInactive","competitionId","addFile","getAttachmentTemplates","deleteAttachmentTemplate","attachmentTemplateId","addCompetitionCoordinators","userIds","deleteCompetitionCoordinator","CompetitionTypeEnum","Yup","required","max","surname","scienceUnit","when","is","then","phone","email","password","matches","agreement","oneOf","reviewerSpecialization","competitionStartDate","competitionEndDate","startDate","schema","min","competitionName","requiredConsent","optional","billingMethod","hasDocumentForAllReviews","PerCompetition","stageName","emailTemplateTitle","emailTemplateBody","repeatNewPassword","projectName","unitInfo","academicTitle","acceptedRequiredConsent","estimatedFinishTime","typeError","positive","nullable","estimatedFunds","BoxHeader","TextField","FileInput","smallTextField","fileInput","zIndex","input","removeIcon","transform","chooseFileLabel","pointerEvents","whiteSpace","adormentStart","adormentEnd","adornmentMediumSize","adornmentEndWithValue","inputLabelMarginDense","helperText","fullWidth","allowedMimeTypes","inputRef","useRef","InputLabelProps","marginDense","shrink","InputProps","adornedStart","adornedEnd","startAdornment","files","file","accept","join","endAdornment","Close","current","Select","labelId","Autocomplete","DocumentFormRow","checkboxWrapper","border","checkbox","checkboxFormControlLabel","removeDocumentButton","fileMimeTypeError","documentName","specimen","isRequired","isForAllReviews","visibleForRoles","onDocumentNameChange","onDocumentFileChange","onRoleChange","onIsRequiredChange","onIsForAllReviewsChange","onVisibleForRolesChange","onRemove","values","Grid","spacing","xs","alignContent","defaultChecked","multiple","options","getOptionLabel","option","renderOption","renderInput","ConfirmationDialog","dialogTitle","onClose","autoFocus","DocumentationConfigurator","documentsList","setFieldValue","documents","setDocuments","isConfirmDialogOpen","setIsConfirmDialogOpen","documentToRemoveIndex","setDocumentToRemoveIndex","handleDocumentRemove","index","filter","document","handleDocumentNameChange","handleDocumentFileChange","handleRoleChange","handleIsRequiredChange","handleIsForAllReviewsChange","handleVisibleForRolesChange","handleRemove","confirmed","handleCloseConfirmationDialog","CompetitionCategoryEnum","FormError","show","SubmissionStatusEnum","ListRow","ListItem","flex","pullRight","ListHeader","headerClassName","ListHeaderItem","List","rows","headerCells","cell","text","row","headerCellConfig","find","ListAction","Tooltip","listData","CompetitionCoordinatorsSelector","competitionCoordinatorsListWrapper","competitionCoordinatorsList","iconDelete","red","saveButton","alignSelf","isUpdate","availableCompetitionCoordinators","setAvailableCompetitionCoordinators","selectedCompetitionCoordinators","setSelectedCompetitionCoordinators","competitionCoordinatorsToSave","setCompetitionCoordinatorsToSave","fetchCompetitionCoordinators","availableCoordinators","selectedCoordinators","selectedUser","handleSave","noOptionsText","_","competitionCoordinator","userIdToDelete","DeleteOutlined","CompetitionForm","documentationConfigurator","alert","setFormFieldValue","initValues","isCompetitionEdit","attachmentTemplates","setBillingMethod","savedCompetitionId","setSavedCompetitionId","Project","competitionCategory","setCompetitionCategory","setHasDocumentForAllReviews","Person","path","initialValues","edition","moment","format","endDate","ResearchProjectCompetition","category","PerReview","isActive","competitionCoordinatorUserIds","saveAttachments","promises","formData","FormData","append","toString","forEach","r","Promise","all","handleSubmit","setSubmitting","newCompetitionId","uuidv4","validationSchema","shape","onSubmit","dirty","isSubmitting","formAttachmentTemplates","some","template","updateHasDocumentForAllReviews","ScholarshipProgram","MobileTechnics","multiline","AdminAddCompetitionScreen","AddNewAttachmentTemplate","newDocumentRow","newDocumentRowButtons","newDocumentRowCancelButton","onNewFileAdded","addFileServiceHandler","defaultVisibilityRoles","defaultAttachmentTemplate","visibilityRoles","isAddingNewDocument","setIsAddingNewDocument","savingNewDocumentFile","setSavingDocumentFile","newAttachmentTemplate","setNewAttachmentTemplate","handleAddNewDocument","handleVisibilityRolesChange","event","Badge","textTransform","letterSpacing","style","RoleBadge","getColor","getText","RoleVisibilityBadge","roles","DocumentForAllReviewsBadge","DocumentationEdit","buttons","downloadTemplateButton","badge","asterisk","onFileDeleted","deleteFileServiceHandler","deletingTemplateId","setDeletingTemplateId","templateToDelete","setTemplateToDelete","specimenFileName","templateId","handleDeleteTemplateClick","AdminCompetitionDetailsScreen","match","setCompetition","setAttachmentTemplates","fetchAttachmentTemplates","sortBy","UserForm","phoneNumber","scientificFacility","isValid","FormSuccess","message","AdminUserDetailsScreen","resetPasswordError","resetPasswordSuccess","button","setUser","setResetPasswordError","resetPasswordLoading","setResetPasswordLoading","setResetPasswordSuccess","resetUserPassword","Error","StageService","getStages","submissionId","getStageReviewers","stageId","getAvailableStageReviewers","getStage","getActiveStage","addStage","addStageReviewer","deleteStageReviewer","updateStage","addTemplateFile","removeFile","updateFile","submitAttachments","getStageAttachmentsForRole","addSuggestedReviewer","acceptSuggestedReviewer","getAvailableSuggestedReviewers","removeSuggestedReviewer","getSuggestedReviewers","canReviewStage","StageForm","stageActivationError","activeStageName","hideDocumentation","serverErrorMessage","setServerErrorMessage","setStageActivationError","newStageId","ScreenToolbar","backLink","backIcon","ChevronLeft","AdminStageDetailsScreen","stage","setStage","activeStage","setActiveStage","BoxLoader","BoxSection","sectionContent","LabelValue","multilineText","fontFamily","Typography","SubmissionService","submissionProjectData","autosave","getOneFull","getAutosaved","getMy","getAllAttachments","getReviewerAttachments","getAuthorAttachments","getOtherAttachments","submitOtherAttachments","getArchived","mark","getInReview","getWon","getDrafts","getRejected","getNew","getSubmissionsCount","addComment","getComments","addNote","getNotes","deleteNote","noteId","addReviewer","deleteReviewer","getMark","getAllMarks","updateStatus","addSubmissionDetails","updateSubmissionDetails","notifyCreated","canReviewSubmission","AttachmentStatusEnum","getDuplicateSubmissionAttachments","submissionAttachments","attachmentsToUpload","attachments","Array","from","fileName","attachment","allAttachments","templateName","attach","Map","set","duplicates","reduce","group","templateNames","create","duplicate","sort","b","findIndex","CommentStatusEnum","SubmissionDocumentation","templateLinkContainer","templateLink","iconDownload","green","rightContainer","downloadUploadedFileButton","documentAuthor","changeDocumentFileInput","alertMessage","attachmentsToUpdate","shouldValidate","submissionStatus","competetionIsActive","docsAssignedTo","onFileChange","onAdminFileChange","onAttachmentRemoved","attachmentToDelete","setAttachmentToDelete","confirmationDialogTitle","setConfirmationDialogTitle","duplicateAttachments","setDuplicateFileNames","handleDownloadTemplate","getDuplicateAttachments","handleFileChange","attachmentId","deleteFile","renderDownloadButton","displaySenderName","senderFullName","senderFirstName","senderLastName","CloudDownloadOutlined","renderDeleteButton","Alert","severity","replace","shouldRenderMiddleColumn","hasSpecimenFile","shouldRenderDownloadTemplate","justify","Review","Autosaved","handleClose","DateService","DiscussionTile","comment","lineHeight","borderTopColor","borderBottom","author","date","footer","createdAt","senderRole","NoteStatusEnum","Autosave","debounceMs","initialAttachments","currentAttachments","initialMark","currentMark","submitting","formReadonly","onSave","formValues","setFormValues","setAttachments","setMark","formContext","enqueueSnackbar","useSnackbar","debouncedSave","useCallback","debounce","currentAttachmentsArray","attachmentsToSave","x","autoHideDuration","formValuesChanged","isEqual","formAttachmentsChanged","isMapEqual","markChanged","cancel","CommentForm","addButton","onSaved","autosaving","setAutosaving","dataToSubmit","setDataToSubmit","formHelpers","setFormHelpers","setInitialValues","Submitted","resetForm","handleAutosave","placeholder","AddComment","Discussion","tile","comments","setComments","fetchComments","DeleteNote","deleteButton","onDeleted","handleDelete","NotesTile","note","MarkStatusEnum","NoteForm","AddNote","Notes","notes","setNotes","fetchNotes","getSubmissionStatusLabel","Draft","New","Invalid","Rejected","Won","Closed","Divider","FormikCheckbox","checkboxWrapperError","borderColor","checkboxErrorLabel","additionalText","additionalTextDisabled","divider","FieldCheckbox","Label","SubmissionForm","isSubmissionEdit","useField","SubmissionStageDocumentationRow","sendButton","sendButtonContainer","changeDocumentContainer","noDocumentationMessage","fontStyle","submissionStage","readonly","onChanged","onStageAttachmentsChanged","showSpecimen","saving","setSaving","shouldValidateFiles","setShouldValidateFiles","stageAttachments","setStageAttachments","setAttachmentsToUpload","setAttachmentsToUpdate","fetchStageAttachments","handleFormSubmit","hasValidDocuments","attachmentsToAdd","autosaveAttachments","updateAttachments","updateFiles","hasAttachmentsToSubmit","hasAttachmentsToUpload","hasAutosavedAttachments","getNoDocumentationMessage","SubmissionStagesDocumentation","selectedStage","canUserReviewStage","setCanUserReviewStage","NotificationTypeEnum","ReviewSubmission","markButton","errorIcon","slider","competitionType","initValue","Slider","ValueLabelComponent","enterTouchDelay","placement","defaultValue","step","valueLabelDisplay","ErrorOutlineRounded","SubmissionDetails","actionsBox","section","sendDocumentsButton","sectionsContainer","topError","reviewerAttachments","authorAttachments","submission","marks","summedMarks","defaultMark","reviewer","reviewerId","shouldValidateMark","setShouldValidateMark","savingAuthorAttachments","setSavingAuthorAttachments","savingReviewerAttachments","setSavingReviewerAttachments","markServerError","setMarkServerError","setInitialMark","markLoading","setMarkLoading","typeOfTemplatesToUpdate","setTypeOfTemplatesToUpdate","authorAttachmentsToUpdate","setAuthorAttachmentsToUpdate","reviewerAttachmentsToUpdate","setReviewerAttachmentsToUpdate","submittingReview","setSubmittingReview","project","duration","cost","attachmentsByRole","getAttachmentsByRole","handleAuthorFileChange","hasAttachmentsToUpdate","saveMark","setSavingAttachments","handleUpdateAttachments","concat","attachmentsForAllReviews","autosaveMark","fetchMark","Fragment","ReviewerAutocomplete","submissionReviewersListHeader","submissionReviewersList","heading","forceRefreshReviewersList","onSaveHandler","reviewers","setReviewers","reviewersToSave","setReviewersToSave","submissionReviewers","setSubmissionReviewers","setUserIdToDelete","fetchSubmissionReviewers","handleChange","handleSaveAction","handleDeleteReviewerClick","senderId","AcceptSubmission","radioGroup","fieldset","onUpdated","setValue","RadioGroup","Number","Radio","ReviewSubmissionAdminActions","CustomReviewerAutocomplete","SuggestedReviewers","box","suggestedReviewers","suggestedReviewersHeader","boxHeading","actions","councilMember","entityId","blockHeaderText","listHeaderText","suggestedReviewersVisibilityOpt","addSuggestedReviewerHandler","removeSuggestedReviewerHandler","acceptSuggestedReviewerHandler","fetchAvailableSuggestedReviewersHandler","fetchAssignedSuggestedReviewersHandler","reviewerAcceptedEvent","setOptions","setSuggestedReviewers","users","fetchAssignedSuggestedReviewers","fetchAvailableSuggestedReviewers","allowSelectSuggestedReviewers","clearCallback","showSuggestedReviewersList","acceptReviewerCallback","allowAcceptSuggestedReviewers","declineReviewerCallback","suggestedReviewer","suggestedByFirstName","suggestedByLastName","suggestedByUserId","SubmissionStages","listItem","listHeader","visibilityOptions","reviewerStageAttachments","onSelectedValueChanged","useHistory","blockHeader","setBlockHeader","stages","setStages","setSelectedStage","selectedStageReviewers","setSelectedStageReviewers","availableReviewers","setAvailableReviewers","setBlockHeaderValue","reviewersVisibility","showReviewersList","allowReviewersEdition","handleStageReviewerSave","reviewerDto","onUpdate","selectedKey","stagesVisibility","allowStagesSwitch","allowStagesEdition","BorderColorSharp","stageReviewer","suggestedReviewersVisibility","RestoreSubmission","restoreSubmissionButtonContainer","handleRestoreSubmission","AllowedMimeTypes","AdditionalDocumentation","SubmissionOtherAttachments","overflow","blue","gridContainer","leftContainer","submissionOtherAttachments","onDelete","setFileMimeTypeError","handleAttachmentDelete","handleAttachmentUpdate","xl","InsertDriveFileOutlined","MultipleFileInput","allowedFileExtensionsLabel","onDrop","onDropRejected","onDropAccepted","getRootProps","getInputProps","CloudUploadOutlined","additionalDocumentationBox","isSticky","otherAttachments","setOtherAttachments","otherAttachmentsLoading","setOtherAttachmentsLoading","mapValues","keyBy","otherAttachmentsToUpdate","setOtherAttachmentsToUpdate","fetchOtherAttachments","handleMultipleFileChange","updateOtherAttachments","attachmentsArray","handleSaveOtherAttachments","handleSubmitOtherAttachments","every","AdminSubmissionDetailsScreen","setSubmission","setAuthorAttachments","setReviewerAttachments","forceRefreshReviewers","setForceRefreshReviewers","setReviewerStageAttachments","fetchSubmission","partition","acceptSuggestedReviewerEventHandler","assessments","showStagesList","AdminUsersScreen","indent","actionsWrapper","iconRestore","disableDeleteButton","setUsers","competitions","setCompetitions","selectedRole","setRole","selectedCompetition","setSearchPhrase","handleActivateUserClick","fetchUsers","handleDeactivateUserClick","filterUsers","clearFilters","onEnterPress","toLowerCase","preventDefault","onKeyDown","FormatListBulletedTwoTone","RestoreFromTrashOutlined","AdminAddUserScreen","AdminCompetitionsScreen","NotificationTemplateService","AdminEmailTemplatesScreen","templates","setTemplates","EmailTemplateForm","body","AdminEmailTemplateDetailsScreen","legendTitle","legendItem","setTemplate","legends","UserRegistered","UserGenerated","UserPasswordChanged","UserPasswordReset","EmailConfirmationCodeGenerated","CommentAdded","SubmissionCreated","SubmissionRejected","SubmissionAccepted","SubmissionClosed","SubmissionReviewerAssigned","SubmissionCreatedUser","OtherAttachmentAdded","UserPasswordResetByEmail","CompetitionRankingList","getRolePath","split","reviewersCount","reviewsCount","GrantImplementationRankingList","CompetitionRankingListWithTabs","tabs","tab","badgeText","activeTab","setActiveTab","submissions","setSubmissions","submissionsCount","setSubmissionsCount","Tabs","indicatorColor","Tab","badgeContent","won","inReview","rejected","draft","CompetitionRankingListScreen","AdminUserCompetitionListScreen","setTitle","AdminAddStageScreen","AdminReportsScreen","ReportsService","getFoundationInNumbers","FoundationInNumbersReportScreen","reportData","setReportData","reportDataRow","numberOfSubmissions","numberOfSubmissionsWithGrants","numberOfClosedSubmissions","sumOfCosts","AdminScreens","UnloggedLayout","boxContainer","maxHeight","RegistrationForm","checkboxField","HelpMessage","RegitrationScreen","LoginForm","console","log","LoginScreen","resetPasswordLink","infoMessage","setInfoMessage","useLocation","confirmedEmail","SuccessRegistrationScreen","loginButton","AuthorRoute","SubmissionsList","AuthorSubmissionsScreen","isCompetitionActive","AuthorSubmissionInstructions","AuthorSubmissionDetailsScreen","AuthorCompetitionsScreen","SubmitSubmission","setSubmissionId","handleSubmissionDetailsSubmit","submissionProject","handleSubmissionDetailsAutosave","handleAutosaveSubmission","invalid","hasInvalidDocuments","academicTitleValidator","AuthorSubmissionScreen","submissionNotFound","setSubmissionNotFound","fetchAttachments","fetchAutosavedSubmission","axiosError","AuthorScreens","BoardMemberRoute","ActiveCompetitionList","rolePath","BoardMemberCompetitionsScreen","BoardMemberSubmissionDetailsScreen","ReviewersScreen","BoardMemberScreens","FinanceCoordinatorRoute","FinanceCoordinatorCompetitionsScreen","FinanceCoordinatorSubmissionDetailsScreen","FinanceCoordinatorScreens","ReviewerRoute","ReviewerActiveSubmissionsScreen","hasReviewed","ReviewerArchivedSubmissionsScreen","ReviewerSubmissionInstructions","ReviewerSubmissionScreen","canUserReviewSubmission","setCanUserReviewSubmission","ReviewerScreens","ScientificCouncilMemberRoute","ScientificCouncilMemberCompetitionsScreen","SubmissionInstructions","SubmissionDetailsScreen","ScientificCouncilMemberScreens","PasswordChangeForm","successMessage","setSuccessMessage","oldPassword","newPassword","newPasswordRepeat","UpdateSpecialtyForm","specialtyValidator","ProfileScreen","PrivateRoute","isUserLoggedIn","ConfirmEmailScreen","setError","query","qs","parse","search","decode","code","ResetPasswordForm","ResetPasswordScreen","initialState","userReducer","action","produce","rootReducer","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","trace","traceLimit","compose","store","createStore","applyMiddleware","thunk","PasswordResetEmailSentScreen","CreatePasswordForm","token","repeatedNewPassword","CreatePasswordScreen","setToken","setUserId","CreatePasswordSuccessScreen","ResetPasswordErrorScreen","CompetitionCoordinatorRoute","CompetitionCoordinatorCompetitionsScreen","CompetitionCoordinatorScreens","CompetitionCommitteeMemberRoute","CompetitionCommitteeMemberCompetitionsScreen","CompetitionCommitteeMemberScreens","CompetitionJuryMemberRoute","CompetitionJuryMemberCompetitionsScreen","CompetitionJuryMemberScreens","App","maxSnack","anchorOrigin","vertical","horizontal","ThemeProvider","createMuiTheme","CssBaseline","hostname","pl","translation","signIn","registration","resetPasswordMessage1","resetPasswordMessage2","linkSent","forgotPassword","iAcceptTermsTitle","iAcceptTerms","iTerms","iInCaseOfHelp","fieldIsRequired","wrongEmailAddress","incorrectNumber","participant","maximumFieldLength","youMustAgreeToTerms","passwordTooShort","passwordTooLong","fullName","addUser","userDetails","scientificCouncil","management","admin","competitionCommitteeMember","competitionJuryMember","competitionDetails","addCompetition","invalidPassword","registrationSuccess","activateYourAccount","startStatus","inactive","researchProjectCompetition","scholarshipProgram","mobileTechnics","alreadyHasActiveStage","disalbleActiveStage","competitionName0","competitionName1","competitionName2","competitionName3","endDateShouldBeAfterStartDate","submissionName","submissionDate","submissionDetails","adminActions","timeline","createDate","documentation","noReviewers","Administrator","downloadDocument","financeCoordinator","emailTemplates","templateTitle","templateDetails","save","templateBody","passwordMustMatch","passwordChangeSuccess","passwordChangeError","passwordResetSuccess","generalInfo","addDocument","noDocumentsAdded","templateFile","removeDocument","noCompetitionsFound","details","submit","sendSubmission","chooseFile","downloadTemplate","deleteDocument","edit","reviewerDocument","authorDocument","fillDocument","suggestReviewers","pickReviewer","activeSubmissions","archiveSubmissions","none","noAuthorDocumentation","noReviewerDocumentation","rankingList","reviewSubmission","markRequired","authorName","generalMark","discussion","commentDetails","noteDetails","attachedReviewers","markedSubmissions","submissionsInprogress","activeCompetitions","usersCompetitions","authorsCompetitions","reviewersCompetitions","alreadyParticipate","instructions","alreadyMarkedSubmission","updateSpecialtySuccess","acceptSubmission","submissionMark","noMarks","mySubmission","mySubmissions","toAcceptSubmissions","rejectedSubmissions","toPickReviewersSubmissions","markInProgressSubmissions","grantInplementation","rejectSubmission","choiceIsRequired","submissionWasRejected","marksCount","markSaved","marked","backToRankingList","backToUserList","backToSubmission","authorDocumentation","reviewerDocumentation","downloadUploadedFile","markAsWon","closeSubmission","submissionDraft","submissionInvalid","submissionNew","submissionReview","submissionWon","submissionRejected","submissionClosed","emailConfirmation","inputEmailAddress","resetPasswordScreenMessage","errorConfirmEmail","emailIsConfirmed","prizeCandidate","candidateUnitInfo","candidateAdditionalDocumentation","requiredConsentLabel","defaultRequiredConsent","consentIsRequired","send","submissionNumber","notRequired","requiredInfo","noStagesDefined","noneStages","stageDetails","anyFile","multiFileInputLabelStart","multiFileInputLabelClickHere","multiFileInputLabelEnd","invalidFileExtension","allowedExtensions","attachmentTemplateAllowedExtensions","documentRequiredInfo","reports","reportName","competitionCategoryProject","competitionCategoryPerson","numberOfSentSubmissions","foundationInNumbers","suggestedBy","sendDocuments","changeDocument","restoreSubmission","confirmAttachmentTemplateDeletion","confirmSubmissionRestore","confirmReviewerDeletionFromSubmission","confirmReviewerDeletionFromStage","yes","no","noCompetitionCoordinatorsToChoose","pickCompetitionCoordinator","competitionCoordinators","noCompetitionCoordinatorsSelected","billingMethodPerReview","billingMethodPerCompetition","duplicatedFileInfo","documentForAllReviews","confirmChangeDocumentForAllReviews","confirmDeleteDocumentFromAllReviews","billingPerCompetitionInfo","acceptRequiredConsentLabel","deleteUser","restoreUser","confirmUserDeletion","deleted","atLeastOneDocumentIsForAllReviews","i18n","use","initReactI18next","init","resources","lng","fallbackLng","debug","interpolation","escapeValue","ReactDOM","StrictMode","getElementById","navigator","serviceWorker","ready","unregister","catch"],"mappings":"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","file":"static/js/main.c34e98e8.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/bg.557c1fd7.jpg\";","export enum RoleEnum {\n Author = 'Author',\n Reviewer = 'Reviewer',\n Admin = 'Administrator',\n ScientificCouncilMember = 'Scientific Council Member',\n FinanceCoordinator = 'Finance Coordinator',\n BoardMember = 'Board Member',\n CompetitionCoordinator = 'Competition Coordinator',\n CompetitionCommitteeMember = \"Competition Committee Member\",\n CompetitionJuryMember = \"Competition Jury Member\"\n}\n","import { ThemeOptions } from '@material-ui/core/styles/createMuiTheme';\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\nimport { createStyles } from '@material-ui/core';\n\ntype GrayUnion = 'g_0' | 'g_1' | 'g_2' | 'g_3' | 'g_4';\ntype RadiusUnion = 'r_0';\n\ntype GrayType = { [key in GrayUnion]: CSSProperties['color'] };\ntype RadiusType = { [key in RadiusUnion]: number };\n\ndeclare module '@material-ui/core/styles/createMuiTheme' {\n interface Theme {\n custom: {\n radius: RadiusType;\n gray: GrayType;\n };\n }\n\n interface ThemeOptions {\n custom: {\n radius: RadiusType;\n gray: GrayType;\n };\n }\n}\n\nconst palette = {\n primary: {\n main: '#1b79de',\n },\n secondary: {\n main: '#550987',\n },\n success: {\n main: '#12e048',\n contrastText: '#13ba3f',\n light: '#91ffae',\n },\n};\n\nconst custom = {\n radius: {\n r_0: 4,\n },\n gray: {\n g_0: '#f2f2f2',\n g_1: '#d6d6d6',\n g_2: '#b3b3b3',\n g_3: '#a1a1a1',\n g_4: '#858585',\n },\n};\n\nconst MuiButton = createStyles({\n contained: {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none',\n },\n '&:active': {\n boxShadow: 'none',\n },\n },\n});\n\nconst theme: ThemeOptions = {\n palette,\n custom,\n overrides: {\n MuiButton,\n },\n};\n\nexport default theme;\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst AdminRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.Admin) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const AdminRoute = withRouter(AdminRouteComponent);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"image\", {\n id: \"nfp-logo\",\n width: 447,\n height: 167,\n xlinkHref: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAACnCAYAAACB4VIwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0MzYwLCAyMDIwLzAyLzEzLTAxOjA3OjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDYtMDRUMTU6NDM6MjUrMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA2LTA0VDE1OjQ0OjEzKzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA2LTA0VDE1OjQ0OjEzKzAyOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmFmNzQ3NTg0LTgxYzUtNDc0Mi1iNjU5LTVjY2M2ZTNjZjFjNiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjViNjBjNTUwLWNhNGYtNjQ0Zi1hNmI0LTEzODczZDhmMzFmOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmZlMmNiN2I5LTdhNGYtNDNiMS1iZmJmLWJlYzE2MzdhZWMyNCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZmUyY2I3YjktN2E0Zi00M2IxLWJmYmYtYmVjMTYzN2FlYzI0IiBzdEV2dDp3aGVuPSIyMDIwLTA2LTA0VDE1OjQzOjI1KzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YWY3NDc1ODQtODFjNS00NzQyLWI2NTktNWNjYzZlM2NmMWM2IiBzdEV2dDp3aGVuPSIyMDIwLTA2LTA0VDE1OjQ0OjEzKzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6PFlsPAABOQ0lEQVR4nO29f5RkZ13n/7JObX379Olv26e/vb39HcexdxzjOI6zY4ghjpjNxhAiRuSXiEF+iECIyGJkWTbLyTeHk5OT5WQji4AovwRUBISAiBgQQgwQQoxhjOM4DGFox3Ecm7Ft2rZpiko93z/e93Puc2/dW3Vv1e2uqp7nfU6d6em+9dznPvd5Pr9/fIdzjoCAgICAgAsJtWFPICAgICAgYLsRmF9AQEBAwAWHwPwCAgICAi44BOYXEBAQEHDBITC/gICAgIALDoH5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\"\n});\n\nvar SvgNfpLogo = function SvgNfpLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 447,\n height: 167,\n viewBox: \"0 0 447 167\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgNfpLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/nfp-logo.3b6beb44.svg\";\nexport { ForwardRef as ReactComponent };","export enum ActionType {\n SET_USER = 'SET_USER',\n}\n","import { TOptions, StringMap, i18n } from 'i18next';\nimport { Namespace, UseTranslationOptions, useTranslation } from 'react-i18next';\n\nexport type TFunction = (key: string, options?: TOptions | string) => string;\n\ntype UseTranslationResponse = [TFunction, i18n, boolean] & {\n t: TFunction;\n i18n: i18n;\n ready: boolean;\n};\n\ntype UseTranslationFn = (ns?: Namespace, options?: UseTranslationOptions) => UseTranslationResponse;\n\nexport const useTranslator = useTranslation as UseTranslationFn;\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\nimport classNames from 'classnames';\n\nconst styles = () =>\n createStyles({\n root: {\n fontWeight: 600,\n '&:hover': {\n opacity: 0.8,\n },\n },\n clearStylings: {\n fontWeight: 'inherit',\n '&:hover': {\n opacity: 1,\n },\n },\n });\n\ntype Props = RouterLinkProps &\n WithStyles & {\n className?: string;\n clearStylings?: boolean;\n };\n\nconst LinkComponent: React.FunctionComponent = ({ classes, className, clearStylings, ...restProps }) => {\n return (\n \n );\n};\n\nexport const Link = withStyles(styles)(LinkComponent);\n","import axios, { AxiosRequestConfig } from 'axios';\n\nexport const API_URL = process.env.REACT_APP_API_URL || `${window.location.origin}/api`;\n\nconst headers = {\n 'Content-Type': 'application/json',\n};\n\nconst httpConfig = {\n headers,\n};\n\nconst getConfig = (config?: AxiosRequestConfig) => ({\n ...httpConfig,\n ...config,\n});\n\nexport const ApiService = {\n get: (resource: string, config?: AxiosRequestConfig) => {\n return axios.get(`${API_URL}/${resource}`, getConfig(config));\n },\n post: (resource: string, data?: object, config?: AxiosRequestConfig) => {\n return axios.post(`${API_URL}/${resource}`, data, getConfig(config));\n },\n put: (resource: string, data?: object, config?: AxiosRequestConfig) => {\n return axios.put(`${API_URL}/${resource}`, data, getConfig(config));\n },\n delete: (resource: string, config?: AxiosRequestConfig) => {\n return axios.delete(`${API_URL}/${resource}`, getConfig(config));\n },\n};\n","import { ApiService } from './Api.service';\nimport { RegistrationData } from '../shared/types/RegistrationData';\nimport { LoginData } from '../shared/types/LoginData';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { User } from '../shared/types/User';\nimport { UserFormData } from '../shared/types/UserFormData';\nimport { ChangePasswordFormData } from '../shared/types/ChangePasswordFormData';\nimport { Submission } from '../shared/types/Submission';\nimport { ResetPasswordFormData } from '../shared/types/ResetPasswordFormData';\nimport { SetNewPasswordFormData } from '../shared/types/SetNewPasswordFormData';\n\nexport const UserService = {\n resource: 'User',\n register: (data: RegistrationData) => {\n return ApiService.post(`${UserService.resource}/register`, data);\n },\n confirmEmail: (emailConfirmationCode: string, userId: string) => {\n return ApiService.post(`${UserService.resource}/email/confirm`, {\n emailConfirmationCode,\n userId\n });\n },\n login: (data: LoginData) => {\n return ApiService.post(`${UserService.resource}/sign-in`, data);\n },\n add: (data: UserFormData) => {\n return ApiService.post(`${UserService.resource}/generate`, data, { withCredentials: true });\n },\n getMe: () => {\n return ApiService.get>(`${UserService.resource}/me`, { withCredentials: true });\n },\n getSubmissionsByUser: (userId: User['userId']) => {\n return ApiService.get>>(`${UserService.resource}/${userId}/submissions`, { withCredentials: true });\n },\n getAll: () => {\n return ApiService.get>>(UserService.resource, { withCredentials: true });\n },\n getUsersByFilter: (role: string, competition: string, searchPhrase: string) => {\n return ApiService.get>>(`${UserService.resource}`,\n { withCredentials: true, params: normalizeParameters({ role, competition, searchPhrase }) });\n },\n getOne: (userId: User['userId']) => {\n return ApiService.get>(`${UserService.resource}/${userId}`, { withCredentials: true });\n },\n update: (userId: User['userId'], data: UserFormData) => {\n return ApiService.put(`${UserService.resource}/${userId}`, data, { withCredentials: true });\n },\n updateUserIsActiveField: (userId: User['userId'], value: boolean) => {\n return ApiService.put(`${UserService.resource}/${userId}/is-active?value=${value}`, {}, { withCredentials: true });\n },\n updateSpecialty: (specialty: User['specialty']) => {\n return ApiService.put(`${UserService.resource}/specialty?specialty=${specialty}`, {}, { withCredentials: true });\n },\n changePassword: (userId: User['userId'], data: ChangePasswordFormData) => {\n return ApiService.put(`${UserService.resource}/${userId}/password`, data, { withCredentials: true });\n },\n resetPassword: (userId: User['userId']) => {\n return ApiService.post(`${UserService.resource}/${userId}/password/reset`, {}, { withCredentials: true });\n },\n resetPasswordByEmailToken: (data: ResetPasswordFormData) => {\n return ApiService.post(`${UserService.resource}/password/reset/email`, data);\n },\n setNewPasswordByEmailToken: (data: SetNewPasswordFormData) => {\n return ApiService.post(`${UserService.resource}/password/set`, data);\n },\n logout: () => {\n return ApiService.post(`${UserService.resource}/sign-out`, {}, { withCredentials: true });\n },\n getCompetitionCoordinators: () => {\n return ApiService.get>>(`${UserService.resource}/competition-coordinators`, { withCredentials: true });\n },\n getReviewers: () => {\n return ApiService.get>>(`${UserService.resource}/reviewers`, { withCredentials: true });\n },\n getReviewersGrid: () => {\n return ApiService.get>>(`${UserService.resource}/reviewers-grid`, { withCredentials: true });\n },\n updateAcademicTitle: (title: string) => {\n return ApiService.put(`${UserService.resource}/academic-title?academicTitle=${title}`, {}, {\n withCredentials: true,\n });\n },\n setAcceptedRODO: (acceptedRODO: boolean) => {\n return ApiService.put(`${UserService.resource}/RODO?acceptedRODO=${acceptedRODO}`, {}, { withCredentials: true });\n }\n};\n\nconst normalizeParameters = (params: any) => {\n for (const key of Object.keys(params)) {\n if (params[key] === \"\") {\n delete params[key];\n }\n }\n return params;\n}\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { AccountCircle } from '@material-ui/icons';\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Link } from './Link';\nimport { RootState } from '../store/rootReducer';\nimport { UserService } from '../services/User.service';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n fontWeight: 400,\n fontSize: '0.8125rem',\n },\n icon: {\n marginRight: 15,\n fontSize: 35,\n },\n profile: {\n fontWeight: 600,\n color: palette.common.white,\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n logout: {\n fontWeight: 500,\n fontSize: 12,\n marginTop: 5,\n cursor: 'pointer',\n color: palette.common.white,\n display: 'block',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps & {\n className?: string;\n };\n\nconst SidebarUserAvatarComponent: React.FunctionComponent = ({ classes, className, history }) => {\n const { firstName, lastName } = useSelector((state: RootState) => state.user);\n\n const { t } = useTranslator();\n\n const handleLogout = async () => {\n await UserService.logout();\n\n history.push('/login');\n };\n\n return (\n
\n \n \n \n
\n \n {`${firstName} ${lastName}`}\n \n
\n {t('logout')}\n
\n
\n
\n );\n};\n\nexport const SidebarUserAvatar = withStyles(styles)(withRouter(SidebarUserAvatarComponent));\n","import React, { ComponentType } from 'react';\nimport { createStyles, WithStyles, withStyles, SvgIconProps, Theme } from '@material-ui/core';\nimport { NavLink } from 'react-router-dom';\nimport Color from 'color';\nimport classNames from 'classnames';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: 16,\n paddingRight: 20,\n paddingTop: 2,\n paddingBottom: 2,\n cursor: 'pointer',\n color: Color(palette.common.white).alpha(0.5).rgb().string(),\n borderLeft: `4px solid transparent`,\n '&:not(:first-child)': {\n marginTop: 20,\n },\n '&:hover': {\n color: palette.common.white,\n },\n },\n label: {\n marginLeft: 20,\n },\n active: {\n color: palette.common.white,\n borderLeft: `4px solid ${palette.common.white}`,\n },\n iconContainer: {\n minWidth: 30,\n display: 'flex',\n },\n });\n\ntype Props = WithStyles & {\n icon: ComponentType;\n label: string;\n to?: string;\n active?: boolean;\n};\n\nconst SidebarMenuItemComponent: React.FunctionComponent = ({ classes, active, icon: Icon, label, to }) => {\n return to ? (\n \n
\n \n
\n {label}\n
\n ) : (\n \n
\n \n
\n {label}\n \n );\n};\n\nexport const SidebarMenuItem = withStyles(styles)(SidebarMenuItemComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { AccountMultipleOutline, TrophyVariantOutline, At, FileChartOutline } from 'mdi-material-ui';\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n \n \n
\n );\n};\n\nexport const AdminSidebarContent = withStyles(styles)(AdminSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TextBoxOutline, TrophyVariantOutline } from 'mdi-material-ui';\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AuthorSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const AuthorSidebarContent = withStyles(styles)(AuthorSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TextBoxOutline } from 'mdi-material-ui';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst ReviewerSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n {/* */}\n
\n );\n};\n\nexport const ReviewerSidebarContent = withStyles(styles)(withRouter(ReviewerSidebarContentComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\nimport { PeopleAltOutlined } from '@material-ui/icons'\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ScientificCouncilMemberSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const ScientificCouncilMemberSidebarContent = withStyles(styles)(ScientificCouncilMemberSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst FinanceCoordinatorSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n
\n );\n};\n\nexport const FinanceCoordinatorSidebarContent = withStyles(styles)(FinanceCoordinatorSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\nimport { PeopleAltOutlined } from '@material-ui/icons'\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst BoardMemberSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const BoardMemberSidebarContent = withStyles(styles)(BoardMemberSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionCoordinatorSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n
\n );\n};\n\nexport const CompetitionCoordinatorSidebarContent = withStyles(styles)(CompetitionCoordinatorSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\nimport { PeopleAltOutlined } from '@material-ui/icons'\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionCommitteeMemberSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const CompetitionCommitteeMemberSidebarContent = withStyles(styles)(CompetitionCommitteeMemberSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TrophyVariantOutline } from 'mdi-material-ui';\nimport { PeopleAltOutlined } from '@material-ui/icons'\n\nimport { SidebarMenuItem } from '../SidebarMenuItem';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionJuryMemberSidebarContentComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const CompetitionJuryMemberSidebarContent = withStyles(styles)(CompetitionJuryMemberSidebarContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\nimport Color from 'color';\nimport { useSelector } from 'react-redux';\n\nimport { ReactComponent as Logo } from '../assets/nfp-logo.svg';\nimport { SidebarUserAvatar } from './SidebarUserAvatar';\nimport { AdminSidebarContent } from './sidebar-content/AdminSidebarContent';\nimport { AuthorSidebarContent } from './sidebar-content/AuthorSidebarContent';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { ReviewerSidebarContent } from './sidebar-content/ReviewerSidebarContent';\nimport { ScientificCouncilMemberSidebarContent } from './sidebar-content/ScientificCouncilMemberSidebarContent';\nimport { FinanceCoordinatorSidebarContent } from './sidebar-content/FinanceCoordinatorSidebarContent';\nimport { BoardMemberSidebarContent } from './sidebar-content/BoardMemberSidebarContent';\nimport { CompetitionCoordinatorSidebarContent } from './sidebar-content/CompetitionCoordinatorSidebarContent';\nimport { CompetitionCommitteeMemberSidebarContent } from './sidebar-content/CompetitionCommitteeMemberSidebarContent';\nimport { CompetitionJuryMemberSidebarContent } from './sidebar-content/CompetitionJuryMemberSidebarContent';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n background: 'linear-gradient(to bottom, #054895 0%,#73acd7 100%)',\n display: 'flex',\n flexDirection: 'column',\n color: palette.common.white,\n },\n userAvatar: {\n position: 'absolute',\n bottom: 0,\n paddingTop: 20,\n paddingBottom: 20,\n marginLeft: 20,\n marginRight: 20,\n width: 'calc(100% - 40px)',\n borderTop: `1px solid ${Color(palette.common.white).alpha(0.3).rgb().string()}`,\n },\n logo: {\n width: '100%',\n height: 'auto',\n maxWidth: 140,\n marginTop: 20,\n marginLeft: 20,\n },\n content: {\n marginTop: 40,\n marginBottom: 100,\n overflowY: 'auto',\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n};\n\nconst SidebarComponent: React.FunctionComponent = ({ classes, className }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n const getSidebarContent = () => {\n if (role === RoleEnum.Admin) {\n return ;\n }\n\n if (role === RoleEnum.CompetitionCoordinator) {\n return ;\n }\n\n if (role === RoleEnum.Author) {\n return ;\n }\n\n if (role === RoleEnum.Reviewer) {\n return ;\n }\n\n if (role === RoleEnum.ScientificCouncilMember) {\n return ;\n }\n\n if (role === RoleEnum.CompetitionCommitteeMember) {\n return ;\n }\n\n if (role === RoleEnum.CompetitionJuryMember) {\n return ;\n }\n\n if (role === RoleEnum.FinanceCoordinator) {\n return ;\n }\n\n if (role === RoleEnum.BoardMember) {\n return ;\n }\n };\n\n return (\n
\n \n
{getSidebarContent()}
\n \n
\n );\n};\n\nexport const Sidebar = withStyles(styles)(SidebarComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Sidebar } from '../Sidebar';\n\nconst sidebarWidth = 235;\n\nexport const dashboardPaddingLeftRight = 24;\n\nconst styles = () =>\n createStyles({\n root: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n sidebar: {\n position: 'fixed',\n left: 0,\n top: 0,\n bottom: 0,\n width: sidebarWidth,\n },\n container: {\n marginLeft: sidebarWidth,\n width: 'auto',\n paddingLeft: dashboardPaddingLeftRight,\n paddingRight: dashboardPaddingLeftRight,\n },\n });\n\ntype Props = WithStyles;\n\nconst DashboardComponent: React.FunctionComponent = ({ children, classes }) => {\n return (\n
\n \n
{children}
\n
\n );\n};\n\nexport const Dashboard = withStyles(styles)(DashboardComponent);\n","import { UserState } from './reducer';\nimport { createAction, ActionsUnion } from '../helpers';\nimport { ActionType } from '../actionTypes';\n\ntype UserSetActionPayload = UserState;\n\nexport const UserActions = {\n setUser: (payload: UserSetActionPayload) => createAction(ActionType.SET_USER, payload),\n};\n\nexport type UserActions = ActionsUnion;\n","export enum BillingMethodEnum {\n Invalid = 0, \n PerReview = 1,\n PerCompetition = 2\n }\n ","import { ActionCreatorsMapObject } from 'redux';\nimport { ThunkAction } from 'redux-thunk';\n\nimport { RootState } from './rootReducer';\nimport { UserActions } from './user/actions';\n\nexport type Actions = UserActions;\n\nexport interface Action {\n type: T;\n}\n\nexport interface ActionWithPayload extends Action {\n payload: P;\n}\n\nexport function createAction(type: T): Action;\nexport function createAction(type: T, payload: P): ActionWithPayload;\nexport function createAction(type: T, payload?: P) {\n return payload === undefined ? { type } : { type, payload };\n}\n\nexport type ActionsUnion = ReturnType;\nexport type ActionByType = TActionUnion extends {\n type: TActionType;\n}\n ? TActionUnion\n : never;\n\nexport type ThunkResult = ThunkAction;\n","export const ErrorService = {\n parseError: (error: any) => {\n if (\n error &&\n error.response &&\n error.response.data &&\n error.response.data.responseException &&\n error.response.data.responseException.exceptionMessage\n ) {\n return error.response.data.responseException.exceptionMessage;\n }\n\n return 'serverError';\n },\n\n parseStatusCode: (error: any) => {\n if (\n error &&\n error.response &&\n error.response.status\n ) {\n return error.response.status;\n }\n\n return null;\n },\n};\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { useTranslator} from '../i18n/useTranslator';\nimport classNames from 'classnames';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n textAlign: 'left',\n padding: '0px 0px 0px 0px',\n color: 'gray'\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n};\n\nconst RodoMessageComponent: React.FunctionComponent = ({ classes, className }) => {\n const { t } = useTranslator();\n\n return(\n \n )\n};\n\nexport const RodoMessage = withStyles(styles)(RodoMessageComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialCircularProgress, { CircularProgressProps as MaterialCircularProgressProps } from '@material-ui/core/CircularProgress';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialCircularProgressProps & WithStyles;\n\nconst CircularProgressComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const CircularProgress = withStyles(styles)(CircularProgressComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialButton, { ButtonProps as MaterialButtonProps } from '@material-ui/core/Button';\nimport H from 'history';\nimport classNames from 'classnames';\n\nimport { Link } from './Link';\nimport { CircularProgress } from './CircularProgress';\n\nconst styles = () =>\n createStyles({\n sizeSmall: {\n fontSize: 12,\n },\n });\n\ntype Props = MaterialButtonProps &\n WithStyles & {\n to?: H.LocationDescriptor;\n loading?: boolean;\n size?: 'small' | 'medium' | 'large';\n };\n\nconst ButtonComponent: React.FunctionComponent = ({ to, loading, disabled, children, size, classes, ...restProps }) => {\n const defaultProps = {\n variant: 'contained' as 'contained',\n color: 'primary' as 'primary',\n };\n\n const loader = ;\n\n return to ? (\n \n \n {loading ? loader : children}\n \n \n ) : (\n \n {loading ? loader : children}\n \n );\n};\n\nexport const Button = withStyles(styles)(ButtonComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {},\n ERROR: {\n backgroundColor: palette.error.light,\n color: palette.error.contrastText,\n padding: '10px 20px',\n borderRadius: custom.radius.r_0,\n },\n INFO: {\n backgroundColor: palette.info.light,\n color: palette.info.contrastText,\n padding: '10px 20px',\n borderRadius: custom.radius.r_0,\n },\n });\n\ntype Props = WithStyles & {\n type: 'ERROR' | 'INFO';\n className?: string;\n};\n\nconst MessageComponent: React.FunctionComponent = ({ classes, className, children, type }) => {\n return
{children}
;\n};\n\nexport const Message = withStyles(styles)(MessageComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, Dialog, DialogTitle, DialogContent, FormControlLabel, DialogActions, Checkbox, withStyles } from '@material-ui/core';\n\nimport { UserService } from '../services/User.service';\nimport { ErrorService } from '../services/Error.service';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { RodoMessage } from './RodoMessage';\nimport { Button } from './Button';\nimport { Message } from './Message';\nimport BackgroundImage from '../assets/bg.jpg';\n\nconst styles = () => createStyles({\n dialogBackground: {\n backgroundSize: '100% 100%',\n backgroundImage: `url(${BackgroundImage})`,\n backgroundRepeat: 'no-repeat'\n }\n});\n\ntype Props = WithStyles & {\n acceptedRODO: boolean;\n};\n\nconst RODOAcceptanceDialogComponent: React.FunctionComponent = ({classes, acceptedRODO}) => {\n const [serverError, setServerError] = useState('');\n const [RODOChecked, setRODOChecked] = useState(false);\n\n const { t } = useTranslator();\n\n const RODOSubmit = () => {\n (async () => {\n try {\n await UserService.setAcceptedRODO(RODOChecked);\n\n window.location.reload();\n }\n catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n return (\n \n {t('iAcceptTermsTitle')} \n \n \n {setRODOChecked(e.target.checked)}}/>}\n label={t('iAcceptTerms')} />\n {serverError ? ({t(serverError)}) : null }\n \n \n \n \n );\n}\n\nexport const RODOAcceptanceDialog = withStyles(styles)(RODOAcceptanceDialogComponent);","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, LinearProgress } from '@material-ui/core';\nimport { useDispatch } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { Dashboard } from './layouts/Dashboard';\nimport { UserService } from '../services/User.service';\nimport { UserActions } from '../store/user/actions';\nimport { RODOAcceptanceDialog } from './RODOAcceptanceDialog';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst DashboardScreenWrapperComponent: React.FunctionComponent = ({ children, history, classes }) => {\n const [loading, setLoading] = useState(true);\n const [acceptedRODO, setAcceptedRODO] = useState(false);\n\n const dispatch = useDispatch();\n\n const initUser = () => {\n (async () => {\n try {\n const {\n data: { result },\n } = await UserService.getMe();\n\n setAcceptedRODO(result.acceptedRODO);\n\n dispatch(UserActions.setUser(result));\n\n setLoading(false);\n } catch (error) {\n history.push('/login');\n }\n })();\n };\n\n useEffect(initUser, []);\n\n return loading ? :\n \n \n {children}\n ;\n};\n\nexport const DashboardScreenWrapper = withStyles(styles)(withRouter(DashboardScreenWrapperComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 30,\n },\n title: {\n margin: 0,\n fontSize: 22,\n },\n });\n\ntype Props = WithStyles & {\n title?: string;\n right?: JSX.Element;\n};\n\nconst SectionHeaderComponent: React.FunctionComponent = ({ classes, title, right }) => {\n return (\n
\n

{title}

{right}
\n
\n );\n};\n\nexport const SectionHeader = withStyles(styles)(SectionHeaderComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: palette.common.white,\n padding: 20,\n borderRadius: custom.radius.r_0,\n boxShadow: '0px 0px 30px 0px rgba(0,0,0,0.1)',\n '& ol': {\n '& li': {\n margin: '10px 0',\n },\n },\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n};\n\nconst BoxComponent: React.FunctionComponent = ({ children, classes, className }) => {\n return
{children}
;\n};\n\nexport const Box = withStyles(styles)(BoxComponent);\n","import React from 'react';\nimport { Formik, FormikConfig } from 'formik';\n\ntype Props = FormikConfig;\n\nexport class Form extends React.Component> {\n render(): React.ReactNode {\n const { children, ...restProps } = this.props;\n\n return {children};\n }\n}\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { Form } from 'formik';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n '& .form-control': {\n marginBottom: 20,\n },\n },\n });\n\ntype Props = WithStyles;\n\nconst FormContentComponent: React.FunctionComponent = ({ children, classes }) => {\n return
{children}
;\n};\n\nexport const FormContent = withStyles(styles)(FormContentComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { TextField, TextFieldProps } from 'formik-material-ui';\n\nconst styles = () => createStyles({});\n\nexport type FormikTextFieldProps = TextFieldProps & {\n className?: string;\n};\n\ntype Props = FormikTextFieldProps & WithStyles;\n\nconst FormikTextFieldComponent: React.FunctionComponent = ({ className, ...restProps }) => {\n return ;\n};\n\nexport const FormikTextField = withStyles(styles)(FormikTextFieldComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, InputLabelProps } from '@material-ui/core';\nimport { Field } from 'formik';\n\nimport { FormikTextField } from '../formik-controls/FormikTextField';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {\n name: string;\n label?: string;\n type?: string;\n fullWidth?: boolean;\n InputLabelProps?: Partial;\n multiline?: boolean;\n rows?: number;\n disabled?: boolean;\n size?: 'small' | 'medium';\n className?: string;\n placeholder?: string;\n};\n\nconst FieldTextFieldComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const FieldTextField = withStyles(styles)(FieldTextFieldComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, MenuItem, FormControl, InputLabel } from '@material-ui/core';\nimport { Select as MaterialSelect, SelectProps as MaterialSelectProps } from 'formik-material-ui';\nimport { ErrorMessage } from 'formik';\n\nconst styles = () => createStyles({\n error: {\n color: '#f44336',\n margin: '-16px 14px 20px 14px',\n fontSize: '0.75rem'\n },\n menuItemError: {\n color: '#f44336'\n }\n});\n\nexport type SelectProps = Omit & {\n fieldName: string;\n label: string;\n items: Array<{\n label: string;\n value: string;\n }>;\n error?: string;\n};\n\ntype Props = SelectProps & WithStyles;\n\nconst FormikSelectComponent: React.FunctionComponent = ({\n classes,\n fieldName,\n label,\n items,\n error,\n ...restProps\n}) => {\n return (\n \n {label}\n \n {items.map((item) => (\n \n {item.label}\n \n ))}\n \n\n \n \n );\n};\n\nexport const FormikSelect = withStyles(styles)(FormikSelectComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, SelectProps as MaterialSelectProps } from '@material-ui/core';\nimport { Field, useFormikContext } from 'formik';\n\nimport { FormikSelect } from '../formik-controls/FormikSelect';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialSelectProps &\n WithStyles & {\n name: string;\n items: Array<{\n label: string;\n value: string | number | boolean;\n }>;\n };\n\nconst FieldSelectComponent: React.FunctionComponent = ({ label, name, ...restProps }) => {\n const form = useFormikContext();\n\n return (\n \n );\n};\n\nexport const FieldSelect = withStyles(styles)(FieldSelectComponent);\n","import { ApiService } from './Api.service';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { Competition } from '../shared/types/Competition';\nimport { CompetitionFormData } from '../shared/types/CompetitionFormData';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\nimport { User } from '../shared/types/User';\n\nexport const CompetitionService = {\n resource: 'Competition',\n getAll: () => {\n return ApiService.get>>(CompetitionService.resource, { withCredentials: true });\n },\n getForCompetitionCoordinator: () => {\n return ApiService.get>>(`${CompetitionService.resource}/competition-coordinator`, { withCredentials: true });\n },\n getActive: () => {\n return ApiService.get>>(`${CompetitionService.resource}/active`, { withCredentials: true });\n },\n getActiveForView: () => {\n return ApiService.get>>(`${CompetitionService.resource}/active-for-view`, { withCredentials: true });\n }, \n getInactive: () => {\n return ApiService.get>>(`${CompetitionService.resource}/inactive`, { withCredentials: true });\n },\n getOne: (competitionId: Competition['id']) => {\n return ApiService.get>(`${CompetitionService.resource}/${competitionId}`, { withCredentials: true });\n },\n add: (data: CompetitionFormData) => {\n return ApiService.post(`${CompetitionService.resource}`, data, { withCredentials: true });\n },\n update: (competitionId: Competition['id'], data: CompetitionFormData) => {\n return ApiService.put(`${CompetitionService.resource}/${competitionId}`, data, { withCredentials: true });\n },\n addFile: (competitionId: Competition['id'], data: FormData) => {\n return ApiService.post(`${CompetitionService.resource}/${competitionId}/attachment-templates`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n getAttachmentTemplates: (competitionId: Competition['id']) => {\n return ApiService.get>>(`${CompetitionService.resource}/${competitionId}/attachment-templates`, {\n withCredentials: true,\n });\n },\n deleteAttachmentTemplate: (attachmentTemplateId: AttachmentTemplate['id']) => {\n return ApiService.delete(`${CompetitionService.resource}/attachment-templates/${attachmentTemplateId}`, {\n withCredentials: true,\n });\n },\n addCompetitionCoordinators: (competitionId: Competition['id'], userIds: string[]) => {\n return ApiService.post(`${CompetitionService.resource}/${competitionId}/competition-coordinators`, userIds, { withCredentials: true });\n },\n getCompetitionCoordinators: (competitionId: Competition['id']) => {\n return ApiService.get>>(`${CompetitionService.resource}/${competitionId}/competition-coordinators`, { withCredentials: true });\n },\n deleteCompetitionCoordinator: (competitionId: Competition['id'], userId: string) => {\n return ApiService.delete(`${CompetitionService.resource}/${competitionId}/competition-coordinator/${userId}`, { withCredentials: true });\n }\n};\n","import * as Yup from 'yup';\n\nimport { TFunction } from '../i18n/useTranslator';\nimport { BillingMethodEnum } from './enums/BillingMethodEnum';\n\nexport const name = (t: TFunction) => Yup.string().required(t('fieldIsRequired')).max(64, t('maximumFieldLength'));\n\nexport const surname = (t: TFunction) => Yup.string().required(t('fieldIsRequired')).max(64, t('maximumFieldLength'));\n\nexport const scienceUnit = (t: TFunction) =>\n Yup.string().when('role', {\n is: (role) => role === 'Author' || role === 'Reviewer',\n then: Yup.string().required(t('fieldIsRequired')),\n });\n\nexport const phone = (t: TFunction) => Yup.string().max(15, t('maximumFieldLength'));\n\nexport const email = (t: TFunction) =>\n Yup.string().email(t('wrongEmailAddress')).required(t('fieldIsRequired')).max(64, t('maximumFieldLength'));\n\nexport const password = (t: TFunction) =>\n Yup.string()\n .required(t('fieldIsRequired'))\n .matches(/^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%^&+*?!=_]).*$/, t('invalidPassword'));\n\nexport const agreement = (t: TFunction) => Yup.boolean().oneOf([true], t('youMustAgreeToTerms'));\n\nexport const reviewerSpecialization = (t: TFunction) =>\n Yup.string().when('role', {\n is: (role) => role === 'Reviewer',\n then: Yup.string().required(t('fieldIsRequired')),\n });\n\nexport const specialty = (t: TFunction) => Yup.string().required(t('fieldIsRequired')).max(64, t('maximumFieldLength'));\n\nexport const competitionStartDate = (t: TFunction) => Yup.date().required(t('fieldIsRequired'));\n\nexport const competitionEndDate = (t: TFunction) =>\n Yup.date()\n .required(t('fieldIsRequired'))\n .when('startDate', (startDate: string, schema: any) => startDate && schema.min(startDate, t('endDateShouldBeAfterStartDate')));\n\nexport const competitionName = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\n\nexport const requiredConsent = (t: TFunction, required: boolean) =>\n required ?\n Yup.string().required(t('fieldIsRequired'))\n : Yup.string().optional();\n\nexport const billingMethod = (t: TFunction, hasDocumentForAllReviews: boolean) =>\n hasDocumentForAllReviews ?\n Yup.number().oneOf([BillingMethodEnum.PerCompetition], t('atLeastOneDocumentIsForAllReviews'))\n : Yup.number();\n\nexport const stageName = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\n\nexport const emailTemplateTitle = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\n\nexport const emailTemplateBody = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\n\nexport const repeatNewPassword = (t: TFunction) =>\n Yup.string()\n .required(t('fieldIsRequired'))\n .oneOf([Yup.ref('newPassword')], t('passwordMustMatch'))\n .matches(/^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%^&+*?!=_]).*$/, t('invalidPassword'));\n\nexport const projectName = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\nexport const unitInfo = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\nexport const academicTitle = (t: TFunction) => Yup.string().required(t('fieldIsRequired'));\nexport const acceptedRequiredConsent = (t: TFunction, required: boolean) => {\n return required ?\n Yup.boolean().oneOf([true], t('consentIsRequired'))\n : Yup.boolean().optional();\n};\n\nexport const estimatedFinishTime = (t: TFunction, required: boolean) => {\n return required ?\n Yup.number()\n .required(t('fieldIsRequired'))\n .typeError(t('incorrectNumber'))\n .positive(t('incorrectNumber'))\n : Yup.object().nullable(true);\n}\n\nexport const estimatedFunds = (t: TFunction, required: boolean) => {\n return required ? \n Yup.number()\n .required(t('fieldIsRequired'))\n .typeError(t('incorrectNumber'))\n .positive(t('incorrectNumber'))\n : Yup.object().nullable(true);\n}\n","export enum CompetitionTypeEnum {\n Invalid = 0,\n ResearchProjectCompetition = 1,\n ScholarshipProgram = 2,\n MobileTechnics = 3,\n}\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nconst styles = () =>\n createStyles({\n title: {\n fontSize: 18,\n marginTop: 0,\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & {\n title?: string;\n};\n\nconst BoxHeaderComponent: React.FunctionComponent = ({ classes, title }) => {\n return
{title ?

{title}

: null}
;\n};\n\nexport const BoxHeader = withStyles(styles)(BoxHeaderComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialTextField, { TextFieldProps as MaterialTextFieldProps } from '@material-ui/core/TextField';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialTextFieldProps & WithStyles;\n\nconst TextFieldComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const TextField = withStyles(styles)(TextFieldComponent);\n","import React, { useRef } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { Close } from '@material-ui/icons';\nimport classNames from 'classnames';\n\nimport { TextField } from './TextField';\nimport { useTranslator } from '../../i18n/useTranslator';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n position: 'relative',\n },\n smallTextField: {\n maxWidth: 200,\n },\n fileInput: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n opacity: 0,\n width: '100%',\n zIndex: 9,\n cursor: 'pointer',\n },\n input: {\n fontSize: 14,\n padding: '7px 0',\n },\n removeIcon: {\n position: 'absolute',\n right: 5,\n fontSize: 20,\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 999,\n cursor: 'pointer',\n color: custom.gray.g_2,\n '&:hover': {\n color: custom.gray.g_4,\n },\n },\n chooseFileLabel: {\n pointerEvents: 'none',\n backgroundColor: custom.gray.g_0,\n borderRadius: custom.radius.r_0,\n padding: '0 5px',\n fontSize: 11,\n whiteSpace: 'nowrap',\n zIndex: 9,\n },\n adormentStart: {\n paddingLeft: 10,\n },\n adormentEnd: {\n paddingRight: 7,\n },\n adornmentMediumSize: {\n paddingRight: 14,\n },\n adornmentEndWithValue: {\n paddingRight: 28,\n },\n inputLabelMarginDense: {\n fontSize: 14,\n transform: 'translate(10px, 8px) scale(1) !important',\n },\n });\n\ntype Props = WithStyles & {\n label: string;\n value: File | null;\n error?: boolean;\n helperText?: string;\n size?: 'small' | 'medium';\n fullWidth?: boolean;\n allowedMimeTypes?: string[];\n onChange?: (value: File | null) => void;\n};\n\nconst FileInputComponent: React.FunctionComponent = ({\n classes,\n label,\n size = 'medium',\n error,\n helperText,\n fullWidth,\n value,\n allowedMimeTypes,\n onChange,\n}) => {\n const { t } = useTranslator();\n const inputRef = useRef(null);\n\n const handleFileChange = (e: React.ChangeEvent) => {\n const files = e.target.files;\n const file = files ? files[0] : null;\n\n onChange && onChange(file);\n };\n\n const handleClear = () => {\n onChange && onChange(null);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n return (\n
\n ,\n endAdornment: !value ? (\n
{t('chooseFile')}
\n ) : (\n \n ),\n }}\n />\n
\n );\n};\n\nexport const FileInput = withStyles(styles)(FileInputComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialFormControl, { FormControlProps as MaterialFormControlProps } from '@material-ui/core/FormControl';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialFormControlProps & WithStyles;\n\nconst FormControlComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const FormControl = withStyles(styles)(FormControlComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialInputLabel, { InputLabelProps as MaterialInputLabelProps } from '@material-ui/core/InputLabel';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialInputLabelProps & WithStyles;\n\nconst InputLabelComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const InputLabel = withStyles(styles)(InputLabelComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, MenuItem } from '@material-ui/core';\nimport MaterialSelect, { SelectProps as MaterialSelectProps } from '@material-ui/core/Select';\n\nimport { FormControl } from '../FormControl';\nimport { InputLabel } from '../InputLabel';\n\nconst styles = () => createStyles({});\n\ntype Props = MaterialSelectProps &\n WithStyles & {\n name: string;\n label: string;\n items: Array<{\n label: string;\n value: string;\n }>;\n fullWidth?: boolean;\n size?: 'small' | 'medium';\n };\n\nconst SelectComponent: React.FunctionComponent = ({ label, fullWidth, size, name, items, ...restProps }) => {\n return (\n \n {label}\n \n {items.map((item) => (\n \n {item.label}\n \n ))}\n \n \n );\n};\n\nexport const Select = withStyles(styles)(SelectComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport MaterialAutocomplete, { AutocompleteProps as MaterialAutocompleteProps } from '@material-ui/lab/Autocomplete';\n\nconst styles = () =>\n createStyles({\n root: {},\n });\n\ntype Props = WithStyles & MaterialAutocompleteProps;\n\nconst AutocompleteComponent: React.FunctionComponent = ({ ...restProps }) => {\n return ;\n};\n\nexport const Autocomplete = withStyles(styles)(AutocompleteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme, Grid, FormControlLabel, Checkbox } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { TextField } from './inputs/TextField';\nimport { FileInput } from './inputs/FileInput';\nimport { Button } from './Button';\nimport { Select } from './inputs/Select';\nimport { Autocomplete } from './inputs/Autocomplete';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { useFormikContext } from 'formik';\nimport { CompetitionFormData } from '../shared/types/CompetitionFormData';\nimport { BillingMethodEnum } from '../shared/enums/BillingMethodEnum';\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n '&:not(:first-child)': {\n borderTop: `1px solid ${custom.gray.g_0}`,\n paddingTop: 20,\n },\n '&:not(:last-child)': {\n paddingBottom: 20,\n },\n },\n checkboxWrapper: {\n border: '1px solid rgba(0, 0, 0, 0.23)',\n borderRadius: 4,\n padding: '7px 10.5px'\n },\n checkbox: {\n padding: '0 7px 0 0'\n },\n checkboxFormControlLabel: {\n margin: 0\n },\n removeDocumentButton: {\n marginTop: 10,\n },\n fileMimeTypeError: {\n marginBottom: 15\n }\n });\n\ntype Props = WithStyles & {\n documentName: string;\n specimen: File | null;\n role: string;\n isRequired: boolean;\n isForAllReviews?: boolean;\n visibleForRoles: RoleEnum[];\n onRemove: () => void;\n onDocumentNameChange: (value: string) => void;\n onDocumentFileChange: (value: File | null) => void;\n onRoleChange: (value: string) => void;\n onIsRequiredChange: (value: boolean) => void;\n onIsForAllReviewsChange?: (value: boolean) => void;\n onVisibleForRolesChange: (value: RoleEnum[]) => void;\n};\n\nconst DocumentFormRowComponent: React.FunctionComponent = ({\n classes,\n documentName,\n specimen,\n role,\n isRequired,\n isForAllReviews: isForAllReviews,\n visibleForRoles,\n onDocumentNameChange,\n onDocumentFileChange,\n onRoleChange,\n onIsRequiredChange,\n onIsForAllReviewsChange,\n onVisibleForRolesChange,\n onRemove,\n}) => {\n const { t } = useTranslator();\n const { values } = useFormikContext();\n\n return (\n
\n \n \n \n ) => onDocumentNameChange(e.target.value)}\n />\n \n \n \n \n \n \n ) => onRoleChange(e.target.value)}\n />\n \n \n ) => onIsRequiredChange(e.target.value)}\n />\n \n \n {values.billingMethod === BillingMethodEnum.PerCompetition &&\n role === RoleEnum.Reviewer && (\n \n
\n onIsForAllReviewsChange && onIsForAllReviewsChange(e.target.checked)}\n className={classes.checkbox}\n />}\n label={t('documentForAllReviews')} \n />\n
\n
\n )}\n
\n \n `${t(option)}`}\n renderOption={(option) => (\n \n {t(option)}\n \n )}\n renderInput={(params) => }\n value={visibleForRoles}\n onChange={(e: React.ChangeEvent<{}>, value: Array) => onVisibleForRolesChange(value)}\n /> \n \n
\n\n \n
\n );\n};\n\nexport const DocumentFormRow = withStyles(styles)(DocumentFormRowComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({});\n\ntype Props = WithStyles & { \n open: boolean,\n onClose: (confirmed: boolean) => void,\n dialogTitle: string\n};\n\nconst ConfirmationDialogComponent: React.FunctionComponent = ({ classes, open, dialogTitle, onClose }) => {\n const { t } = useTranslator();\n \n return (\n onClose(false)}>\n {dialogTitle}\n \n \n \n \n \n );\n};\n\nexport const ConfirmationDialog = withStyles(styles)(ConfirmationDialogComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nimport { Button } from './Button';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { DocumentFormRow } from './DocumentFormRow';\nimport { DocumentRow } from '../shared/types/DocumentRow';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = () =>\n createStyles({\n root: {},\n documentsList: {\n marginTop: 20,\n },\n });\n\ntype Props = WithStyles & {\n setFieldValue: (field: string, value: any, shouldValidate?: boolean | undefined) => void;\n className?: string;\n};\n\nconst DocumentationConfiguratorComponent: React.FunctionComponent = ({ classes, className, setFieldValue }) => {\n const [documents, setDocuments] = useState>([]);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [documentToRemoveIndex, setDocumentToRemoveIndex] = useState(-1);\n\n const { t } = useTranslator();\n\n const handleDocumentRemove = (index: number) => {\n setDocuments(\n documents.filter((document, i) => {\n return index !== i;\n })\n );\n };\n\n const handleDocumentNameChange = (index: number) => (value: string) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n name: value\n };\n }\n\n return document;\n })\n );\n };\n\n const handleDocumentFileChange = (index: number) => (value: File | null) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n specimen: value\n };\n }\n\n return document;\n })\n );\n };\n\n const handleRoleChange = (index: number) => (value: string) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n role: value\n };\n }\n\n return document;\n })\n );\n };\n\n const handleIsRequiredChange = (index: number) => (value: boolean) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n isRequired: value\n };\n }\n\n return document;\n })\n );\n };\n\n const handleIsForAllReviewsChange = (index: number) => (value: boolean) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n isForAllReviews: value\n };\n }\n\n return document;\n })\n );\n };\n \n const handleVisibleForRolesChange = (index: number) => (value: RoleEnum[]) => {\n setDocuments(\n documents.map((document, i) => {\n if (index === i) {\n return {\n ...document,\n visibleForRoles: value\n };\n }\n\n return document;\n })\n );\n }; \n\n useEffect(() => {\n setFieldValue('attachmentTemplates', documents);\n }, [documents, setFieldValue]);\n\n const handleAddDocumentClick = () => {\n setDocuments([\n ...documents,\n {\n name: '',\n role: RoleEnum.Author,\n specimen: null,\n isRequired: true,\n isForAllReviews: false,\n visibleForRoles: [\n RoleEnum.ScientificCouncilMember,\n RoleEnum.BoardMember,\n RoleEnum.CompetitionCommitteeMember,\n RoleEnum.CompetitionJuryMember\n ]\n },\n ])\n };\n\n const handleRemove = (index: number) => {\n setIsConfirmDialogOpen(true);\n setDocumentToRemoveIndex(index);\n };\n \n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && documentToRemoveIndex > -1 && handleDocumentRemove(documentToRemoveIndex);\n setDocumentToRemoveIndex(-1);\n })()\n };\n\n return (\n <>\n
\n \n {t('addDocument')}\n \n
\n {documents.length ? (\n documents.map((document, index: number) => (\n handleRemove(index)}\n onDocumentNameChange={handleDocumentNameChange(index)}\n onDocumentFileChange={handleDocumentFileChange(index)}\n onRoleChange={handleRoleChange(index)}\n onIsRequiredChange={handleIsRequiredChange(index)}\n onIsForAllReviewsChange={handleIsForAllReviewsChange(index)}\n onVisibleForRolesChange={handleVisibleForRolesChange(index)}\n />\n ))\n ) : (\n {t('noDocumentsAdded')}\n )}\n
\n
\n\n handleCloseConfirmationDialog(confirmed)}\n dialogTitle={t('confirmAttachmentTemplateDeletion')}\n />\n \n );\n};\n\nexport const DocumentationConfigurator = withStyles(styles)(DocumentationConfiguratorComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n backgroundColor: palette.error.light,\n color: palette.error.contrastText,\n padding: '10px 20px',\n borderRadius: custom.radius.r_0,\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & {\n error: string;\n show: boolean;\n className?: string;\n};\n\nconst FormErrorComponent: React.FunctionComponent = ({ classes, className, error, show }) => {\n return show ?
{error}
: null;\n};\n\nexport const FormError = withStyles(styles)(FormErrorComponent);\n","export enum CompetitionCategoryEnum {\n Invalid = 0, \n Project = 1,\n Person = 2\n}\n ","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n '&:not(:first-child)': {\n borderTop: `1px solid ${custom.gray.g_0}`,\n },\n },\n });\n\ntype Props = WithStyles & {};\n\nconst ListRowComponent: React.FunctionComponent = ({ classes, children }) => {\n return
{children}
;\n};\n\nexport const ListRow = withStyles(styles)(ListRowComponent);\n","export enum SubmissionStatusEnum {\n Invalid = 0,\n Draft = 1,\n New = 2,\n Review = 3,\n Rejected = 4,\n Won = 5,\n Closed = 6,\n Autosaved = 7\n}\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n flex: 1,\n padding: '20px 0',\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n fontSize: 18,\n color: custom.gray.g_4,\n },\n },\n pullRight: {\n justifyContent: 'flex-end',\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n pullRight?: boolean;\n};\n\nconst ListItemComponent: React.FunctionComponent = ({ classes, className, children, pullRight }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const ListItem = withStyles(styles)(ListItemComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n },\n });\n\ntype Props = WithStyles & {\n headerClassName?: string;\n};\n\nconst ListHeaderComponent: React.FunctionComponent = ({ headerClassName, classes, children }) => {\n return
{children}
;\n};\n\nexport const ListHeader = withStyles(styles)(ListHeaderComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n flex: 1,\n padding: '10px 0',\n color: custom.gray.g_2,\n },\n });\n\ntype Props = WithStyles;\n\nconst ListHeaderItemComponent: React.FunctionComponent = ({ classes, children }) => {\n return
{children}
;\n};\n\nexport const ListHeaderItem = withStyles(styles)(ListHeaderItemComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ListRow } from '../components/ListRow';\nimport { ListItem } from '../components/ListItem';\nimport { ListHeader } from '../components/ListHeader';\nimport { ListHeaderItem } from '../components/ListHeaderItem';\nimport { ListRow as ListRowType } from '../shared/types/ListRow';\n\nconst styles = () => createStyles({});\n\ntype ListHeaderItem = {\n key: string;\n text: string;\n pullRight?: boolean;\n};\n\ntype Props = WithStyles & {\n rows: Array;\n headerCells?: Array;\n className?: string;\n headerClassName?: string;\n};\n\nconst ListComponent: React.FunctionComponent = ({ rows, headerCells, className, headerClassName }) => {\n return (\n
\n \n {headerCells?.map((cell) => (\n {cell.text}\n ))}\n \n
\n {rows.map((row) => (\n \n {row.items.map((item) => {\n const headerCellConfig = headerCells?.find((cell) => cell.key === item.key);\n\n return (\n \n {item.content}\n \n );\n })}\n \n ))}\n
\n
\n );\n};\n\nexport const List = withStyles(styles)(ListComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Tooltip, Theme } from '@material-ui/core';\n\nimport { Link } from './Link';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n '& a': {\n color: custom.gray.g_4,\n '&:hover': {\n color: palette.primary.main,\n },\n },\n },\n });\n\ntype Props = WithStyles & {\n to: string;\n title: string;\n listData?: string;\n className?: string;\n onClick?: (value: any) => void;\n};\n\nconst ListActionComponent: React.FunctionComponent = ({\n classes,\n children,\n ...props\n}) => {\n return (\n \n
\n {props.onClick ? (\n props.onClick? props.onClick(props.listData): {}}\n to={'#'}\n >\n {children}\n \n ) : (\n \n {children}\n \n )}\n
\n
\n );\n};\n\nexport const ListAction = withStyles(styles)(ListActionComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { BoxHeader } from './BoxHeader';\nimport { Autocomplete } from './inputs/Autocomplete';\nimport { User } from '../shared/types/User';\nimport { TextField } from './inputs/TextField';\nimport { FormError } from './FormError';\nimport { ErrorService } from '../services/Error.service';\nimport { UserService } from '../services/User.service';\nimport { CompetitionService } from '../services/Competition.service';\nimport { List } from './List';\nimport { ListAction } from './ListAction';\nimport { DeleteOutlined } from '@material-ui/icons';\nimport { red } from '@material-ui/core/colors';\nimport { Button } from './Button';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nconst styles = () =>\n createStyles({\n competitionCoordinatorsListWrapper: {\n margin: '15px 10px'\n },\n competitionCoordinatorsList: {\n fontSize: '1rem',\n padding: 10,\n maxWidth: 250\n },\n iconDelete: {\n fontSize: 20,\n color: red[500],\n marginLeft: 5\n },\n saveButton: {\n alignSelf: 'flex-end',\n }\n });\n\ntype Props = WithStyles & \nRouteComponentProps & {\n competitionId?: string;\n setFieldValue?: (field: string, value: any, shouldValidate?: boolean | undefined) => void;\n isUpdate: boolean;\n};\n\nconst CompetitionCoordinatorsSelectorComponent: React.FunctionComponent = ({ \n competitionId,\n classes,\n setFieldValue,\n isUpdate,\n history\n}) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [availableCompetitionCoordinators, setAvailableCompetitionCoordinators] = useState>([]);\n const [selectedCompetitionCoordinators, setSelectedCompetitionCoordinators] = useState>([]);\n const [competitionCoordinatorsToSave, setCompetitionCoordinatorsToSave] = useState>([]);\n const { role, userId } = useSelector((state: RootState) => state.user);\n const { t } = useTranslator();\n\n useEffect(() => {\n fetchCompetitionCoordinators();\n }, []);\n\n useEffect(() => {\n setFieldValue && setFieldValue('competitionCoordinatorUserIds', competitionCoordinatorsToSave.map(user => user.userId));\n }, [competitionCoordinatorsToSave, setFieldValue]);\n\n const fetchCompetitionCoordinators = () => {\n (async () => {\n setServerError('');\n \n try {\n const { data: { result } } = await UserService.getCompetitionCoordinators();\n let availableCoordinators = result;\n setAvailableCompetitionCoordinators(availableCoordinators);\n \n if (competitionId){\n const { data: { result } } = await CompetitionService.getCompetitionCoordinators(competitionId);\n let selectedCoordinators = result;\n setSelectedCompetitionCoordinators(selectedCoordinators);\n \n availableCoordinators = availableCoordinators.filter(user => \n !selectedCoordinators.find(selectedUser => selectedUser.userId === user.userId)\n );\n setAvailableCompetitionCoordinators(availableCoordinators);\n }\n \n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n \n const deleteCompetitionCoordinator = (userIdToDelete: string) => {\n (async () => {\n setServerError('');\n\n try {\n if (competitionId){\n await CompetitionService.deleteCompetitionCoordinator(competitionId, userIdToDelete);\n\n if (userId === userIdToDelete) {\n history.push('/competition-coordinator/competitions');\n return;\n }\n\n fetchCompetitionCoordinators();\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n \n const mapRowsToCoordinatorListRows = () =>\n selectedCompetitionCoordinators.map((competitionCoordinator) => ({\n id: competitionCoordinator.userId,\n items: [{\n key: 'fullName',\n content: `${competitionCoordinator.firstName} ${competitionCoordinator.lastName}`\n }, {\n key: 'action',\n content:\n deleteCompetitionCoordinator(competitionCoordinator.userId)}\n >\n \n \n }],\n }));\n \n const handleSave = async () => {\n setLoading(true);\n setServerError('');\n \n try {\n if (competitionId) {\n await CompetitionService.addCompetitionCoordinators(competitionId, competitionCoordinatorsToSave.map(user => user.userId));\n } \n\n setCompetitionCoordinatorsToSave([]);\n fetchCompetitionCoordinators();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n \n setLoading(false);\n };\n\n return (\n <>\n \n `${option.firstName} ${option.lastName}`}\n renderOption={(option) => (\n \n {option.firstName} {option.lastName}\n \n )}\n renderInput={(params) => }\n value={competitionCoordinatorsToSave}\n onChange={(_, value) => setCompetitionCoordinatorsToSave(value)}\n />\n\n \n
\n {selectedCompetitionCoordinators.length ? (\n \n ) : (\n isUpdate && \n \n {t('noCompetitionCoordinatorsSelected')}\n \n )}\n
\n\n {isUpdate && (\n \n {t('save')}\n \n )}\n\n \n \n );\n};\n\nexport const CompetitionCoordinatorsSelector = withStyles(styles)(withRouter(CompetitionCoordinatorsSelectorComponent));\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\nimport moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { Form } from '../Form';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { FieldSelect } from '../form-fields/FieldSelect';\nimport { CompetitionService } from '../../services/Competition.service';\nimport { competitionStartDate, competitionEndDate, competitionName, requiredConsent, billingMethod } from '../../shared/validators';\nimport { BoxHeader } from '../BoxHeader';\nimport { DocumentationConfigurator } from '../DocumentationConfigurator';\nimport { CompetitionFormData } from '../../shared/types/CompetitionFormData';\nimport { CompetitionTypeEnum } from '../../shared/enums/CompetitionTypeEnum';\nimport { Competition } from '../../shared/types/Competition';\nimport { ErrorService } from '../../services/Error.service';\nimport { FormError } from '../FormError';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../store/rootReducer';\nimport { CompetitionCategoryEnum } from '../../shared/enums/CompetitionCategoryEnum';\nimport { CompetitionCoordinatorsSelector } from '../CompetitionCoordinatorsSelector';\nimport { BillingMethodEnum } from '../../shared/enums/BillingMethodEnum';\nimport { AttachmentTemplate } from '../../shared/types/AttachmentTemplate';\n\nconst styles = () =>\n createStyles({\n documentationConfigurator: {\n marginBottom: 20,\n },\n saveButton: {\n alignSelf: 'flex-end',\n },\n alert: {\n marginBottom: 20\n }\n });\n\ntype Props = WithStyles &\n RouteComponentProps & {\n isCompetitionEdit?: boolean;\n initValues?: Competition;\n competitionId?: Competition['id'];\n attachmentTemplates?: Array;\n setBillingMethod?: (billingMethod: BillingMethodEnum) => void;\n };\n\nconst CompetitionFormComponent: React.FunctionComponent = ({\n classes,\n competitionId,\n history,\n initValues,\n isCompetitionEdit,\n attachmentTemplates,\n setBillingMethod\n}) => {\n const [savedCompetitionId, setSavedCompetitionId] = useState('');\n const [serverError, setServerError] = useState('');\n const [competitionCategory, setCompetitionCategory] = useState(CompetitionCategoryEnum.Project);\n const [hasDocumentForAllReviews, setHasDocumentForAllReviews] = useState();\n let setFormFieldValue: (field: string, value: any, shouldValidate?: boolean) => void;\n \n const { t } = useTranslator();\n\n useEffect(() => {\n if (isCompetitionEdit) return;\n\n if (competitionCategory === CompetitionCategoryEnum.Person) {\n setFormFieldValue && setFormFieldValue('requiredConsent', t('defaultRequiredConsent'));\n }\n else if (competitionCategory === CompetitionCategoryEnum.Project) {\n setFormFieldValue && setFormFieldValue('requiredConsent', '');\n }\n }, [competitionCategory])\n\n const { role } = useSelector((state: RootState) => state.user);\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const initialValues: CompetitionFormData = {\n name: initValues ? initValues.name : '',\n edition: initValues ? initValues.edition : '',\n startDate: initValues ? moment(initValues.startDate).format('YYYY-MM-DD') : '',\n endDate: initValues ? moment(initValues.endDate).format('YYYY-MM-DD') : '',\n type: initValues ? initValues.type : CompetitionTypeEnum.ResearchProjectCompetition,\n category: initValues ? initValues.category : competitionCategory,\n billingMethod: initValues ? initValues.billingMethod : BillingMethodEnum.PerReview,\n isActive: initValues ? initValues.isActive : true,\n attachmentTemplates: [],\n requiredConsent: initValues ? initValues.requiredConsent : '',\n competitionCoordinatorUserIds: []\n };\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n startDate: competitionStartDate(t),\n endDate: competitionEndDate(t),\n name: competitionName(t),\n requiredConsent: requiredConsent(t, competitionCategory === CompetitionCategoryEnum.Person),\n billingMethod: billingMethod(t, Boolean(hasDocumentForAllReviews))\n });\n\n const saveAttachments = async (competitionId: Competition['id'], attachmentTemplates: Array) => {\n const promises = [];\n\n for (const file of attachmentTemplates.filter((a) => a.name)) {\n const formData = new FormData();\n\n formData.append('name', file.name);\n formData.append('role', file.role);\n formData.append('isRequired', file.isRequired);\n formData.append('isForAllReviews', file.isForAllReviews.toString());\n \n file.visibleForRoles.forEach((r: RoleEnum) => formData.append('visibilityRoles', r));\n\n if (file.specimen) {\n formData.append('specimenFile', file.specimen);\n }\n\n promises.push(CompetitionService.addFile(competitionId, formData));\n }\n\n return Promise.all(promises);\n };\n\n const handleSubmit = async (values: CompetitionFormData, { setSubmitting }: FormikHelpers) => {\n setSubmitting(true);\n setServerError('');\n\n try {\n if (savedCompetitionId) {\n if (values.attachmentTemplates) {\n await saveAttachments(savedCompetitionId, values.attachmentTemplates);\n }\n\n if (values.competitionCoordinatorUserIds) {\n await CompetitionService.addCompetitionCoordinators(savedCompetitionId, values.competitionCoordinatorUserIds);\n }\n\n history.push(`/${path}/competitions`);\n\n return;\n }\n\n if (competitionId) {\n await CompetitionService.update(competitionId, values);\n } else {\n const newCompetitionId = uuidv4();\n const { attachmentTemplates, competitionCoordinatorUserIds, ...data } = values;\n\n await CompetitionService.add({ id: newCompetitionId, ...data });\n\n setSavedCompetitionId(newCompetitionId);\n\n if (attachmentTemplates) {\n await saveAttachments(newCompetitionId, attachmentTemplates);\n }\n\n if (competitionCoordinatorUserIds) {\n await CompetitionService.addCompetitionCoordinators(newCompetitionId, competitionCoordinatorUserIds);\n }\n }\n\n history.push(`/${path}/competitions`);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSubmitting(false);\n };\n\n const updateHasDocumentForAllReviews = (formAttachmentTemplates?: Competition['attachmentTemplates']) => {\n const hasDocumentForAllReviews = formAttachmentTemplates?.some(template => template.isForAllReviews) ||\n attachmentTemplates?.some(template => template.isForAllReviews);\n setHasDocumentForAllReviews(hasDocumentForAllReviews);\n };\n\n return (\n
\n {({ dirty, isSubmitting, setFieldValue, values }) => {\n setFormFieldValue = setFieldValue;\n setCompetitionCategory(values.category);\n setBillingMethod && setBillingMethod(values.billingMethod);\n updateHasDocumentForAllReviews(values.attachmentTemplates)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n {values.category === CompetitionCategoryEnum.Person && (\n \n )}\n\n \n\n \n\n {!isCompetitionEdit && (\n )}\n \n {!isCompetitionEdit && (\n <>\n \n \n \n )}\n\n \n\n \n \n );\n }}\n
\n );\n};\n\nexport const CompetitionForm = withStyles(styles)(withRouter(CompetitionFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { CompetitionForm } from '../../forms/CompetitionForm';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminAddCompetitionScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n \n \n
\n );\n};\n\nexport const AdminAddCompetitionScreen = withStyles(styles)(AdminAddCompetitionScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid, FormControlLabel, Checkbox } from '@material-ui/core';\n\nimport { TextField } from './inputs/TextField';\nimport { FileInput } from './inputs/FileInput';\nimport { Button } from './Button';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Select } from './inputs/Select';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { Autocomplete } from './inputs/Autocomplete';\nimport { BillingMethodEnum } from '../shared/enums/BillingMethodEnum';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\n\nconst styles = () =>\n createStyles({\n newDocumentRow: {\n marginTop: 20,\n },\n newDocumentRowButtons: {\n marginTop: 10,\n },\n newDocumentRowCancelButton: {\n marginLeft: 5,\n },\n checkboxWrapper: {\n border: '1px solid rgba(0, 0, 0, 0.23)',\n borderRadius: 4,\n padding: '7px 10.5px'\n },\n checkbox: {\n padding: '0 7px 0 0'\n },\n checkboxFormControlLabel: {\n margin: 0\n }\n });\n\ntype Props = WithStyles & {\n billingMethod?: BillingMethodEnum;\n addFileServiceHandler: (file: FormData) => Promise;\n onNewFileAdded: () => void;\n};\n\nconst AddNewAttachmentTemplateComponent: React.FunctionComponent = ({ \n classes,\n billingMethod,\n onNewFileAdded,\n addFileServiceHandler\n}) => {\n const defaultVisibilityRoles: RoleEnum[] = [\n RoleEnum.ScientificCouncilMember,\n RoleEnum.BoardMember,\n RoleEnum.CompetitionCommitteeMember,\n RoleEnum.CompetitionJuryMember\n ];\n\n const defaultAttachmentTemplate: AttachmentTemplate = {\n id: '',\n name: '',\n role: RoleEnum.Author,\n isRequired: true,\n specimen: null,\n visibilityRoles: defaultVisibilityRoles,\n isForAllReviews: false\n };\n\n const [isAddingNewDocument, setIsAddingNewDocument] = useState(false);\n const [savingNewDocumentFile, setSavingDocumentFile] = useState(false);\n const [newAttachmentTemplate, setNewAttachmentTemplate] = useState(defaultAttachmentTemplate);\n\n const { t } = useTranslator();\n\n useEffect(() => {\n if (billingMethod === BillingMethodEnum.PerCompetition) {\n return;\n }\n\n setNewAttachmentTemplate({\n ...newAttachmentTemplate,\n isForAllReviews: false\n })\n }, [billingMethod])\n\n const handleAddNewDocument = async () => {\n setSavingDocumentFile(true);\n\n const formData = new FormData();\n\n formData.append('name', newAttachmentTemplate.name);\n formData.append('role', newAttachmentTemplate.role!);\n formData.append('isRequired', newAttachmentTemplate.isRequired!.toString());\n formData.append('isForAllReviews', newAttachmentTemplate.isForAllReviews.toString());\n\n newAttachmentTemplate.visibilityRoles.forEach(r => formData.append('visibilityRoles', r));\n\n if (newAttachmentTemplate.specimen) {\n formData.append('specimenFile', newAttachmentTemplate.specimen);\n }\n\n await addFileServiceHandler(formData);\n\n setSavingDocumentFile(false);\n setIsAddingNewDocument(false);\n setNewAttachmentTemplate(defaultAttachmentTemplate);\n\n onNewFileAdded();\n };\n\n const handleCancelAddNewDocument = () => {\n setNewAttachmentTemplate(defaultAttachmentTemplate);\n setIsAddingNewDocument(false);\n };\n\n const handleVisibilityRolesChange = async (event: React.ChangeEvent<{}>, value: Array) => {\n setNewAttachmentTemplate({\n ...newAttachmentTemplate,\n visibilityRoles: value\n });\n };\n\n return isAddingNewDocument ? (\n
\n \n \n \n ) => setNewAttachmentTemplate({ ...newAttachmentTemplate, name: e.target.value })}\n />\n \n \n \n setNewAttachmentTemplate({ ...newAttachmentTemplate, specimen: value })}\n />\n \n \n ) => setNewAttachmentTemplate({ ...newAttachmentTemplate, role: e.target.value })}\n />\n \n \n ) => setNewAttachmentTemplate({ ...newAttachmentTemplate, isRequired: e.target.value })}\n /> \n \n \n {billingMethod === BillingMethodEnum.PerCompetition &&\n newAttachmentTemplate.role === RoleEnum.Reviewer && (\n \n
\n setNewAttachmentTemplate({ ...newAttachmentTemplate, isForAllReviews: e.target.checked })}\n className={classes.checkbox}\n />}\n label={t('documentForAllReviews')} \n />\n
\n
\n )}\n
\n \n `${t(option)}`}\n renderOption={(option) => (\n \n {t(option)}\n \n )}\n renderInput={(params) => }\n value={newAttachmentTemplate.visibilityRoles}\n onChange={handleVisibilityRolesChange}\n /> \n \n\n \n
\n
\n \n \n
\n
\n ) : (\n \n );\n};\n\nexport const AddNewAttachmentTemplate = withStyles(styles)(AddNewAttachmentTemplateComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\nimport Color from 'color';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 0.4,\n padding: '2px 5px',\n borderRadius: custom.radius.r_0,\n },\n });\n\ntype Props = WithStyles & {\n color?: string;\n className?: string;\n};\n\nconst BadgeComponent: React.FunctionComponent = ({ children, classes, className, color }) => {\n return (\n
\n {children}\n
\n );\n};\n\nexport const Badge = withStyles(styles)(BadgeComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { Badge } from './Badge';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n width: 'fit-content'\n },\n });\n\ntype Props = WithStyles & {\n role?: RoleEnum;\n className?: string;\n};\n\nconst RoleBadgeComponent: React.FunctionComponent = ({ classes, className, role }) => {\n const { t } = useTranslator();\n\n const getColor = () => {\n switch (role) {\n case RoleEnum.Author:\n return '#350bb5';\n case RoleEnum.Reviewer:\n return '#0d709e';\n default:\n return '#350bb5';\n }\n };\n\n const getText = () => {\n switch (role) {\n case RoleEnum.Author:\n return 'authorDocument';\n case RoleEnum.Reviewer:\n return 'reviewerDocument';\n default:\n return 'authorDocument';\n }\n };\n\n return (\n \n {t(getText())}\n \n );\n};\n\nexport const RoleBadge = withStyles(styles)(RoleBadgeComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { Badge } from './Badge';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n width: 'fit-content',\n 'background-color': '#4bb3fd59 !important',\n color: '#00487C !important'\n },\n });\n\ntype Props = WithStyles & {\n roles: Array;\n className?: string;\n};\n\nconst RoleVisibilityBadgeComponent: React.FunctionComponent = ({ classes, className, roles }) => {\n const { t } = useTranslator();\n\n return (\n roles.length ?\n \n {t('visibleForRoles')}: {roles.map(r => t(r)).join(', ')}\n : null\n );\n};\n\nexport const RoleVisibilityBadge = withStyles(styles)(RoleVisibilityBadgeComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { Badge } from './Badge';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n width: 'fit-content',\n fontWeight: 600\n },\n});\n\ntype Props = WithStyles & {\n role?: RoleEnum;\n className?: string;\n};\n\nconst DocumentForAllReviewsBadgeComponent: React.FunctionComponent = ({ classes, className, role }) => {\n const { t } = useTranslator();\n\n return (\n \n {t('documentForAllReviews')}\n \n );\n};\n\nexport const DocumentForAllReviewsBadge = withStyles(styles)(DocumentForAllReviewsBadgeComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\n\nimport { BoxHeader } from './BoxHeader';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Button } from './Button';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\nimport { AddNewAttachmentTemplate } from './AddNewAttachmentTemplate';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { API_URL } from '../services/Api.service';\nimport { RoleBadge } from './RoleBadge';\nimport { RoleVisibilityBadge } from './RoleVisibilityBadge';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport { BillingMethodEnum } from '../shared/enums/BillingMethodEnum';\nimport { DocumentForAllReviewsBadge } from './DocumentForAllReviewsBadge';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n marginTop: 20,\n },\n template: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: 20,\n paddingBottom: 20,\n '&:not(:first-child)': {\n borderTop: `1px solid ${custom.gray.g_0}`,\n },\n },\n documentName: {\n fontSize: 16,\n fontWeight: 600,\n },\n buttons: {\n display: 'flex',\n flexDirection: 'column',\n },\n downloadTemplateButton: {\n marginBottom: 5,\n },\n attachmentTemplates: {},\n badge: {\n marginTop: 5,\n },\n asterisk: {\n 'font-size': '0.66em',\n margin: '0 0 0 5px',\n position: 'absolute'\n },\n alert: {\n marginBottom: 20\n }\n });\n\ntype Props = WithStyles & {\n attachmentTemplates: Array;\n billingMethod?: BillingMethodEnum;\n addFileServiceHandler: (file: FormData) => Promise;\n deleteFileServiceHandler: (template: AttachmentTemplate) => Promise;\n onNewFileAdded: () => void;\n onFileDeleted: () => void;\n};\n\nconst DocumentationEditComponent: React.FunctionComponent = ({\n classes,\n attachmentTemplates,\n billingMethod,\n onNewFileAdded,\n addFileServiceHandler,\n onFileDeleted,\n deleteFileServiceHandler\n}) => {\n const [deletingTemplateId, setDeletingTemplateId] = useState('');\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [templateToDelete, setTemplateToDelete] = useState();\n const { t } = useTranslator();\n\n const { role } = useSelector((state: RootState) => state.user);\n\n const handleDownloadTemplate = (templateId: string) => () => {\n window.open(`${API_URL}/AttachmentSpecimen/${templateId}`);\n };\n\n const handleDeleteTemplateClick = (template: AttachmentTemplate) => {\n setIsConfirmDialogOpen(true);\n setTemplateToDelete(template);\n };\n\n const deleteAttachmentTemplate = async () => {\n if (!templateToDelete) {\n return;\n }\n setDeletingTemplateId(templateToDelete.id);\n await deleteFileServiceHandler(templateToDelete);\n onFileDeleted();\n };\n \n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && await deleteAttachmentTemplate();\n setTemplateToDelete(undefined);\n })()\n };\n\n return (\n
\n \n \n\n
\n {attachmentTemplates.map((template) => (\n
\n
\n
{template.name} {template.isRequired ? t('documentRequiredInfo') : ''}
\n {role === RoleEnum.Author || role === RoleEnum.Reviewer ? null : (\n \n )}\n {template.isForAllReviews &&\n }\n \n
\n
\n {template.specimenFileName ? (\n \n ) : null}\n handleDeleteTemplateClick(template)}\n >\n {t('deleteDocument')}\n \n
\n
\n ))}\n
\n\n handleCloseConfirmationDialog(confirmed)}\n dialogTitle={t('confirmAttachmentTemplateDeletion')}\n />\n
\n );\n};\n\nexport const DocumentationEdit = withStyles(styles)(DocumentationEditComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport sortBy from 'lodash/sortBy';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { CompetitionForm } from '../../forms/CompetitionForm';\nimport { Competition } from '../../../shared/types/Competition';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { DocumentationEdit } from '../../DocumentationEdit';\nimport { AttachmentTemplate } from '../../../shared/types/AttachmentTemplate';\nimport { CompetitionCoordinatorsSelector } from '../../CompetitionCoordinatorsSelector';\nimport { BillingMethodEnum } from '../../../shared/enums/BillingMethodEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AdminCompetitionDetailsScreenComponent: React.FunctionComponent = ({ match }) => {\n const [competition, setCompetition] = useState();\n const [attachmentTemplates, setAttachmentTemplates] = useState>([]);\n const [billingMethod, setBillingMethod] = useState(BillingMethodEnum.PerReview);\n \n const { t } = useTranslator();\n\n const fetchCompetition = () => {\n (async () => {\n const {\n data: { result },\n } = await CompetitionService.getOne(match.params.id);\n\n setCompetition(result);\n })();\n };\n\n const fetchAttachmentTemplates = () => {\n (async () => {\n const {\n data: { result },\n } = await CompetitionService.getAttachmentTemplates(match.params.id);\n\n setAttachmentTemplates(sortBy(result, 'role'));\n })();\n };\n\n const addFileServiceHandler = async (file: FormData) => {\n if (competition?.id) {\n await CompetitionService.addFile(competition?.id, file);\n }\n };\n\n const deleteFileServiceHandler = async (template: AttachmentTemplate) => {\n if (template?.id) {\n await CompetitionService.deleteAttachmentTemplate(template.id);\n }\n };\n\n const init = () => {\n fetchCompetition();\n fetchAttachmentTemplates();\n };\n\n useEffect(init, []);\n\n return competition ? (\n
\n \n \n \n \n \n \n \n \n \n \n
\n ) : null;\n};\n\nexport const AdminCompetitionDetailsScreen = withStyles(styles)(AdminCompetitionDetailsScreenComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { email, reviewerSpecialization, name, surname, scienceUnit, phone } from '../../shared/validators';\nimport { FieldSelect } from '../form-fields/FieldSelect';\nimport { UserService } from '../../services/User.service';\nimport { UserFormData } from '../../shared/types/UserFormData';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\nconst styles = () =>\n createStyles({\n saveButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype FormValues = UserFormData;\n\ntype Props = WithStyles &\n RouteComponentProps & {\n userId?: string;\n initValues?: FormValues;\n };\n\nconst UserFormComponent: React.FunctionComponent = ({ classes, history, initValues, userId }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n firstName: name(t),\n lastName: surname(t),\n scientificFacility: scienceUnit(t),\n phoneNumber: phone(t),\n email: email(t),\n specialty: reviewerSpecialization(t),\n });\n\n const initialValues = initValues || {\n firstName: '',\n lastName: '',\n phoneNumber: '',\n scientificFacility: '',\n email: '',\n role: RoleEnum.Author,\n specialty: '',\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setServerError('');\n setSubmitting(true);\n\n try {\n if (userId) {\n await UserService.update(userId, values);\n } else {\n await UserService.add(values);\n }\n\n history.push('/admin/users');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ values, dirty, isValid, isSubmitting }) => (\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n {values.role === RoleEnum.Author || values.role === RoleEnum.Reviewer ? (\n \n ) : null}\n {values.role === RoleEnum.Reviewer ? : null}\n\n \n\n \n \n )}\n
\n );\n};\n\nexport const UserForm = withStyles(styles)(withRouter(UserFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n backgroundColor: palette.success.light,\n color: palette.success.contrastText,\n padding: '10px 20px',\n borderRadius: custom.radius.r_0,\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & {\n message: string;\n show: boolean;\n className?: string;\n};\n\nconst FormSuccessComponent: React.FunctionComponent = ({ classes, className, message, show }) => {\n return show ?
{message}
: null;\n};\n\nexport const FormSuccess = withStyles(styles)(FormSuccessComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { UserForm } from '../../forms/UserForm';\nimport { Box } from '../../Box';\nimport { UserService } from '../../../services/User.service';\nimport { User } from '../../../shared/types/User';\nimport { BoxHeader } from '../../BoxHeader';\nimport { Button } from '../../Button';\nimport { ErrorService } from '../../../services/Error.service';\nimport { FormError } from '../../FormError';\nimport { FormSuccess } from '../../FormSuccess';\n\nconst styles = () =>\n createStyles({\n resetPasswordError: {\n marginTop: 10,\n marginBottom: 0,\n },\n resetPasswordSuccess: {\n marginTop: 10,\n marginBottom: 0,\n },\n button: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AdminUserDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [user, setUser] = useState();\n const [resetPasswordError, setResetPasswordError] = useState('');\n const [resetPasswordLoading, setResetPasswordLoading] = useState(false);\n const [resetPasswordSuccess, setResetPasswordSuccess] = useState('');\n\n const { t } = useTranslator();\n\n const fetchUser = () => {\n (async () => {\n const {\n data: { result },\n } = await UserService.getOne(match.params.id);\n\n setUser(result);\n })();\n };\n\n const resetUserPassword = async () => {\n setResetPasswordError('');\n setResetPasswordSuccess('');\n setResetPasswordLoading(true);\n\n try {\n if (!user || user.userId === undefined) {\n throw new Error('User ID not passed');\n }\n\n await UserService.resetPassword(user.userId);\n\n setResetPasswordSuccess('passwordResetSuccess');\n } catch (error) {\n setResetPasswordError(ErrorService.parseError(error));\n }\n\n setResetPasswordLoading(false);\n };\n\n useEffect(fetchUser, []);\n\n return (\n
\n \n \n \n \n \n {user ? : null}\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport const AdminUserDetailsScreen = withStyles(styles)(withRouter(AdminUserDetailsScreenComponent));\n","import { ApiService } from './Api.service';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { Submission } from '../shared/types/Submission';\nimport { User } from '../shared/types/User';\nimport { SubmissionStage } from '../shared/types/SubmissionStage';\nimport { SubmissionStageFormData } from '../shared/types/SubmissionStageFormData';\nimport { SubmissionStageReviewer } from '../shared/types/SubmissionStageReviewer';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { SuggestedReviewer } from '../shared/types/SuggestedReviewer';\n\nexport const StageService = {\n resource: 'Stage',\n\n getStages: (submissionId: Submission['id']) => {\n return ApiService.get>>(`${StageService.resource}?submissionId=${submissionId}`, { withCredentials: true });\n },\n\n getStageReviewers: (stageId: string) => {\n return ApiService.get>>(`${StageService.resource}/${stageId}/reviewers`, { withCredentials: true });\n },\n\n getAvailableStageReviewers: (stageId: string) => {\n return ApiService.get>>(`${StageService.resource}/${stageId}/reviewers/available`, { withCredentials: true });\n },\n\n getStage: (stageId: string) => {\n return ApiService.get>(`${StageService.resource}/${stageId}`, { withCredentials: true });\n },\n\n getActiveStage: (submissionId: Submission['id']) => {\n return ApiService.get>(`${StageService.resource}/active?submissionId=${submissionId}`, { withCredentials: true });\n },\n\n addStage: (data: SubmissionStageFormData) => {\n return ApiService.post(`${StageService.resource}`, data, { withCredentials: true } );\n },\n\n addStageReviewer: (stageId: string, data: SubmissionStageReviewer) => {\n return ApiService.post(`${StageService.resource}/${stageId}/reviewers`, data, { withCredentials: true } );\n },\n\n deleteStageReviewer: (stageId: SubmissionStage['id'], userId: User['userId']) => {\n return ApiService.delete(`${StageService.resource}/${stageId}/reviewers?userId=${userId}`, { withCredentials: true } );\n },\n\n updateStage: (submissionId: Submission['id'], stageId: SubmissionStage['id'], data: SubmissionStageFormData) => {\n return ApiService.put(`${StageService.resource}/${stageId}?submissionId=${submissionId}`, data, { withCredentials: true });\n },\n\n addTemplateFile: (stageId: SubmissionStage['id'], data: FormData) => {\n return ApiService.post(`${StageService.resource}/${stageId}/attachment-templates`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n\n addFile: (stageId: SubmissionStage['id'], data: FormData) => {\n return ApiService.post(`${StageService.resource}/${stageId}/attachments`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n\n removeFile: (id: string) => {\n return ApiService.delete(`${StageService.resource}/attachments/${id}`, {\n withCredentials: true,\n });\n },\n\n updateFile: (id: string, data: FormData) => {\n return ApiService.put(`${StageService.resource}/attachments/${id}`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n\n submitAttachments: (stageId: string) => {\n return ApiService.put(`${StageService.resource}/attachments/${stageId}/submit`, {}, {\n withCredentials: true\n });\n },\n\n getAttachmentTemplates: (stageId: SubmissionStage['id']) => {\n return ApiService.get>>(`${StageService.resource}/${stageId}/attachment-templates`, {\n withCredentials: true,\n });\n },\n\n getStageAttachmentsForRole: (id: SubmissionStage['id'], role: RoleEnum) => {\n return ApiService.get>>(`${StageService.resource}/attachments/${id}?role=${role}`, {\n withCredentials: true,\n });\n },\n\n deleteAttachmentTemplate: (attachmentTemplateId: AttachmentTemplate['id']) => {\n return ApiService.delete(`${StageService.resource}/attachment-templates/${attachmentTemplateId}`, {\n withCredentials: true,\n });\n },\n\n addSuggestedReviewer: (stageId: SubmissionStage['id'], userId: User['userId']) => {\n return ApiService.post(\n `${StageService.resource}/${stageId}/reviewers/suggested?userId=${userId}`,\n {},\n { withCredentials: true }\n );\n },\n acceptSuggestedReviewer: (stageId: SubmissionStage['id'], userId: User['userId']) => {\n return ApiService.post(\n `${StageService.resource}/${stageId}/reviewers/accept?userId=${userId}`,\n {},\n { withCredentials: true }\n );\n },\n getAvailableSuggestedReviewers: (stageId: SubmissionStage['id']) => {\n return ApiService.get>>(`${StageService.resource}/${stageId}/reviewers/suggested/available/`, { withCredentials: true });\n },\n removeSuggestedReviewer: (stageId: string, userId: string) => {\n return ApiService.delete(`${StageService.resource}/${stageId}/reviewers/suggested?userId=${userId}`, \n { withCredentials: true });\n },\n getSuggestedReviewers: (stageId: SubmissionStage['id']) => {\n return ApiService.get>>(`${StageService.resource}/${stageId}/reviewers/suggested`, \n { withCredentials: true });\n },\n canReviewStage: (id: SubmissionStage['id'], userId: User['userId']) => {\n return ApiService.get>(`${StageService.resource}/${id}/canReview?userId=${userId}`, {\n withCredentials: true\n });\n },\n};","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { v4 as uuidv4 } from 'uuid';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { FieldSelect } from '../form-fields/FieldSelect';\nimport { StageService } from '../../services/Stage.service';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { SubmissionStageFormData } from '../../shared/types/SubmissionStageFormData';\nimport { BoxHeader } from '../BoxHeader';\nimport { DocumentationConfigurator } from '../DocumentationConfigurator';\nimport { stageName } from '../../shared/validators';\nimport { SubmissionStage } from '../../shared/types/SubmissionStage';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\nconst styles = () =>\n createStyles({\n saveButton: {\n alignSelf: 'flex-end',\n },\n stageActivationError: {\n marginTop: 10,\n marginBottom: 10\n },\n documentationConfigurator: {\n marginBottom: 20\n }\n });\n\ntype Props = WithStyles &\n RouteComponentProps & {\n hideDocumentation? : boolean;\n submissionId: string;\n stageId?: string;\n initValues?: SubmissionStageFormData;\n activeStageName?: string;\n };\n\nconst StageFormComponent: React.FunctionComponent = ({ classes, history, stageId, activeStageName, submissionId, initValues, hideDocumentation}) => {\n const [serverErrorMessage, setServerErrorMessage] = useState('');\n const [stageActivationError, setStageActivationError] = useState(false);\n\n const { t } = useTranslator();\n\n const { role } = useSelector((state: RootState) => state.user);\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n name: stageName(t),\n });\n\n const initialValues = initValues || {\n name: '',\n isActive: false,\n submissionId: submissionId,\n attachmentTemplates: []\n };\n\n const saveAttachments = async (stageId: SubmissionStage['id'], attachmentTemplates: Array) => {\n const promises = [];\n\n for (const file of attachmentTemplates.filter((a) => a.name)) {\n const formData = new FormData();\n\n formData.append('name', file.name);\n formData.append('role', file.role);\n formData.append('isRequired', file.isRequired);\n\n file.visibleForRoles.forEach((r: RoleEnum) => formData.append('visibilityRoles', r));\n\n if (file.specimen) {\n formData.append('specimenFile', file.specimen);\n }\n\n promises.push(StageService.addTemplateFile(stageId, formData));\n }\n\n return Promise.all(promises);\n };\n\n const handleSubmit = async (values: SubmissionStageFormData, { setSubmitting }: FormikHelpers) => {\n setServerErrorMessage('');\n setStageActivationError(false);\n setSubmitting(true);\n\n try {\n if (stageId) {\n await StageService.updateStage(submissionId, stageId, values);\n if (values.attachmentTemplates) {\n await saveAttachments(stageId, values.attachmentTemplates);\n }\n\n } else {\n const newStageId = uuidv4();\n const { attachmentTemplates, ...data } = values;\n\n await StageService.addStage({ id: newStageId, ...data });\n if (values.attachmentTemplates) {\n await saveAttachments(newStageId, values.attachmentTemplates);\n }\n }\n\n history.push(`/${path}/submissions/${submissionId}`);\n } catch (error) {\n if (ErrorService.parseStatusCode(error) === 409) {\n setStageActivationError(true);\n } else {\n setServerErrorMessage(ErrorService.parseError(error));\n }\n }\n setSubmitting(false);\n };\n\n return (\n
\n {({ dirty, isSubmitting, setFieldValue}) => (\n \n \n \n\n {!hideDocumentation ? (\n <>\n \n \n \n ) : null}\n\n \n {stageId ? \n :\n }\n {stageId ? t('save') : t('addStage')}\n \n \n )}\n
\n );\n};\n\nexport const StageForm = withStyles(styles)(withRouter(StageFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { ChevronLeft } from '@material-ui/icons';\n\nimport { Link } from './Link';\n\nconst styles = () =>\n createStyles({\n root: {\n marginBottom: 20,\n },\n backLink: {\n display: 'inline-flex',\n alignItems: 'center',\n },\n backIcon: {\n fontSize: 18,\n marginRight: 5,\n },\n });\n\ntype Props = WithStyles & {\n backLink: {\n to: string;\n title: string;\n };\n};\n\nconst ScreenToolbarComponent: React.FunctionComponent = ({ classes, backLink }) => {\n return (\n
\n \n \n {backLink.title}\n \n
\n );\n};\n\nexport const ScreenToolbar = withStyles(styles)(ScreenToolbarComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { BoxHeader } from '../../BoxHeader';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { StageService } from '../../../services/Stage.service';\nimport { StageForm } from '../../forms/StageForm';\nimport sortBy from 'lodash/sortBy';\nimport { DocumentationEdit } from '../../DocumentationEdit';\nimport { AttachmentTemplate } from '../../../shared/types/AttachmentTemplate';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/rootReducer';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AdminStageDetailsScreenComponent: React.FunctionComponent = ({ match }) => {\n const [stage, setStage] = useState();\n const [activeStage, setActiveStage] = useState();\n const [attachmentTemplates, setAttachmentTemplates] = useState>([]);\n\n const { t } = useTranslator();\n\n const { role } = useSelector((state: RootState) => state.user);\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const fetchStage = () => {\n (async () => {\n const {\n data: { result },\n } = await StageService.getStage(match.params.id);\n\n setStage(result);\n })();\n };\n\n const fetchActiveStage = () => {\n (async () => {\n if(stage) {\n const {\n data: { result },\n } = await StageService.getActiveStage(stage?.submissionId!);\n \n setActiveStage(result);\n }\n })();\n };\n\n const addFileServiceHandler = async (file: FormData) => {\n if (stage?.id) {\n await StageService.addTemplateFile(stage.id, file);\n await fetchAttachmentTemplates();\n }\n };\n\n const fetchAttachmentTemplates = () => {\n (async () => {\n if (stage?.id) {\n const { data: { result } } = await StageService.getAttachmentTemplates(stage?.id);\n setAttachmentTemplates(sortBy(result, 'role'));\n }\n })();\n };\n\n const deleteFileServiceHandler = async (template: AttachmentTemplate) => {\n if (stage?.id) {\n await StageService.deleteAttachmentTemplate(template.id);\n await fetchAttachmentTemplates();\n }\n };\n \n useEffect(fetchStage, []);\n useEffect(fetchActiveStage, [stage]);\n useEffect(fetchAttachmentTemplates, [stage]);\n\n return stage ? (\n
\n \n \n \n \n \n \n \n
\n ): null;\n};\n\nexport const AdminStageDetailsScreen = withStyles(styles)(withRouter(AdminStageDetailsScreenComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { CircularProgress } from './CircularProgress';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n justifyContent: 'center',\n },\n });\n\ntype Props = WithStyles & {};\n\nconst BoxLoaderComponent: React.FunctionComponent = ({ classes }) => {\n return (\n
\n \n
\n );\n};\n\nexport const BoxLoader = withStyles(styles)(BoxLoaderComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\nimport Color from 'color';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n border: `1px solid ${Color(palette.primary.main).alpha(0.2).rgb().string()}`,\n position: 'relative',\n borderRadius: custom.radius.r_0,\n marginTop: 10,\n '&:not(:last-child)': {\n marginBottom: 30,\n },\n },\n title: {\n padding: '0 10px',\n backgroundColor: palette.common.white,\n fontWeight: 600,\n textTransform: 'uppercase',\n fontSize: 12,\n position: 'absolute',\n letterSpacing: 0.4,\n top: -8,\n left: 10,\n },\n sectionContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: 20,\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n title?: string;\n};\n\nconst BoxSectionComponent: React.FunctionComponent = ({ classes, className, children, title }) => {\n return (\n
\n
{title}
\n
{children}
\n
\n );\n};\n\nexport const BoxSection = withStyles(styles)(BoxSectionComponent);\n","import React from 'react';\nimport { createStyles, Typography, WithStyles, withStyles } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = () =>\n createStyles({\n root: {},\n label: {\n marginBottom: 5,\n },\n value: {\n fontWeight: 600,\n },\n multilineText: {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n whiteSpace: 'pre-wrap',\n marginBottom: '10px !important'\n }\n });\n\ntype Props = WithStyles & {\n label: string;\n value: string | number;\n multiline?: boolean;\n};\n\nconst LabelValueComponent: React.FunctionComponent = ({ classes, label, value, multiline }) => {\n return (\n
\n
{label}
\n {multiline ? (\n \n
\n            {value}\n          
\n
\n ) : (\n
{value}
\n )}\n
\n );\n};\n\nexport const LabelValue = withStyles(styles)(LabelValueComponent);\n","import { ApiService } from './Api.service';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { SimpleSubmission } from '../shared/types/SimpleSubmission';\nimport { Competition } from '../shared/types/Competition';\nimport { Submission } from '../shared/types/Submission';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { Comment } from '../shared/types/Comment';\nimport { Note } from '../shared/types/Note';\nimport { User } from '../shared/types/User';\nimport { Mark } from '../shared/types/Mark';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { SubmissionFull } from '../shared/types/SubmissionFull';\nimport { SuggestedReviewer } from '../shared/types/SuggestedReviewer';\nimport { SubmissionOtherAttachment } from '../shared/types/SubmissionOtherAttachment';\nimport { SubmissionsCount } from '../shared/types/SubmissionsCount';\n\nexport const SubmissionService = {\n resource: 'Submission',\n add: (competitionId: Competition['id'], submissionProjectData: Submission['project']) => {\n return ApiService.post(`${SubmissionService.resource}/${competitionId}`, submissionProjectData, { withCredentials: true });\n },\n autosave: (competitionId: Competition['id'], submissionProjectData: Submission['project']) => {\n return ApiService.post(`${SubmissionService.resource}/${competitionId}/autosave`, submissionProjectData, { withCredentials: true });\n },\n addFile: (data: FormData) => {\n return ApiService.post(`${SubmissionService.resource}/attachments`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n removeFile: (id: string) => {\n return ApiService.delete(`${SubmissionService.resource}/attachments/${id}`, {\n withCredentials: true,\n });\n },\n updateFile: (id: string, data: FormData) => {\n return ApiService.put(`${SubmissionService.resource}/attachments/${id}`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n getOne: (id: Submission['id']) => {\n return ApiService.get>(`${SubmissionService.resource}/${id}`, { withCredentials: true });\n },\n getOneFull: (id: Submission['id']) => {\n return ApiService.get>(`${SubmissionService.resource}/${id}/full`, { withCredentials: true });\n },\n getAutosaved: (competitionId: Competition['id']) => {\n return ApiService.get>(`${SubmissionService.resource}/${competitionId}/autosave`, { withCredentials: true });\n },\n getMy: () => {\n return ApiService.get>>(`${SubmissionService.resource}/me`, { withCredentials: true });\n },\n getAllAttachments: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/attachments/${id}/all`, {\n withCredentials: true,\n });\n },\n getReviewerAttachments: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/attachments/${id}/reviewer`, {\n withCredentials: true,\n });\n },\n getAuthorAttachments: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/attachments/${id}/author`, {\n withCredentials: true,\n });\n },\n getOtherAttachments: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/attachments/${id}/other`, {\n withCredentials: true\n });\n },\n submitAttachments: (submissionId: Submission['id']) => {\n return ApiService.put(`${SubmissionService.resource}/attachments/${submissionId}/submit`, {}, {\n withCredentials: true\n });\n },\n submitOtherAttachments: (submissionId: Submission['id']) => {\n return ApiService.put(`${SubmissionService.resource}/attachments/${submissionId}/submit-other`, {}, {\n withCredentials: true\n });\n },\n getActive: () => {\n return ApiService.get>>(`${SubmissionService.resource}/active`, {\n withCredentials: true,\n });\n },\n getArchived: () => {\n return ApiService.get>>(`${SubmissionService.resource}/inactive`, {\n withCredentials: true,\n });\n },\n mark: (data: FormData) => {\n return ApiService.put(\n `${SubmissionService.resource}/mark`,\n data,\n {\n withCredentials: true,\n }\n );\n },\n getInReview: (id: Competition['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/in-review?competitionId=${id}`, {\n withCredentials: true,\n });\n },\n getWon: (id: Competition['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/won-submissions?competitionId=${id}`, {\n withCredentials: true,\n });\n },\n getDrafts: (id: Competition['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/draft?competitionId=${id}`, {\n withCredentials: true,\n });\n },\n getRejected: (id: Competition['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/rejected?competitionId=${id}`, {\n withCredentials: true,\n });\n },\n getNew: (id: Competition['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/new?competitionId=${id}`, {\n withCredentials: true,\n });\n },\n getSubmissionsCount: (id: Competition['id']) => {\n return ApiService.get>(`${SubmissionService.resource}/submissions-count?competitionId=${id}`)\n },\n addComment: (data: FormData) => {\n return ApiService.put>(\n `${SubmissionService.resource}/comments`,\n data,\n { withCredentials: true }\n );\n },\n getComments: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${id}/comments`, { withCredentials: true });\n },\n addNote: (data: FormData) => {\n return ApiService.put>(\n `${SubmissionService.resource}/notes`,\n data,\n { withCredentials: true }\n );\n },\n getNotes: (id: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${id}/notes`, { withCredentials: true });\n },\n deleteNote: (id: Submission['id'], noteId: Note['id']) => {\n return ApiService.delete(`${SubmissionService.resource}/${id}/notes/${noteId}`, { withCredentials: true });\n },\n getReviewers: (submissionId: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${submissionId}/reviewers`, {\n withCredentials: true,\n });\n },\n addReviewer: (submissionId: Submission['id'], userId: User['userId']) => {\n return ApiService.post(\n `${SubmissionService.resource}/${submissionId}/reviewers?userId=${userId}`,\n {},\n {\n withCredentials: true,\n }\n );\n },\n deleteReviewer: (submissionId: Submission['id'], userId: User['userId']) => {\n return ApiService.delete(`${SubmissionService.resource}/${submissionId}/reviewers?userId=${userId}`, { withCredentials: false });\n },\n addSuggestedReviewer: (submissionId: Submission['id'], userId: User['userId']) => {\n return ApiService.post(\n `${SubmissionService.resource}/${submissionId}/reviewers/suggested?userId=${userId}`,\n {},\n {\n withCredentials: true,\n }\n );\n },\n acceptSuggestedReviewer: (submissionId: Submission['id'], userId: User['userId']) => {\n return ApiService.post(\n `${SubmissionService.resource}/${submissionId}/reviewers/accept?userId=${userId}`,\n {},\n { withCredentials: true }\n );\n },\n getAvailableSuggestedReviewers: (submissionId: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${submissionId}/reviewers/suggested/available/`, { withCredentials: true });\n },\n removeSuggestedReviewer: (submissionId: string, userId: string) => {\n return ApiService.delete(`${SubmissionService.resource}/${submissionId}/reviewers/suggested?userId=${userId}`, \n { withCredentials: true });\n },\n getSuggestedReviewers: (submissionId: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${submissionId}/reviewers/suggested`, { withCredentials: true });\n },\n\n getMark: (submissionId: Submission['id']) => {\n return ApiService.get>(`${SubmissionService.resource}/${submissionId}/mark`, {\n withCredentials: true,\n });\n },\n\n getAllMarks: (submissionId: Submission['id']) => {\n return ApiService.get>>(`${SubmissionService.resource}/${submissionId}/mark/all`, {\n withCredentials: true,\n });\n },\n\n updateStatus: (submissionId: Submission['id'], status: SubmissionStatusEnum) => {\n return ApiService.put(`${SubmissionService.resource}/${submissionId}/status?status=${status}`, {}, { withCredentials: true });\n },\n\n addSubmissionDetails: (id: string, data: Submission['project']) => {\n return ApiService.post(`${SubmissionService.resource}/${id}`, data, {\n withCredentials: true,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n },\n\n updateSubmissionDetails: (id: string, data: Submission['project']) => {\n return ApiService.put(`${SubmissionService.resource}/${id}`, data, {\n withCredentials: true,\n });\n },\n\n notifyCreated: (id: Submission['id']) => {\n return ApiService.put(\n `${SubmissionService.resource}/${id}/notify-created`,\n {},\n {\n withCredentials: true,\n }\n );\n },\n \n canReviewSubmission: (id: Submission['id'], userId: User['userId']) => {\n return ApiService.get>(`${SubmissionService.resource}/${id}/canReview?userId=${userId}`, {\n withCredentials: true\n });\n },\n};\n","export enum AttachmentStatusEnum {\n Invalid = 0, \n Submitted = 1,\n Autosaved = 2\n }\n ","import { AttachmentTemplate } from \"../types/AttachmentTemplate\";\nimport { DuplicateAttachment } from \"../types/DuplicateAttachment\";\nimport { SubmissionAttachment } from \"../types/SubmissionAttachment\";\n\nexport const getDuplicateSubmissionAttachments = (\n submissionAttachments: SubmissionAttachment[],\n attachmentsToUpload: Map\n): DuplicateAttachment[] => {\n if (!submissionAttachments) {\n return [];\n }\n\n const attachments = Array.from(attachmentsToUpload).map(([templateId, file]) => ({\n templateId: templateId,\n fileName: file?.name\n }))\n .filter(attachment => Boolean(attachment.fileName));\n\n const allAttachments = submissionAttachments.map(attachment => ({\n templateId: attachment.templateId,\n templateName: attachment.templateName,\n fileName: attachment.attachments[0]?.fileName\n }))\n .filter(attachment => Boolean(attachment.fileName));\n\n allAttachments.push(...attachments\n .map(attachment => {\n const templateName = submissionAttachments.find(attach => attach.templateId === attachment.templateId)?.templateName;\n \n return {\n templateId: attachment.templateId,\n templateName: templateName ?? '',\n fileName: attachment.fileName!\n };\n })\n .filter(attachment => Boolean(attachment.templateName))\n );\n\n var map = new Map();\n allAttachments.forEach(attachment => \n map.set(attachment.fileName, (map.get(attachment.fileName) || 0) + 1)\n );\n const duplicates = allAttachments\n .filter(attachment => map.get(attachment.fileName) > 1)\n .reduce((group: DuplicateAttachment[], attachment) => {\n const attach = group.find(a => a.fileName === attachment.fileName);\n if (attach) {\n attach.templateNames.push(attachment.templateName);\n }\n else {\n group.push({\n fileName: attachment.fileName,\n templateNames: [attachment.templateName]\n });\n }\n return group;\n }, Object.create([]));\n duplicates.forEach(duplicate => {\n duplicate.templateNames.sort((a, b) => {\n const indexOfA = submissionAttachments.findIndex(attach => attach.templateName === a);\n const indexOfB = submissionAttachments.findIndex(attach => attach.templateName === b);\n return indexOfA - indexOfB;\n });\n });\n\n return duplicates;\n};\n\nexport const getDuplicateAttachments = (\n attachmentTemplates: Array,\n attachmentsToUpload: Map\n): DuplicateAttachment[] => {\n if (!attachmentTemplates) {\n return [];\n }\n\n const attachments = Array.from(attachmentsToUpload).map(([templateId, file]) => ({\n templateId: templateId,\n fileName: file?.name\n }))\n .filter(attachment => Boolean(attachment.fileName));\n\n const allAttachments = attachments\n .map(attachment => {\n const templateName = attachmentTemplates.find(template => template.id === attachment.templateId)?.name;\n \n return {\n templateId: attachment.templateId,\n templateName: templateName ?? '',\n fileName: attachment.fileName!\n };\n })\n .filter(attachment => Boolean(attachment.templateName));\n\n var map = new Map();\n allAttachments.forEach(attachment => \n map.set(attachment.fileName, (map.get(attachment.fileName) || 0) + 1)\n );\n const duplicates = allAttachments\n .filter(attachment => map.get(attachment.fileName) > 1)\n .reduce((group: DuplicateAttachment[], attachment) => {\n const attach = group.find(a => a.fileName === attachment.fileName);\n if (attach) {\n attach.templateNames.push(attachment.templateName);\n }\n else {\n group.push({\n fileName: attachment.fileName,\n templateNames: [attachment.templateName]\n });\n }\n return group;\n }, Object.create([]));\n duplicates.forEach(duplicate => {\n duplicate.templateNames.sort((a, b) => {\n const indexOfA = attachmentTemplates.findIndex(template => template.name === a);\n const indexOfB = attachmentTemplates.findIndex(template => template.name === b);\n return indexOfA - indexOfB;\n });\n });\n\n return duplicates;\n};\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme, Grid } from '@material-ui/core';\nimport { CloudDownloadOutlined, DeleteOutlined } from '@material-ui/icons';\nimport { useSelector } from 'react-redux';\nimport classNames from 'classnames';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { FileInput } from './inputs/FileInput';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\nimport { API_URL } from '../services/Api.service';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { RootState } from '../store/rootReducer';\nimport { Submission } from '../shared/types/Submission';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { red, green } from '@material-ui/core/colors';\nimport { DocumentForAllReviewsBadge } from './DocumentForAllReviewsBadge';\nimport { ConfirmationDialog } from './ConfirmationDialog';\nimport { Alert } from '@material-ui/lab';\nimport { DuplicateAttachment } from '../shared/types/DuplicateAttachment';\nimport { getDuplicateSubmissionAttachments, getDuplicateAttachments } from '../shared/helpers/getDuplicateAttachments';\nimport { Attachment } from '../shared/types/Attachment';\nimport { AttachmentStatusEnum } from '../shared/enums/AttachmentStatusEnum';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 20,\n paddingTop: 20,\n '&:not(:first-child)': {\n borderTop: '1px solid rgba(0,0,0,0.05)',\n },\n '& > :first-child > *': {\n flex: 1,\n },\n },\n documentName: {\n fontSize: 14,\n fontWeight: 600,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n templateLinkContainer: {\n display: 'flex',\n textAlign: 'left',\n alignItems: 'center'\n },\n templateLink: {\n display: 'flex',\n color: palette.primary.main,\n cursor: 'pointer',\n alignItems: 'center',\n justifyContent: 'flex-end',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n iconDownload: {\n fontSize: 20,\n color: green[500],\n marginLeft:5\n }, \n iconDelete: {\n fontSize: 20,\n color: red[500],\n marginLeft:5\n }, \n rightContainer: {\n textAlign: 'right',\n },\n badge: {\n marginTop: 10,\n \"& ~ $badge\": {\n marginTop: 5\n }\n },\n downloadUploadedFileButton: {\n marginTop: 3,\n },\n documentAuthor: {\n fontSize: 12,\n marginRight: 5\n },\n changeDocumentFileInput: {\n marginLeft: 5\n },\n alert: {\n marginTop: 15,\n marginBottom: 5\n },\n alertMessage: {\n '&:not(:last-child)': {\n marginBottom: 10\n }\n }\n });\n\ntype Props = WithStyles & {\n shouldValidate: boolean;\n attachmentTemplates?: Array;\n submissionAttachments?: Array;\n submissionId?: string;\n competetionIsActive: boolean;\n attachments: Map;\n attachmentsToUpdate?: Map;\n submissionStatus: Submission['status'];\n docsAssignedTo: RoleEnum;\n onFileChange: (templateId: string, file: File | null, attachmentId?: string) => void;\n onAdminFileChange?: (attachmentId: string, file: File | null) => void;\n onAttachmentRemoved?: () => void;\n};\n\nconst SubmissionDocumentationComponent: React.FunctionComponent = ({\n classes,\n attachments,\n attachmentsToUpdate = null,\n attachmentTemplates,\n shouldValidate,\n submissionAttachments,\n submissionStatus,\n submissionId,\n competetionIsActive,\n docsAssignedTo,\n onFileChange,\n onAdminFileChange,\n onAttachmentRemoved,\n}) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [attachmentToDelete, setAttachmentToDelete] = useState('');\n const [confirmationDialogTitle, setConfirmationDialogTitle] = useState('');\n const [duplicateAttachments, setDuplicateFileNames] = useState>([]);\n\n const { t } = useTranslator();\n\n const handleClose = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && attachmentToDelete && await deleteFile(attachmentToDelete);\n setAttachmentToDelete('');\n })()\n };\n\n const { role } = useSelector((state: RootState) => state.user);\n\n const handleDownloadTemplate = (templateId: string) => () => {\n if (role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator ||\n submissionId === undefined) {\n window.open(`${API_URL}/AttachmentSpecimen/${templateId}`);\n } else {\n window.open(`${API_URL}/AttachmentSpecimen/${templateId}/${submissionId}`);\n } \n };\n\n useEffect(() => {\n setDuplicateFileNames([]);\n \n if (attachmentTemplates) {\n const duplicates = getDuplicateAttachments(attachmentTemplates, attachments);\n setDuplicateFileNames(duplicates);\n }\n else if (submissionAttachments) {\n const duplicates = getDuplicateSubmissionAttachments(submissionAttachments, attachments);\n setDuplicateFileNames(duplicates);\n }\n }, [attachments, submissionAttachments]);\n\n const handleFileChange = (templateId: string, value: File | null, attachmentId?: string) => {\n onFileChange(templateId, value, attachmentId);\n };\n\n const handleDownloadAttachment = (id: string) => () => {\n window.open(`${API_URL}/Attachment/${id}`);\n };\n\n const deleteFile = async (id: string) => {\n await SubmissionService.removeFile(id);\n\n onAttachmentRemoved && onAttachmentRemoved();\n };\n\n const handleAttachmentDelete = (id: string, isForAllReviews: boolean) => async () => {\n const dialogTitle = isForAllReviews ? t('confirmDeleteDocumentFromAllReviews') : t('confirmAttachmentTemplateDeletion');\n setConfirmationDialogTitle(dialogTitle);\n setAttachmentToDelete(id);\n setIsConfirmDialogOpen(true);\n };\n\n const renderDownloadButton = (\n attachment: Attachment,\n templateName: string,\n displaySenderName?: boolean\n ): JSX.Element => {\n const senderFullName = displaySenderName ? ` (${attachment.senderFirstName} ${attachment.senderLastName})` : '';\n\n return (\n \n {t('downloadDocument')} {templateName}{senderFullName}\n \n );\n };\n\n const renderDeleteButton = (attachment: SubmissionAttachment): JSX.Element => {\n return (\n \n {t('delete')}\n \n );\n };\n\n const shouldRenderDownloadTemplate = (attachment: SubmissionAttachment): boolean => {\n return attachment.hasSpecimenFile && \n ((attachment.role === RoleEnum.Author && role === RoleEnum.Author && competetionIsActive === true) || \n (attachment.role === RoleEnum.Reviewer && role === RoleEnum.Reviewer));\n };\n\n return (\n <>\n {Boolean(duplicateAttachments.length) && \n (role === RoleEnum.Author && docsAssignedTo === RoleEnum.Author || \n role === RoleEnum.Reviewer && docsAssignedTo == RoleEnum.Reviewer) && (\n \n {duplicateAttachments.map(attachment => (\n
\n {t('duplicatedFileInfo')\n .replace('{0}', attachment.fileName)\n .replace('{1}', attachment.templateNames.length.toString())\n .replace('{2}', attachment.templateNames.map(a => `\"${a}\"`).join(', '))}\n
\n ))}\n
\n )}\n
\n {attachmentTemplates && Boolean(attachmentTemplates.length) ? \n attachmentTemplates.map((template) => (\n
\n
\n
{template.name}
\n
\n\n {template.specimenFileName && (\n
\n \n {t('downloadTemplate')} {template.name}\n \n
\n )}\n\n
\n handleFileChange(template.id, value)}\n />\n
\n
\n )) : submissionAttachments && \n submissionAttachments.map((attachment) => {\n const shouldRenderMiddleColumn = shouldRenderDownloadTemplate(attachment);\n \n return (\n \n {(role === RoleEnum.Admin || role === RoleEnum.CompetitionCoordinator) ? (\n \n \n
{attachment.templateName}
\n
\n {attachment.attachments.length ? (\n \n {attachment.attachments.map(attach => (\n <>\n \n {renderDownloadButton(attach, attachment.templateName, true)}\n \n \n {' '}\n onAdminFileChange && onAdminFileChange(attach.id, value)}\n />\n \n \n ))}\n \n ) : (\n \n {t('none')}\n \n )}\n
\n ) : (\n \n \n
\n {attachment.templateName}\n
\n
\n\n {shouldRenderMiddleColumn && (\n \n
\n \n {t('downloadTemplate')} {attachment.templateName}\n \n
\n
\n )}\n\n \n
\n {attachment.role === RoleEnum.Reviewer && role === RoleEnum.Reviewer && (\n
\n {attachment.attachments.length ? (\n <>\n {renderDownloadButton(attachment.attachments[0], attachment.templateName)}\n {' '}\n {submissionStatus === SubmissionStatusEnum.Review && (\n <>\n {' '}\n {renderDeleteButton(attachment)}\n \n )}\n \n ) : (\n submissionStatus === SubmissionStatusEnum.Review ? (\n handleFileChange(attachment.templateId, value)}\n />\n ) : (\n {t('none')}\n )\n )}\n
\n )}\n \n {attachment.role === RoleEnum.Author && role === RoleEnum.Reviewer && (\n attachment.attachments.length ?\n renderDownloadButton(attachment.attachments[0], attachment.templateName) \n : (\n {t('none')}\n )\n )}\n\n {role === RoleEnum.Author && (\n attachment.attachments.length ? (\n <>\n {renderDownloadButton(attachment.attachments[0], attachment.templateName)}\n {(submissionStatus == SubmissionStatusEnum.Autosaved \n || attachment.attachments[0].status === AttachmentStatusEnum.Autosaved) && (\n <> \n {' '}\n {' '}\n {renderDeleteButton(attachment)}\n \n )}\n \n ) : (\n competetionIsActive ? (\n handleFileChange(attachment.templateId, value)}\n />\n ) : (\n {t('none')}\n )\n )\n )}\n\n {(role === RoleEnum.BoardMember ||\n role === RoleEnum.FinanceCoordinator ||\n role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember) && (\n attachment.attachments.length ? \n attachment.attachments.map(attach =>\n renderDownloadButton(attach, attachment.templateName, true)\n ) : (\n {t('none')}\n )\n )}\n
\n
\n
\n )}\n\n {attachment.isForAllReviews && (\n \n \n \n )}\n
\n );\n })}\n handleClose(confirmed)} dialogTitle={confirmationDialogTitle} />\n
\n \n );\n};\n\nexport const SubmissionDocumentation = withStyles(styles)(SubmissionDocumentationComponent);\n","export enum CommentStatusEnum {\n Invalid = 0, \n Submitted = 1,\n Autosaved = 2\n}\n","export const DateService = {\n DATE_FORMAT: 'DD.MM.YYYY',\n};\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport moment from 'moment';\n\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { DateService } from '../services/Date.service';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {},\n comment: {\n display: 'inline-flex',\n lineHeight: '24px',\n padding: 10,\n borderRadius: custom.radius.r_0,\n backgroundColor: custom.gray.g_0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 22,\n width: 0,\n height: 0,\n border: '7px solid transparent',\n borderTopColor: custom.gray.g_0,\n borderBottom: 0,\n borderLeft: 0,\n marginLeft: -11.5,\n marginBottom: -7,\n },\n },\n author: {\n fontWeight: 600,\n textTransform: 'uppercase',\n marginRight: 5,\n },\n date: {\n color: custom.gray.g_4,\n marginLeft: 5,\n },\n footer: {\n fontSize: 12,\n display: 'flex',\n alignItems: 'center',\n marginTop: 10,\n marginLeft: 10,\n },\n });\n\ntype Props = WithStyles & {\n createdAt: string;\n senderRole: RoleEnum;\n senderFullName: string;\n value: string;\n className?: string;\n};\n\nconst DiscussionTileComponent: React.FunctionComponent = ({ classes, className, createdAt, senderRole, senderFullName, value }) => {\n const { t } = useTranslator();\n\n return (\n
\n
{value}
\n
\n
{senderFullName || ''} ({t(senderRole)})
·\n
{moment(createdAt).format(DateService.DATE_FORMAT)}
\n
\n
\n );\n};\n\nexport const DiscussionTile = withStyles(styles)(DiscussionTileComponent);\n","export enum NoteStatusEnum {\n Invalid = 0, \n Submitted = 1,\n Autosaved = 2\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { FormikContextType, useFormikContext } from 'formik';\nimport { debounce } from 'lodash';\nimport isEqual from 'react-fast-compare';\nimport isMapEqual from 'fast-deep-equal/es6'\nimport { ErrorService } from '../services/Error.service';\nimport { useSnackbar } from 'notistack';\n\ntype AutosaveProps = {\n debounceMs?: number;\n initialAttachments?: Map;\n currentAttachments?: Map;\n initialMark?: number;\n currentMark?: number;\n submitting: boolean;\n formReadonly?: boolean;\n onSave: (formData: T, attachments: { key: string; value: File | null; }[], mark?: number) => Promise;\n};\n\nexport const Autosave = ({\n debounceMs = 3000,\n initialAttachments,\n currentAttachments,\n initialMark,\n currentMark,\n submitting,\n formReadonly,\n onSave\n}: AutosaveProps): JSX.Element => {\n const [formValues, setFormValues] = useState();\n const [attachments, setAttachments] = useState>();\n const [mark, setMark] = useState();\n\n const formContext: FormikContextType = useFormikContext();\n const { enqueueSnackbar } = useSnackbar();\n\n const enqueueErrorSnackbar = (serverError: string) => enqueueSnackbar(serverError, {\n variant: 'error',\n autoHideDuration: 5000\n });\n\n const debouncedSave = useRef(\n useCallback(\n debounce(async (formValues: T, currentAttachments?: Map, currentMark?: number) => {\n try {\n const currentAttachmentsArray = Array.from(currentAttachments ?? [])\n .map(([key, value]) => ({ key, value }));\n const attachmentsToSave = currentAttachmentsArray.filter(x => Boolean(x.value));\n\n await onSave(formValues, attachmentsToSave, currentMark);\n \n setFormValues(formValues);\n currentAttachments && setAttachments(new Map(currentAttachments));\n currentMark && setMark(currentMark);\n }\n catch (error) {\n enqueueErrorSnackbar(ErrorService.parseError(error));\n }\n }, debounceMs),\n [onSave, debounceMs]\n )\n ).current;\n\n useEffect(() => setFormValues(formContext?.initialValues), [formContext?.initialValues]);\n useEffect(() => setAttachments(initialAttachments), [initialAttachments]);\n useEffect(() => setMark(initialMark), [initialMark]);\n\n useEffect(() => {\n const formValuesChanged = !formReadonly && !formContext?.isSubmitting && (formContext?.dirty || (formValues && !isEqual(formContext?.values, formValues)));\n const formAttachmentsChanged = attachments && !isMapEqual(currentAttachments, attachments);\n const markChanged = initialMark !== undefined && mark !== undefined && currentMark != mark;\n\n if (!submitting && (formValuesChanged || formAttachmentsChanged || markChanged)) {\n const mark = markChanged ? currentMark : undefined;\n debouncedSave(formContext?.values, currentAttachments, mark);\n }\n else {\n debouncedSave.cancel();\n }\n\n return debouncedSave.cancel;\n }, [debouncedSave, formContext?.values, currentAttachments, currentMark, submitting]);\n\n return (<>);\n};\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { SubmissionService } from '../../services/Submissions.service';\nimport { Submission } from '../../shared/types/Submission';\nimport { Comment } from '../../shared/types/Comment';\nimport { CommentStatusEnum } from '../../shared/enums/CommentStatusEnum';\nimport { Autosave } from '../Autosave';\n\nconst styles = () =>\n createStyles({\n control: {\n marginBottom: 10,\n },\n addButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n initValues?: Comment;\n onSaved: () => void;\n};\n\ntype CommentFormValues = {\n comment: string;\n};\n\nconst CommentFormComponent: React.FunctionComponent = ({ classes, submissionId, initValues, onSaved }) => {\n const [serverError, setServerError] = useState('');\n const [autosaving, setAutosaving] = useState(false);\n const [dataToSubmit, setDataToSubmit] = useState();\n const [formHelpers, setFormHelpers] = useState>();\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) => Yup.object().shape({});\n\n const [initialValues, setInitialValues] = useState({\n comment: initValues ? initValues.value : '',\n });\n\n const handleSaveComment = () => {\n (async () => {\n if (!dataToSubmit || autosaving) {\n return;\n }\n \n try {\n const formData = new FormData();\n\n formData.append(\"value\", dataToSubmit.comment);\n formData.append(\"parentId\", submissionId);\n formData.append('status', CommentStatusEnum.Submitted.toString());\n\n await SubmissionService.addComment(formData);\n\n formHelpers?.resetForm();\n onSaved();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setDataToSubmit(undefined);\n }\n })();\n };\n\n useEffect(handleSaveComment, [dataToSubmit, autosaving]);\n\n const handleFormSubmit = (data: CommentFormValues, formHelpers: FormikHelpers) => {\n setServerError(\"\");\n setDataToSubmit(data);\n setFormHelpers(formHelpers);\n };\n\n const handleAutosave = async (values: CommentFormValues) => {\n setAutosaving(true);\n\n try {\n const formData = new FormData();\n\n formData.append(\"value\", values.comment);\n formData.append(\"parentId\", submissionId);\n formData.append('status', CommentStatusEnum.Autosaved.toString());\n\n await SubmissionService.addComment(formData);\n \n setInitialValues(values);\n }\n finally {\n setAutosaving(false);\n }\n };\n\n return (\n
\n {({ isSubmitting, values }) => (\n \n \n\n \n\n \n {t('addComment')}\n \n \n \n \n )}\n
\n );\n};\n\nexport const CommentForm = withStyles(styles)(CommentFormComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { CommentForm } from './forms/CommentForm';\nimport { Submission } from '../shared/types/Submission';\nimport { Comment } from '../shared/types/Comment';\n\nconst styles = () =>\n createStyles({\n root: {\n marginTop: 10,\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n initValues?: Comment;\n onSaved: () => void;\n};\n\nconst AddCommentComponent: React.FunctionComponent = ({ classes, submissionId, initValues, onSaved }) => {\n return (\n
\n \n
\n );\n};\n\nexport const AddComment = withStyles(styles)(AddCommentComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { withRouter, RouteComponentProps } from 'react-router';\n\nimport { DiscussionTile } from './DiscussionTile';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Comment } from '../shared/types/Comment';\nimport { ErrorService } from '../services/Error.service';\nimport { AddComment } from './AddComment';\nimport { BoxLoader } from './BoxLoader';\nimport { Message } from './Message';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { CommentStatusEnum } from '../shared/enums/CommentStatusEnum';\n\nconst styles = () =>\n createStyles({\n root: {},\n tile: {\n '&:not(:first-child)': {\n marginTop: 20,\n },\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst DiscussionComponent: React.FunctionComponent = ({ classes, match }) => {\n const [comments, setComments] = useState>([]);\n const [loading, setLoading] = useState(true);\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const fetchComments = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getComments(match.params.id);\n\n setComments(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchComments, []);\n\n return (\n
\n {loading ? (\n \n ) : (\n <>\n comment.status === CommentStatusEnum.Autosaved)}\n onSaved={fetchComments}\n />\n {serverError ? (\n {t(serverError)}\n ) : (\n comments\n .filter(comment => comment.status === CommentStatusEnum.Submitted)\n .map(comment => )\n )}\n \n )}\n
\n );\n};\n\nexport const Discussion = withStyles(styles)(withRouter(DiscussionComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Submission } from '../shared/types/Submission';\nimport { Note } from '../shared/types/Note';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { DeleteOutlined } from '@material-ui/icons';\n\nconst styles = () =>\n createStyles({\n deleteButton: {\n color: 'red',\n display: 'inline-flex',\n position: 'relative',\n top: '7px',\n margin: '0 0 0 1%'\n }\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n noteId: Note['id'];\n className?: string;\n onDeleted: () => void;\n}\n\nconst DeleteNoteComponent: React.FunctionComponent = ({ classes, submissionId, noteId, onDeleted }) => {\n const handleDelete = async () => {\n await SubmissionService.deleteNote(submissionId, noteId);\n\n onDeleted();\n }\n\n return (\n
\n \n \n \n
\n );\n}\n\nexport const DeleteNote = withStyles(styles)(DeleteNoteComponent);","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport moment from 'moment';\n\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { DateService } from '../services/Date.service';\nimport { DeleteNote } from './DeleteNote';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {},\n note: {\n display: 'inline-flex',\n lineHeight: '24px',\n padding: 10,\n borderRadius: custom.radius.r_0,\n backgroundColor: custom.gray.g_0,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 22,\n width: 0,\n height: 0,\n border: '7px solid transparent',\n borderTopColor: custom.gray.g_0,\n borderBottom: 0,\n borderLeft: 0,\n marginLeft: -11.5,\n marginBottom: -7,\n },\n },\n author: {\n fontWeight: 600,\n textTransform: 'uppercase',\n marginRight: 5,\n },\n date: {\n color: custom.gray.g_4,\n marginLeft: 5,\n },\n footer: {\n fontSize: 12,\n display: 'flex',\n alignItems: 'center',\n marginTop: 10,\n marginLeft: 10,\n }\n });\n\ntype Props = WithStyles & {\n createdAt: string;\n id: string;\n senderRole: RoleEnum;\n senderFullName: string;\n value: string;\n className?: string;\n submissionId: string;\n onDeleted: () => void;\n};\n\nconst NotesTileComponent: React.FunctionComponent = ({ classes, className, createdAt, id, senderRole, senderFullName, value, submissionId, onDeleted }) => {\n const { t } = useTranslator();\n\n return (\n
\n
{value}
\n \n
\n
{senderFullName || ''} ({t(senderRole)})
·\n
{moment(createdAt).format(DateService.DATE_FORMAT)}
\n
\n
\n );\n};\n\nexport const NotesTile = withStyles(styles)(NotesTileComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { SubmissionService } from '../../services/Submissions.service';\nimport { Submission } from '../../shared/types/Submission';\nimport { Autosave } from '../Autosave';\nimport { NoteStatusEnum } from '../../shared/enums/NoteStatusEnum';\nimport { Note } from '../../shared/types/Note';\n\nconst styles = () =>\n createStyles({\n control: {\n marginBottom: 10,\n },\n addButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n initValues?: Note;\n onSaved: () => void;\n};\n\nexport type NoteFormValues = {\n note: string;\n};\n\nconst NoteFormComponent: React.FunctionComponent = ({ classes, submissionId, initValues, onSaved }) => {\n const [serverError, setServerError] = useState('');\n const [autosaving, setAutosaving] = useState(false);\n const [dataToSubmit, setDataToSubmit] = useState();\n const [formHelpers, setFormHelpers] = useState>();\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) => Yup.object().shape({});\n\n const [initialValues, setInitialValues] = useState({\n note: initValues ? initValues.value : '',\n });\n\n const handleSaveNote = () => {\n (async () => {\n if (!dataToSubmit || autosaving) {\n return;\n }\n\n try {\n const formData = new FormData();\n\n formData.append(\"value\", dataToSubmit.note);\n formData.append(\"parentId\", submissionId);\n formData.append('status', NoteStatusEnum.Submitted.toString());\n\n await SubmissionService.addNote(formData);\n\n formHelpers?.resetForm();\n onSaved();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setDataToSubmit(undefined);\n }\n })();\n };\n\n useEffect(handleSaveNote, [dataToSubmit, autosaving]);\n\n const handleFormSubmit = (data: NoteFormValues, formHelpers: FormikHelpers) => {\n setServerError(\"\");\n setDataToSubmit(data);\n setFormHelpers(formHelpers);\n };\n\n const handleAutosave = async (values: NoteFormValues) => {\n setAutosaving(true);\n \n try {\n const formData = new FormData();\n\n formData.append(\"value\", values.note);\n formData.append(\"parentId\", submissionId);\n formData.append('status', NoteStatusEnum.Autosaved.toString());\n\n await SubmissionService.addNote(formData);\n\n setInitialValues(values);\n }\n finally {\n setAutosaving(false);\n }\n };\n\n return (\n
\n {({ isSubmitting, values }) => (\n \n \n\n \n\n \n {t('addNote')}\n \n\n \n \n )}\n
\n );\n}\n\nexport const NoteForm = withStyles(styles)(NoteFormComponent);\n","export enum MarkStatusEnum {\n Invalid = 0, \n Submitted = 1,\n Autosaved = 2\n}\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { NoteForm, NoteFormValues } from './forms/NoteForm';\nimport { Submission } from '../shared/types/Submission';\nimport { Note } from '../shared/types/Note';\n\nconst styles = () =>\n createStyles({\n root: {\n marginTop: 10,\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n initValues?: Note;\n onSaved: () => void;\n};\n\nconst AddNoteComponent: React.FunctionComponent = ({ classes, submissionId, initValues, onSaved }) => {\n return (\n
\n \n
\n );\n};\n\nexport const AddNote = withStyles(styles)(AddNoteComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { withRouter, RouteComponentProps } from 'react-router';\n\nimport { NotesTile } from './NotesTile';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Note } from '../shared/types/Note';\nimport { ErrorService } from '../services/Error.service';\nimport { AddNote } from './AddNote';\nimport { BoxLoader } from './BoxLoader';\nimport { Message } from './Message';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { NoteStatusEnum } from '../shared/enums/NoteStatusEnum';\n\nconst styles = () =>\n createStyles({\n root: {},\n tile: {\n '&:not(:first-child)': {\n marginTop: 20,\n },\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst NotesComponent: React.FunctionComponent = ({ classes, match }) => {\n const [notes, setNotes] = useState>([]);\n const [loading, setLoading] = useState(true);\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const fetchNotes = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getNotes(match.params.id);\n\n setNotes(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchNotes, []);\n\n return (\n
\n {loading ? (\n \n ) : (\n <>\n note.status === NoteStatusEnum.Autosaved)}\n onSaved={fetchNotes}\n />\n {serverError ? (\n {t(serverError)}\n ) : (\n notes\n .filter(note => note.status === NoteStatusEnum.Submitted)\n .map(note =>\n \n )\n )}\n \n )}\n
\n );\n}\n\nexport const Notes = withStyles(styles)(withRouter(NotesComponent));\n","import { SubmissionStatusEnum } from '../enums/SubmissionStatusEnum';\n\nexport const getSubmissionStatusLabel = (submissionStatus: SubmissionStatusEnum) => {\n switch (submissionStatus) {\n case SubmissionStatusEnum.Draft:\n return 'submissionDraft';\n case SubmissionStatusEnum.New:\n return 'submissionNew';\n case SubmissionStatusEnum.Invalid:\n return 'submissionInvalid';\n case SubmissionStatusEnum.Rejected:\n return 'submissionRejected';\n case SubmissionStatusEnum.Review:\n return 'submissionReview';\n case SubmissionStatusEnum.Won:\n return 'submissionWon';\n case SubmissionStatusEnum.Closed:\n return 'submissionClosed';\n }\n\n return '';\n};\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport classNames from 'classnames';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n root: {\n width: '100%',\n height: 1,\n backgroundColor: custom.gray.g_0,\n marginTop: 10,\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n};\n\nconst DividerComponent: React.FunctionComponent = ({ classes, className }) => {\n return
;\n};\n\nexport const Divider = withStyles(styles)(DividerComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, FormControl, Typography } from '@material-ui/core';\nimport { CheckboxWithLabel, CheckboxWithLabelProps as FormikMaterialCheckboxWithLabelProps } from 'formik-material-ui';\nimport classNames from 'classnames';\nimport { ErrorMessage } from 'formik';\nimport { Divider } from '../Divider';\n\nconst styles = () => createStyles({\n checkboxWrapper: {\n border: '1px solid rgba(0, 0, 0, 0.23)',\n borderRadius: 4,\n marginBottom: 20,\n padding: '6px 13px',\n '& :first-child': {\n marginBottom: 0\n }\n },\n checkboxWrapperError: {\n color: '#f44336',\n borderColor: '#f44336',\n '& span': {\n color: '#f44336'\n }\n },\n checkboxErrorLabel: {\n color: '#f44336',\n margin: '-16px 14px 20px 14px',\n fontSize: '0.75rem'\n },\n additionalText: {\n fontFamily: 'inherit',\n whiteSpace: 'pre-wrap',\n marginBottom: '10px !important'\n },\n additionalTextDisabled: {\n color: '#00000061'\n },\n divider: {\n marginTop: '7px !important',\n marginBottom: '0 !important'\n }\n});\n\nexport type CheckboxWithLabelProps = FormikMaterialCheckboxWithLabelProps &\n WithStyles & {\n fieldName: string;\n error?: string;\n additionalText?: string;\n };\n\ntype Props = CheckboxWithLabelProps;\n\nconst FormikCheckboxComponent: React.FunctionComponent = ({\n classes,\n className,\n fieldName,\n error,\n additionalText,\n ...restProps\n}) => {\n return (\n \n
\n \n {additionalText && (\n <>\n \n \n
\n                {additionalText}\n              
\n
\n \n )}\n
\n \n
\n );\n};\n\nexport const FormikCheckbox = withStyles(styles)(FormikCheckboxComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { Field, useFormikContext } from 'formik';\n\nimport { FormikCheckbox } from '../formik-controls/FormikCheckbox';\nimport classNames from 'classnames';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {\n name: string;\n label?: React.ReactNode;\n disabled?: boolean;\n className?: string;\n additionalText?: string;\n};\n\nconst FieldCheckboxComponent: React.FunctionComponent = ({ className, label, name, disabled, additionalText }) => {\n const form = useFormikContext();\n\n return (\n \n );\n};\n\nexport const FieldCheckbox = withStyles(styles)(FieldCheckboxComponent);\n","import React from \"react\";\nimport { createStyles, Grid, WithStyles, withStyles } from \"@material-ui/core\";\n\nimport { useTranslator } from \"../../i18n/useTranslator\";\nimport { FieldTextField } from \"../form-fields/FieldTextField\";\nimport { CompetitionCategoryEnum } from \"../../shared/enums/CompetitionCategoryEnum\";\nimport { FieldCheckbox } from \"../form-fields/FieldCheckbox\";\nimport { useField } from \"formik\";\n\nconst styles = () =>\n createStyles({\n form: {\n marginTop: 10,\n }\n });\n\ntype Props = WithStyles & {\n competitionCategory: CompetitionCategoryEnum;\n isSubmissionEdit?: boolean;\n};\n\nexport type SubmissionFormValues = {\n projectName: string;\n unitInfo: string;\n estimatedFinishTime?: number | string;\n estimatedFunds?: number | string;\n academicTitle: string;\n requiredConsent: string;\n acceptedRequiredConsent: boolean;\n};\n\nconst SubmissionFormComponent: React.FunctionComponent = ({\n classes,\n competitionCategory,\n isSubmissionEdit\n}) => {\n const { t } = useTranslator();\n\n const getProjectNameFieldLabel = () => {\n return competitionCategory === CompetitionCategoryEnum.Person ?\n t(\"prizeCandidate\") : t(\"projectName\");\n };\n\n const getUnitInfoFieldLabel = () => \n competitionCategory === CompetitionCategoryEnum.Person ?\n t(\"candidateUnitInfo\") : t(\"unitInfo\");\n \n const [requiredConsent] = useField('requiredConsent');\n\n return (\n \n \n \n \n \n \n \n \n \n \n {competitionCategory === CompetitionCategoryEnum.Project && (\n <>\n \n \n \n \n \n \n \n )}\n\n {competitionCategory === CompetitionCategoryEnum.Person && (\n \n \n \n )}\n \n );\n};\n\nexport const SubmissionForm = withStyles(styles)(SubmissionFormComponent);\n","import React, { useEffect, useState, useRef } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme, Grid } from '@material-ui/core';\nimport { CloudDownloadOutlined, DeleteOutlined } from '@material-ui/icons';\nimport { useSelector } from 'react-redux';\nimport classNames from 'classnames';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { FileInput } from './inputs/FileInput';\nimport { API_URL } from '../services/Api.service';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { RootState } from '../store/rootReducer';\nimport { Button } from './Button';\nimport { red, green } from '@material-ui/core/colors';\nimport { SubmissionStage } from '../shared/types/SubmissionStage';\nimport { StageService } from '../services/Stage.service';\nimport { ErrorService } from '../services/Error.service';\nimport { Alert } from '@material-ui/lab';\nimport { DuplicateAttachment } from '../shared/types/DuplicateAttachment';\nimport { getDuplicateSubmissionAttachments } from '../shared/helpers/getDuplicateAttachments';\nimport { Attachment } from '../shared/types/Attachment';\nimport { AxiosResponse } from 'axios';\nimport { Autosave } from './Autosave';\nimport { AttachmentStatusEnum } from '../shared/enums/AttachmentStatusEnum';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 20,\n paddingTop: 20,\n '&:not(:first-child)': {\n borderTop: '1px solid rgba(0,0,0,0.05)',\n },\n '& > :first-child > *': {\n flex: 1,\n },\n },\n sendButton: {\n marginTop: 20,\n },\n sendButtonContainer: {\n display: 'flex',\n alignItems: 'end',\n flexDirection: 'column',\n },\n documentName: {\n fontSize: 14,\n fontWeight: 600,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n templateLinkContainer: {\n display: 'flex',\n textAlign: 'left',\n alignItems: 'center'\n },\n templateLink: {\n display: 'flex',\n color: palette.primary.main,\n cursor: 'pointer',\n alignItems: 'center',\n justifyContent: 'flex-end',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n iconDownload: {\n fontSize: 20,\n color: green[500],\n marginLeft:5\n }, \n iconDelete: {\n fontSize: 20,\n color: red[500],\n marginLeft:5\n }, \n rightContainer: {\n textAlign: 'right',\n },\n downloadUploadedFileButton: {\n marginTop: 3,\n },\n changeDocumentContainer: {\n marginLeft: 5\n },\n noDocumentationMessage: {\n fontStyle: 'italic',\n color: 'gray',\n textAlign: 'center'\n },\n alertMessage: {\n '&:not(:last-child)': {\n marginBottom: 10\n }\n },\n changeDocumentFileInput: {\n marginLeft: 5\n },\n badge: {\n marginTop: 10,\n }\n });\n\ntype Props = WithStyles & {\n submissionStage: SubmissionStage;\n docsAssignedTo: RoleEnum;\n readonly: Boolean;\n showSpecimen?: Boolean;\n onChanged?: () => void;\n onStageAttachmentsChanged?: (attachments: SubmissionAttachment[]) => void;\n};\n\nconst SubmissionStageDocumentationRowComponent: React.FunctionComponent = ({\n classes,\n submissionStage,\n docsAssignedTo,\n readonly,\n onChanged,\n onStageAttachmentsChanged,\n showSpecimen = true\n}) => {\n const { role } = useSelector((state: RootState) => state.user);\n const { t } = useTranslator();\n\n const [serverError, setServerError] = useState('');\n const [saving, setSaving] = useState(false);\n\n const [duplicateAttachments, setDuplicateFileNames] = useState>([]);\n const [shouldValidateFiles, setShouldValidateFiles] = useState(false);\n const [stageAttachments, setStageAttachments] = useState>([]);\n const [attachmentsToUpload, setAttachmentsToUpload] = useState>(new Map());\n const [attachmentsToUpdate, setAttachmentsToUpdate] = useState>(new Map());\n const [autosaving, setAutosaving] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [attachmentToDelete, setAttachmentToDelete] = useState('');\n const [confirmationDialogTitle, setConfirmationDialogTitle] = useState('');\n \n const initialAttachments = useRef>(new Map()).current;\n\n const handleDownloadTemplate = (templateId: string) => () => {\n if (role === RoleEnum.Admin || \n role === RoleEnum.CompetitionCoordinator || \n submissionStage.submissionId === undefined) {\n window.open(`${API_URL}/AttachmentSpecimen/${templateId}`);\n } else {\n window.open(`${API_URL}/AttachmentSpecimen/${templateId}/${submissionStage.submissionId}/${submissionStage.id}`);\n }\n };\n\n const handleFileChange = (templateId: string, file: File | null) => {\n setAttachmentsToUpload(map => new Map(map.set(templateId, file)));\n };\n\n const handleAdminFileChange = (attachmentId: string, file: File | null) => {\n setAttachmentsToUpdate(map => new Map(map.set(attachmentId, file)));\n };\n\n const fetchStageAttachments = () => {\n (async () => {\n try {\n if (docsAssignedTo) {\n const { data: { result: stageAttachments } } = await StageService.getStageAttachmentsForRole(submissionStage.id, docsAssignedTo);\n setStageAttachments(stageAttachments);\n onStageAttachmentsChanged && onStageAttachmentsChanged(stageAttachments);\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n useEffect(fetchStageAttachments, [submissionStage]);\n\n const handleDownloadAttachment = (id: string) => () => {\n window.open(`${API_URL}/Attachment/${id}`);\n };\n\n const saveAttachments = async () => {\n const promises: Promise>[] = [StageService.submitAttachments(submissionStage.id)];\n\n attachmentsToUpload.forEach((file, templateId) => {\n if (!file) {\n return;\n }\n const formData = new FormData();\n\n formData.append(\"file\", file);\n formData.append(\"parentId\", submissionStage.submissionId);\n formData.append(\"templateId\", templateId);\n formData.append('status', AttachmentStatusEnum.Submitted.toString());\n\n promises.push(StageService.addFile(submissionStage.id, formData));\n });\n\n return Promise.all(promises);\n };\n\n const saveFiles = () => {\n (async () => {\n if (!submitting || autosaving) {\n return;\n }\n\n try {\n await saveAttachments();\n\n onChanged && onChanged();\n }\n catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setSubmitting(false);\n }\n })();\n };\n\n useEffect(saveFiles, [submitting, autosaving]);\n\n const handleFormSubmit = () => {\n setShouldValidateFiles(true);\n if (!hasValidDocuments()) {\n return;\n }\n\n setServerError(\"\");\n setSubmitting(true);\n };\n\n const handleAutosave = async (\n data?: any,\n attachmentsToAdd?: { key: string; value: File | null; }[],\n mark?: number\n ) => {\n setAutosaving(true);\n\n try {\n await autosaveAttachments(attachmentsToAdd);\n }\n finally {\n setAutosaving(false);\n }\n };\n\n const autosaveAttachments = async (\n attachmentsToAdd?: { key: string; value: File | null; }[]\n ) => {\n if (!attachmentsToAdd) {\n return;\n }\n\n const promises: Promise>[] = [];\n\n attachmentsToAdd.forEach(file => {\n if (!file.value) {\n return;\n }\n\n const formData = new FormData();\n\n formData.append('file', file.value);\n formData.append('parentId', submissionStage.submissionId);\n formData.append('templateId', file.key);\n formData.append('status', AttachmentStatusEnum.Autosaved.toString());\n\n promises.push(StageService.addFile(submissionStage.id, formData));\n });\n\n await Promise.all(promises);\n\n if (promises.length) {\n onChanged && onChanged();\n setAttachmentsToUpload(map => {\n attachmentsToAdd.forEach(attachment => {\n map.delete(attachment.key);\n });\n return map;\n });\n }\n };\n\n const updateAttachments = async () => {\n const promises: Promise>[] = [];\n\n attachmentsToUpdate.forEach((file, attachmentId) => {\n if (!file) {\n return;\n }\n const formData = new FormData();\n\n formData.append(\"file\", file);\n formData.append(\"parentId\", submissionStage.submissionId);\n\n promises.push(StageService.updateFile(attachmentId, formData));\n });\n\n return Promise.all(promises);\n };\n\n const updateFiles = () => {\n (async () => {\n setSaving(true);\n try {\n await updateAttachments();\n\n onChanged && onChanged();\n }\n catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setSaving(false);\n }\n })();\n };\n\n const hasValidDocuments = () => {\n for (const attachment of stageAttachments) {\n if (\n attachment.role === role && (\n !attachmentsToUpload.get(attachment.templateId) &&\n !attachment.attachments.length &&\n attachment.isRequired === true\n )\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n const deleteFile = async (id: string) => {\n await StageService.removeFile(id);\n\n fetchStageAttachments();\n };\n\n const handleClose = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && attachmentToDelete && await deleteFile(attachmentToDelete);\n setAttachmentToDelete('');\n })()\n };\n\n const handleAttachmentDelete = (id: string) => async () => {\n const dialogTitle = t('confirmAttachmentTemplateDeletion');\n setConfirmationDialogTitle(dialogTitle);\n setAttachmentToDelete(id);\n setIsConfirmDialogOpen(true);\n };\n\n const renderDownloadButton = (\n attachment: Attachment,\n templateName: string,\n displaySenderName?: boolean\n ): JSX.Element => {\n const senderFullName = displaySenderName ? ` (${attachment.senderFirstName} ${attachment.senderLastName})` : '';\n\n return (\n \n {t('downloadDocument')} {templateName}{senderFullName}\n
\n );\n };\n\n useEffect(() => {\n setDuplicateFileNames([]);\n \n if (stageAttachments) {\n const duplicates = getDuplicateSubmissionAttachments(stageAttachments, attachmentsToUpload);\n setDuplicateFileNames(duplicates);\n }\n }, [attachmentsToUpload, stageAttachments]);\n\n const hasAttachmentsToSubmit = () => {\n const hasAttachmentsToUpload = Array.from(attachmentsToUpload).some(([templateId, file]) => Boolean(file));\n const hasAutosavedAttachments = stageAttachments.some(attachment => attachment.attachments.some(attach => attach.status === AttachmentStatusEnum.Autosaved));\n \n return hasAttachmentsToUpload || hasAutosavedAttachments;\n }\n\n const hasAttachmentsToUpdate = () =>\n Array.from(attachmentsToUpdate).some(([templateId, file]) => Boolean(file));\n\n const renderSubmitButton = (): JSX.Element => {\n return (\n <>\n {readonly ? \n (role === RoleEnum.Admin || role === RoleEnum.CompetitionCoordinator) &&\n Boolean(stageAttachments.length) && (\n
\n \n {t(\"save\")}\n \n
\n ) : (\n
\n \n {t(\"send\")}\n \n
{t(\"requiredInfo\")}
\n
\n )}\n \n );\n };\n\n const getNoDocumentationMessage = (): string => {\n switch (docsAssignedTo) {\n case RoleEnum.Author:\n return t('noAuthorDocumentation');\n case RoleEnum.Reviewer:\n return t('noReviewerDocumentation');\n default:\n return '';\n }\n };\n\n return (\n <>\n {Boolean(duplicateAttachments.length) && \n (role === RoleEnum.Author && docsAssignedTo === RoleEnum.Author || \n role === RoleEnum.Reviewer && docsAssignedTo == RoleEnum.Reviewer) && (\n \n {duplicateAttachments.map(attachment => (\n
\n {t('duplicatedFileInfo')\n .replace('{0}', attachment.fileName)\n .replace('{1}', attachment.templateNames.length.toString())\n .replace('{2}', attachment.templateNames.map(a => `\"${a}\"`).join(', '))}\n
\n ))}\n
\n )}\n
\n {stageAttachments.length ? (\n <>\n {stageAttachments.map((attachment) => {\n const shouldRenderMiddleColumn = attachment.hasSpecimenFile && showSpecimen;\n\n return (\n \n {(role === RoleEnum.Admin || role === RoleEnum.CompetitionCoordinator) ? (\n \n \n
{attachment.templateName}
\n
\n {attachment.attachments.length ? (\n \n {attachment.attachments.map(attach => (\n <>\n \n {renderDownloadButton(attach, attachment.templateName, true)}\n \n \n {' '}\n handleAdminFileChange(attach.id, value)}\n />\n \n \n ))}\n \n ) : (\n \n {t('none')}\n \n )}\n
\n ) : (\n <>\n \n \n
\n {attachment.templateName}\n
\n
\n\n {shouldRenderMiddleColumn && (\n \n
\n \n {t(\"downloadTemplate\")} {attachment.templateName}\n \n \n
\n
\n )}\n\n \n
\n {!attachment.attachments.length ? (\n readonly ? (\n {t(\"none\")}\n ) : (\n handleFileChange(attachment.templateId, value)}\n />\n )\n ) : (\n <>\n {(role === RoleEnum.Reviewer || role === RoleEnum.Author) && (\n renderDownloadButton(attachment.attachments[0], attachment.templateName)\n )}\n\n {(role === RoleEnum.BoardMember ||\n role === RoleEnum.FinanceCoordinator ||\n role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember) && (\n attachment.attachments.map(attach =>\n renderDownloadButton(attach, attachment.templateName, true)\n )\n )}\n\n {readonly ? \n null : (\n \n {t(\"delete\")}\n \n
\n )}\n \n )}\n
\n \n \n \n )}\n \n );\n })}\n\n {!readonly && (role === RoleEnum.Author || role === RoleEnum.Reviewer) && (\n \n )}\n \n ) : (\n
\n {getNoDocumentationMessage()}\n
\n )}\n\n {renderSubmitButton()}\n \n handleClose(confirmed)} dialogTitle={confirmationDialogTitle} />\n \n );\n};\n\nexport const SubmissionStageDocumentationRow = withStyles(styles)(SubmissionStageDocumentationRowComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { RootState } from '../store/rootReducer';\nimport { SubmissionStage } from '../shared/types/SubmissionStage';\nimport { StageService } from '../services/Stage.service';\nimport { BoxSection } from './BoxSection';\nimport { SubmissionStageDocumentationRow } from './SubmissionStageDocumentationRow';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\n\nconst styles = () => createStyles({\n root: {\n marginBottom: 20\n }\n});\n\ntype Props = WithStyles & {\n submissionId: string;\n onChanged?: () => void;\n selectedStage?: SubmissionStage;\n onStageAttachmentsChanged?: (attachments: SubmissionAttachment[]) => void;\n};\n\nconst SubmissionStagesDocumentationComponent: React.FunctionComponent = ({\n selectedStage,\n classes,\n onChanged,\n onStageAttachmentsChanged\n}) => {\n const { role } = useSelector((state: RootState) => state.user);\n const { userId } = useSelector((state: RootState) => state.user);\n\n const [canUserReviewStage, setCanUserReviewStage] = useState(false);\n\n const checkIfUserCanReviewStage = () => {\n (async () => {\n try {\n if (selectedStage && role === RoleEnum.Reviewer) {\n const {\n data: { result },\n } = await StageService.canReviewStage(selectedStage?.id, userId);\n setCanUserReviewStage(result);\n }\n } catch (error) {}\n })();\n };\n\n useEffect(checkIfUserCanReviewStage, [selectedStage])\n\n const { t } = useTranslator();\n return (\n
\n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator ||\n role === RoleEnum.BoardMember ||\n role === RoleEnum.FinanceCoordinator ||\n role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember) && (\n selectedStage && (\n
\n \n {selectedStage && (\n \n )}\n \n \n {selectedStage && (\n \n )}\n \n
\n )\n )}\n\n {role === RoleEnum.Author && (\n selectedStage && (\n \n \n \n )\n )}\n\n {role === RoleEnum.Reviewer && (\n selectedStage && canUserReviewStage && (\n
\n \n \n \n {selectedStage.isActive ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n )\n )}\n
\n );\n};\n\nexport const SubmissionStagesDocumentation = withStyles(styles)(SubmissionStagesDocumentationComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Slider, Tooltip, Theme } from '@material-ui/core';\nimport { ErrorOutlineRounded } from '@material-ui/icons';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { FormError } from './FormError';\nimport { CompetitionTypeEnum } from '../shared/enums/CompetitionTypeEnum';\nimport { BoxLoader } from './BoxLoader';\nimport { Mark } from '../shared/types/Mark';\nimport { MarkStatusEnum } from '../shared/enums/MarkStatusEnum';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n markButton: {\n alignSelf: 'flex-end',\n marginTop: 10,\n },\n error: {\n marginTop: 10,\n marginBottom: 0,\n color: palette.error.main\n },\n errorIcon: {\n fontSize: '1.25rem',\n top: '5px',\n position: 'relative'\n },\n success: {\n marginTop: 10,\n marginBottom: 0,\n },\n slider: {\n marginTop: 10,\n },\n });\n\ntype Props = WithStyles & {\n competitionType: CompetitionTypeEnum;\n shouldValidate: boolean;\n serverError: string;\n loading: boolean;\n mark: Mark;\n onChange: (value: number | Array) => void;\n};\n\nconst ReviewSubmissionComponent: React.FunctionComponent = ({\n classes,\n competitionType,\n shouldValidate,\n serverError,\n loading,\n mark,\n onChange\n}) => {\n const initValue: Mark = {\n id: '',\n reviewer: { firstName: '', lastName: '' },\n submissionId: '',\n reviewerId: '',\n mark: 0,\n status: MarkStatusEnum.Invalid\n };\n const min = 0;\n const max = competitionType === CompetitionTypeEnum.ScholarshipProgram ? 100 : 10;\n const step = 1;\n\n const { t } = useTranslator();\n\n return loading ? (\n serverError ? (\n \n ) : (\n \n )\n ) : (\n
\n (\n \n {props.children}\n \n )}\n value={mark.mark}\n defaultValue={initValue.mark}\n step={step}\n min={min}\n max={max}\n valueLabelDisplay='on'\n onChange={(e, value) => onChange(value)}\n />\n\n {shouldValidate && mark.mark === 0 && (\n
\n {t('markRequired')}\n
\n )}\n
\n );\n};\n\nexport const ReviewSubmission = withStyles(styles)(ReviewSubmissionComponent);\n","export enum NotificationTypeEnum {\n Invalid = 0,\n UserRegistered = 1,\n UserGenerated = 2,\n UserPasswordChanged = 3,\n UserPasswordReset = 4,\n EmailConfirmationCodeGenerated = 5,\n CommentAdded = 6,\n SubmissionCreated = 7,\n SubmissionRejected = 8,\n SubmissionAccepted = 9,\n SubmissionClosed = 10,\n SubmissionReviewerAssigned = 11,\n SubmissionCreatedUser = 12,\n OtherAttachmentAdded = 13,\n UserPasswordResetByEmail = 14\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid, Divider } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport moment from 'moment';\n\nimport { useTranslator, TFunction } from '../i18n/useTranslator';\nimport { BoxSection } from './BoxSection';\nimport { LabelValue } from './LabelValue';\nimport { SubmissionDocumentation } from './SubmissionDocumentation';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { Submission } from '../shared/types/Submission';\nimport { DateService } from '../services/Date.service';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { FormError } from './FormError';\nimport { Button } from './Button';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { ErrorService } from '../services/Error.service';\nimport { Discussion } from './Discussion';\nimport { Notes } from './Notes';\nimport { Mark } from '../shared/types/Mark';\nimport { getSubmissionStatusLabel } from '../shared/helpers/getSubmissionStatusLabel';\nimport { SubmissionForm } from './forms/SubmissionForm';\nimport { Form } from \"./Form\";\nimport { SubmissionStage } from '../shared/types/SubmissionStage';\nimport { FormContent } from \"./FormContent\";\nimport * as Yup from 'yup';\nimport { projectName, unitInfo, academicTitle, estimatedFinishTime, estimatedFunds } from '../shared/validators';\nimport { SubmissionStagesDocumentation } from './SubmissionStagesDocumentation';\nimport { BoxHeader } from './BoxHeader';\nimport { ReviewSubmission } from './ReviewSubmission';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { CompetitionCategoryEnum } from '../shared/enums/CompetitionCategoryEnum';\nimport { ConfirmationDialog } from './ConfirmationDialog';\nimport { AxiosResponse } from 'axios';\nimport { Autosave } from './Autosave';\nimport { AttachmentStatusEnum } from '../shared/enums/AttachmentStatusEnum';\nimport { MarkStatusEnum } from '../shared/enums/MarkStatusEnum';\n\nconst styles = () =>\n createStyles({ \n root: {\n display: 'flex',\n flexDirection: 'column',\n }, \n actionsBox: {\n marginBottom: 20,\n },\n section: {}, \n row: {\n marginBottom: 12,\n },\n sendDocumentsButton: {\n alignSelf: 'flex-end',\n marginTop: 20,\n },\n error: {\n marginTop: 10,\n marginBottom: 0,\n },\n sectionsContainer: {\n marginBottom: 20,\n }, \n topError: {\n marginBottom: 30,\n },\n mark: {\n width: '50%',\n marginTop: 30\n }\n });\n\ntype SubmissionDetailsForm = {\n projectName: string;\n unitInfo: string;\n estimatedFinishTime?: number;\n estimatedFunds?: number;\n academicTitle: string;\n requiredConsent: string;\n acceptedRequiredConsent: boolean;\n};\n\ntype AttachmentType = 'author' | 'reviewer';\n \ntype Props = WithStyles & {\n submission: Submission;\n authorAttachments: Array;\n reviewerAttachments: Array;\n marks?: Array;\n summedMarks?: number;\n onChanged?: () => void;\n activeStage?: SubmissionStage;\n canReviewSubmission? : boolean;\n onStageAttachmentsChanged?: (attachments: SubmissionAttachment[]) => void;\n};\n\nconst SubmissionDetailsComponent: React.FunctionComponent = ({\n classes,\n reviewerAttachments,\n authorAttachments,\n submission,\n marks,\n summedMarks,\n onChanged,\n activeStage,\n canReviewSubmission,\n onStageAttachmentsChanged\n}) => {\n const defaultMark: Mark = {\n id: '',\n reviewer: { firstName: '', lastName: '' },\n submissionId: '',\n reviewerId: '',\n mark: 0,\n status: MarkStatusEnum.Invalid\n };\n\n const { role } = useSelector((state: RootState) => state.user);\n\n const [shouldValidateFiles, setShouldValidateFiles] = useState(false);\n const [shouldValidateMark, setShouldValidateMark] = useState(false);\n const [serverError, setServerError] = useState('');\n const [savingAuthorAttachments, setSavingAuthorAttachments] = useState(false);\n const [savingReviewerAttachments, setSavingReviewerAttachments] = useState(false);\n const [markServerError, setMarkServerError] = useState('');\n const [mark, setMark] = useState(defaultMark);\n const [initialMark, setInitialMark] = useState();\n const [markLoading, setMarkLoading] = useState(true);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [typeOfTemplatesToUpdate, setTypeOfTemplatesToUpdate] = useState();\n\n const [attachmentsToUpload, setAttachmentsToUpload] = useState>(new Map());\n const [authorAttachmentsToUpdate, setAuthorAttachmentsToUpdate] = useState>(new Map());\n const [reviewerAttachmentsToUpdate, setReviewerAttachmentsToUpdate] = useState>(new Map());\n const [autosaving, setAutosaving] = useState(false);\n const [submittingReview, setSubmittingReview] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const initialAttachments = useRef>(new Map()).current;\n\n const initialValues: SubmissionDetailsForm = {\n projectName: submission.project.title,\n unitInfo: submission.project.scientificFacility,\n estimatedFinishTime: submission.project.duration,\n estimatedFunds: submission.project.cost,\n academicTitle: submission.project.academicTitle,\n requiredConsent: submission.project.requiredConsent,\n acceptedRequiredConsent: submission.project.acceptedRequiredConsent\n };\n \n const getAttachmentsByRole = (): SubmissionAttachment[] => {\n switch (role) {\n case RoleEnum.Author:\n return authorAttachments;\n case RoleEnum.Reviewer:\n return reviewerAttachments;\n default:\n return [];\n }\n };\n\n const attachmentsByRole = getAttachmentsByRole();\n\n const handleFileChange = (templateId: string, file: File | null) => {\n setAttachmentsToUpload(map => new Map(map.set(templateId, file)));\n };\n\n const handleAuthorFileChange = (attachmentId: string, file: File | null) => {\n setAuthorAttachmentsToUpdate(map => new Map(map.set(attachmentId, file)));\n };\n\n const handleReviewerFileChange = (attachmentId: string, file: File | null) => {\n setReviewerAttachmentsToUpdate(map => new Map(map.set(attachmentId, file)));\n };\n\n const handleMarkChange = (value: number | number[]) => {\n setMark(mark => ({\n ...mark,\n mark: value as number || defaultMark.mark\n }));\n };\n \n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n projectName: projectName(t),\n unitInfo: unitInfo(t),\n academicTitle: academicTitle(t),\n estimatedFinishTime: estimatedFinishTime(t, submission.competition.category === CompetitionCategoryEnum.Project),\n estimatedFunds: estimatedFunds(t, submission.competition.category === CompetitionCategoryEnum.Project)\n });\n\n const hasAttachmentsToSubmit = (docsAssignedTo: RoleEnum) => {\n let attachments: SubmissionAttachment[] = [];\n switch (docsAssignedTo) {\n case RoleEnum.Author:\n attachments = authorAttachments;\n break;\n case RoleEnum.Reviewer:\n attachments = reviewerAttachments;\n break;\n }\n\n const hasAttachmentsToUpload = Array.from(attachmentsToUpload).some(([templateId, file]) => Boolean(file));\n const hasAutosavedAttachments = attachments.some(attachment => attachment.attachments.some(attach => attach.status === AttachmentStatusEnum.Autosaved));\n \n return hasAttachmentsToUpload || hasAutosavedAttachments;\n };\n\n const hasAttachmentsToUpdate = (attachmentsToUpdate: Map) =>\n Array.from(attachmentsToUpdate).some(([templateId, file]) => Boolean(file));\n\n const isMarkToSubmit = () => {\n return mark.mark && (mark.mark !== initialMark?.mark || mark.status === MarkStatusEnum.Autosaved);\n };\n\n const hasValidDocuments = () => {\n for (const attachment of attachmentsByRole) {\n if (attachment.role === role && !attachmentsToUpload.get(attachment.templateId) &&\n !attachment.attachments.length && attachment.isRequired === true) {\n \n return false;\n }\n }\n\n return true;\n };\n\n const hasValidMark = () => {\n return mark?.mark !== 0;\n }\n\n const saveAttachments = async (submissionId: Submission[\"id\"]) => {\n const promises: Promise>[] = [SubmissionService.submitAttachments(submissionId)];\n attachmentsToUpload.forEach((file, templateId) =>{\n if (!file) {\n return;\n }\n const formData = new FormData();\n\n formData.append(\"file\", file);\n formData.append(\"parentId\", submissionId);\n formData.append(\"templateId\", templateId);\n formData.append('status', AttachmentStatusEnum.Submitted.toString());\n\n promises.push(SubmissionService.addFile(formData));\n });\n\n return Promise.all(promises);\n };\n\n const saveMark = async () => {\n if (!mark) {\n return;\n }\n \n const formData = new FormData();\n formData.append(\"submissionId\", submission.id);\n formData.append('mark', mark.mark?.toString() ?? '0');\n formData.append('status', MarkStatusEnum.Submitted.toString());\n\n await SubmissionService.mark(formData);\n };\n\n const updateAttachments = async (attachmentsToUpdate: Map, type: 'author' | 'reviewer') => {\n try {\n const promises: Promise>[] = [];\n\n attachmentsToUpdate.forEach((file, attachmentId) => {\n if (!file) {\n return;\n }\n const formData = new FormData();\n\n formData.append(\"file\", file);\n formData.append(\"parentId\", submission.id);\n\n promises.push(SubmissionService.updateFile(attachmentId, formData));\n });\n\n await Promise.all(promises);\n\n onChanged && onChanged();\n }\n catch (error) {\n setServerError(ErrorService.parseError(error));\n } finally {\n setSavingAttachments(false, type);\n }\n };\n\n const handleSaveReview = () => {\n (async () => {\n if (!submittingReview || autosaving) {\n return;\n }\n\n try {\n await saveAttachments(submission.id);\n await saveMark();\n\n onChanged && onChanged();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setSubmittingReview(false);\n }\n })();\n };\n\n useEffect(handleSaveReview, [submittingReview, autosaving]);\n\n const handleReviewerSubmit = () => {\n setShouldValidateFiles(true);\n setShouldValidateMark(true);\n if (!hasValidDocuments() || !hasValidMark()) {\n return;\n }\n\n setServerError(\"\");\n setSubmittingReview(true);\n };\n\n const handleSaveSubmission = () => {\n (async () => {\n if (!submitting || autosaving) {\n return;\n }\n\n try {\n await saveAttachments(submission.id);\n\n onChanged && onChanged();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setSubmitting(false);\n }\n })();\n };\n\n useEffect(handleSaveSubmission, [submitting, autosaving]);\n\n const handleFormSubmit = () => {\n setShouldValidateFiles(true);\n if (!hasValidDocuments()) {\n return;\n }\n\n setServerError(\"\");\n setSubmitting(true);\n };\n\n const setSavingAttachments = (value: boolean, type: AttachmentType): void => {\n type === 'author' ?\n setSavingAuthorAttachments(value)\n : setSavingReviewerAttachments(value);\n };\n\n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n if (!typeOfTemplatesToUpdate) return;\n\n const attachmentsToUpdate = typeOfTemplatesToUpdate === 'author' ? \n authorAttachmentsToUpdate \n : reviewerAttachmentsToUpdate;\n \n if (confirmed) {\n setSavingAttachments(true, typeOfTemplatesToUpdate);\n await updateAttachments(attachmentsToUpdate, typeOfTemplatesToUpdate);\n }\n \n setTypeOfTemplatesToUpdate(undefined);\n })()\n };\n\n const handleUpdateAttachments = async (attachmentsToUpdate: Map, type: AttachmentType) => {\n const allAttachments = authorAttachments.concat(reviewerAttachments);\n const attachmentsForAllReviews = new Array();\n attachmentsToUpdate.forEach((file, attachmentId) => {\n if (!file) {\n return;\n }\n\n var attachment = allAttachments.find(attachment => Boolean(attachment.attachments.find(attach => attach.id === attachmentId)));\n attachment?.isForAllReviews && attachmentsForAllReviews.push(attachment);\n });\n\n if (attachmentsForAllReviews.length) {\n setTypeOfTemplatesToUpdate(type);\n setIsConfirmDialogOpen(true);\n }\n else {\n setServerError(\"\");\n setSavingAttachments(true, type);\n\n await updateAttachments(attachmentsToUpdate, type);\n }\n };\n\n const getProjectNameFieldLabel = () => \n submission.competition.category === CompetitionCategoryEnum.Person ?\n t('prizeCandidate') : t('projectName');\n\n const getUnitInfoFieldLabel = () => \n submission.competition.category === CompetitionCategoryEnum.Person ?\n t('candidateUnitInfo') : t('unitInfo');\n\n const handleAutosave = async (\n data?: SubmissionDetailsForm,\n attachmentsToAdd?: { key: string; value: File | null; }[],\n mark?: number\n ) => {\n setAutosaving(true);\n\n try {\n await autosaveAttachments(attachmentsToAdd);\n await autosaveMark(mark);\n }\n finally {\n setAutosaving(false);\n }\n };\n\n const autosaveAttachments = async (\n attachmentsToAdd?: { key: string; value: File | null; }[]\n ) => {\n if (!attachmentsToAdd) {\n return;\n }\n\n const promises: Promise>[] = [];\n\n attachmentsToAdd.forEach(file => {\n if (!file.value) {\n return;\n }\n\n const formData = new FormData();\n\n formData.append('file', file.value);\n formData.append('parentId', submission.id);\n formData.append('templateId', file.key);\n formData.append('status', AttachmentStatusEnum.Autosaved.toString());\n\n promises.push(SubmissionService.addFile(formData));\n });\n\n await Promise.all(promises);\n\n if (promises.length) {\n onChanged && onChanged();\n setAttachmentsToUpload(map => {\n attachmentsToAdd.forEach(attachment => {\n map.delete(attachment.key);\n });\n return map;\n });\n }\n };\n\n const autosaveMark = async (mark?: number) => {\n if ((!mark && mark !== 0) || role !== RoleEnum.Reviewer) {\n return;\n }\n\n const formData = new FormData();\n formData.append(\"submissionId\", submission.id);\n formData.append('mark', mark?.toString() ?? '0');\n formData.append('status', MarkStatusEnum.Autosaved.toString());\n\n await SubmissionService.mark(formData);\n\n fetchMark();\n };\n\n const fetchMark = () => {\n (async () => {\n if (role !== RoleEnum.Reviewer) {\n return;\n }\n \n setMarkLoading(true);\n setMarkServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getMark(submission.id);\n \n if (result) {\n setMark(result);\n setInitialMark(result);\n }\n else {\n setInitialMark(defaultMark);\n }\n } catch (error) {\n setMarkServerError(ErrorService.parseError(error));\n }\n\n setMarkLoading(false);\n })();\n };\n\n useEffect(fetchMark, []);\n\n return ( \n
\n
\n {marks && (\n \n {marks.length ? (\n \n {summedMarks && (\n \n \n \n )}\n {marks.map((mark) => (\n <>\n \n \n \n \n ))}\n \n ) : (\n
{t(\"noMarks\")}
\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 {(role !== RoleEnum.Author || (role === RoleEnum.Author && submission.competition.isActive === false)) && (\n <>\n \n \n \n \n \n \n \n \n \n \n\n {submission.competition.category === CompetitionCategoryEnum.Project && ( \n \n \n \n )}\n\n \n \n \n \n \n \n\n {submission.competition.category === CompetitionCategoryEnum.Project && (\n <>\n \n \n \n \n \n \n \n )}\n\n {submission.competition.category === CompetitionCategoryEnum.Person && (\n \n \n \n )}\n \n \n \n )}\n \n {() => (\n \n {role === RoleEnum.Author && submission.competition.isActive === true && (\n \n \n \n \n )}\n {Boolean(authorAttachments.length) && (\n \n )}\n\n {role === RoleEnum.Author && submission.competition.isActive === true && (\n <>\n \n {authorAttachments.some(attachment => !attachment.attachments?.length || attachment.attachments[0].status === AttachmentStatusEnum.Autosaved) && (\n setShouldValidateFiles(true)}\n type=\"submit\"\n >\n {t(\"send\")}\n \n )}\n
\n {t(\"requiredInfo\")}\n
\n\n \n \n )}\n\n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator) && \n handleUpdateAttachments(authorAttachmentsToUpdate, 'author')}\n >\n {t(\"save\")}\n }\n
\n )}\n \n
\n\n {(reviewerAttachments.length || (role === RoleEnum.Reviewer && canReviewSubmission)) && (\n \n {Boolean(reviewerAttachments.length) && (\n \n )}\n\n {role === RoleEnum.Reviewer && canReviewSubmission && submission.status !== SubmissionStatusEnum.Won && (\n
\n \n \n \n {t(\"sendDocuments\")}\n \n
\n {t(\"requiredInfo\")}\n
\n
\n )}\n\n {role === RoleEnum.Reviewer && (\n \n )}\n\n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator) && (\n handleUpdateAttachments(reviewerAttachmentsToUpdate, 'reviewer')}\n >\n {t(\"save\")}\n \n )}\n \n )}\n
\n \n\n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator ||\n role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember) && (\n \n \n \n )}\n\n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator) && (\n \n \n \n )}\n\n \n
\n );\n};\n\nexport const SubmissionDetails = withStyles(styles)(SubmissionDetailsComponent);","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Autocomplete } from './inputs/Autocomplete';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { TextField } from './inputs/TextField';\nimport { UserService } from '../services/User.service';\nimport { User } from '../shared/types/User';\nimport { Button } from './Button';\nimport { Submission } from '../shared/types/Submission';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { List } from './List';\nimport { ListAction } from './ListAction';\nimport { DeleteOutlined } from '@material-ui/icons';\nimport { Message } from './Message';\nimport { ErrorService } from '../services/Error.service';\nimport red from '@material-ui/core/colors/red';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n submissionReviewersListHeader: {\n height: 10\n },\n submissionReviewersList: {\n fontSize: '1rem',\n padding: 10,\n maxWidth: 250\n },\n heading: {\n marginTop: 20,\n textTransform: 'uppercase',\n fontWeight: 600,\n },\n saveButton: {\n alignSelf: 'flex-end',\n marginTop: 10,\n },\n iconDelete: {\n fontSize: 20,\n color: red[500],\n marginLeft: 5\n }\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n forceRefreshReviewersList: number;\n reviewerAttachments: SubmissionAttachment[];\n onSaveHandler: (users: Array) => void;\n};\n\nconst ReviewerAutocompleteComponent: React.FunctionComponent = ({\n classes,\n submissionId,\n reviewerAttachments,\n forceRefreshReviewersList,\n onSaveHandler\n}) => {\n const [serverError, setServerError] = useState('');\n const [reviewers, setReviewers] = useState>([]);\n const [reviewersToSave, setReviewersToSave] = useState>([]);\n const [submissionReviewers, setSubmissionReviewers] = useState>([]);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [userIdToDelete, setUserIdToDelete] = useState('');\n\n const { t } = useTranslator();\n\n const fetchReviewers = () => {\n (async () => {\n setLoading(true);\n\n const {\n data: { result },\n } = await UserService.getReviewers();\n setReviewers(result);\n\n setLoading(false);\n })();\n };\n\n const fetchSubmissionReviewers = async () => {\n const {\n data: { result },\n } = await SubmissionService.getReviewers(submissionId);\n\n setSubmissionReviewers(result);\n };\n\n const handleChange = async (event: React.ChangeEvent<{}>, value: Array) => {\n setReviewersToSave(value);\n };\n\n const handleSaveAction = async () => {\n (async () => {\n setSaving(true);\n await onSaveHandler(reviewersToSave);\n fetchSubmissionReviewers();\n setReviewersToSave([]);\n setSaving(false);\n })();\n };\n\n const init = () => {\n fetchReviewers();\n fetchSubmissionReviewers();\n };\n\n useEffect(init, []);\n useEffect(() => { fetchSubmissionReviewers() }, [forceRefreshReviewersList]);\n\n const deleteReviewer = async () => {\n setServerError('');\n\n try {\n if (submissionId && userIdToDelete){\n await SubmissionService.deleteReviewer(submissionId, userIdToDelete);\n\n fetchSubmissionReviewers();\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n };\n\n const listHeader = [{\n key: 'fullName',\n text: ''\n }, {\n key: 'action',\n text: ''\n }];\n\n const mapRowsToReviewerListRows = () =>\n submissionReviewers.map(reviewer => ({\n id: reviewer.userId,\n items: [{\n key: 'fullName',\n content: `${reviewer.firstName} ${reviewer.lastName}`\n }, {\n key: 'action',\n content: !reviewerAttachments.find(attachment => attachment.attachments.some(attach => attach.senderId === reviewer.userId)) &&\n handleDeleteReviewerClick(reviewer.userId)}\n >\n \n \n }]\n }));\n\n const handleDeleteReviewerClick = (userId: string) => {\n setIsConfirmDialogOpen(true);\n setUserIdToDelete(userId);\n };\n\n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && await deleteReviewer();\n setUserIdToDelete('');\n })()\n };\n\n return (\n
\n \n !submissionReviewers.find((r) => r.userId === reviewer.userId) && !reviewersToSave.find((r) => r.userId === reviewer.userId)\n )}\n noOptionsText={t('noReviewers')}\n getOptionLabel={(option) => `${option.firstName} ${option.lastName}`}\n renderOption={(option) => (\n <>\n \n {option.firstName} {option.lastName}\n \n \n )}\n renderInput={(params) => }\n loading={loading}\n disabled={saving}\n value={reviewersToSave}\n onChange={handleChange}\n />\n \n {Boolean(submissionReviewers.length) && (\n <>\n
{t('attachedReviewers')}
\n \n \n )}\n {serverError && (\n {t(serverError)}\n )}\n\n handleCloseConfirmationDialog(confirmed)}\n dialogTitle={t('confirmReviewerDeletionFromSubmission')}\n />\n
\n );\n};\n\nexport const ReviewerAutocomplete = withStyles(styles)(ReviewerAutocompleteComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, RadioGroup, FormControlLabel, Radio, FormControl } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Button } from './Button';\nimport { ErrorService } from '../services/Error.service';\nimport { FormError } from './FormError';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Submission } from '../shared/types/Submission';\n\nconst styles = () =>\n createStyles({\n error: {\n marginBottom: 10,\n },\n radioGroup: {\n marginBottom: 20,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n fieldset: {\n width: '100%',\n },\n saveButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n onUpdated: () => void;\n};\n\nconst AcceptSubmissionComponent: React.FunctionComponent = ({ classes, submissionId, onUpdated }) => {\n const [serverError, setServerError] = useState('');\n const [saving, setSaving] = useState(false);\n const [value, setValue] = useState(null);\n\n const { t } = useTranslator();\n\n const handleSubmit = async () => {\n if (!value) {\n return;\n }\n\n setSaving(true);\n\n try {\n await SubmissionService.updateStatus(submissionId, value);\n\n onUpdated();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSaving(false);\n };\n\n return (\n
\n
\n \n ) => {\n setServerError('');\n setValue(Number(e.target.value));\n }}\n >\n } label={t('acceptSubmission')} />\n } label={t('rejectSubmission')} />\n \n \n \n \n {t('save')}\n \n \n
\n );\n};\n\nexport const AcceptSubmission = withStyles(styles)(AcceptSubmissionComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, RadioGroup, FormControlLabel, Radio, FormControl } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Button } from './Button';\nimport { ErrorService } from '../services/Error.service';\nimport { FormError } from './FormError';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Submission } from '../shared/types/Submission';\n\nconst styles = () =>\n createStyles({\n root: {},\n error: {\n marginBottom: 10,\n },\n radioGroup: {\n marginBottom: 20,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n fieldset: {\n width: '100%',\n },\n saveButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n onUpdated: () => void;\n};\n\nconst ReviewSubmissionAdminActionsComponent: React.FunctionComponent = ({ classes, submissionId, onUpdated }) => {\n const [serverError, setServerError] = useState('');\n const [saving, setSaving] = useState(false);\n const [value, setValue] = useState(null);\n\n const { t } = useTranslator();\n\n const handleSubmit = async () => {\n if (!value) {\n return;\n }\n\n setSaving(true);\n\n try {\n await SubmissionService.updateStatus(submissionId, value);\n\n onUpdated();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSaving(false);\n };\n\n return (\n
\n
\n \n ) => {\n setServerError('');\n setValue(Number(e.target.value));\n }}\n >\n } label={t('markAsWon')} />\n{/* } label={t('rejectSubmission')} />\n } label={t('closeSubmission')} /> */}\n \n \n \n \n {t('save')}\n \n \n
\n );\n};\n\nexport const ReviewSubmissionAdminActions = withStyles(styles)(ReviewSubmissionAdminActionsComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Autocomplete } from './inputs/Autocomplete';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { TextField } from './inputs/TextField';\nimport { User } from '../shared/types/User';\nimport { Button } from './Button';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n saveButton: {\n alignSelf: 'flex-end',\n marginTop: 10,\n }\n });\n\ntype Props = WithStyles & {\n options: Array;\n onSaveHandler: (users: Array) => void;\n};\n\nconst CustomReviewerAutocompleteComponent: React.FunctionComponent = ({ classes, options, onSaveHandler }) => {\n const [reviewersToSave, setReviewersToSave] = useState>([]);\n const [saving, setSaving] = useState(false);\n\n const { t } = useTranslator();\n\n const handleChange = async (event: React.ChangeEvent<{}>, value: Array) => {\n setReviewersToSave(value);\n };\n\n const handleSaveAction = async () => {\n setSaving(true);\n onSaveHandler(reviewersToSave);\n setReviewersToSave([]);\n setSaving(false);\n };\n\n return (\n
\n `${option.firstName} ${option.lastName}`}\n renderOption={(option) => (\n <>\n \n {option.firstName} {option.lastName}\n \n \n )}\n renderInput={(params) => }\n disabled={saving}\n value={reviewersToSave}\n onChange={handleChange}\n />\n \n
\n );\n};\n\nexport const CustomReviewerAutocomplete = withStyles(styles)(CustomReviewerAutocompleteComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport { List } from './List';\nimport { ListAction } from './ListAction';\nimport { CustomReviewerAutocomplete } from './CustomReviewerAutocomplete';\nimport { User } from '../shared/types/User';\nimport { ErrorService } from '../services/Error.service';\nimport { SuggestedReviewer } from '../shared/types/SuggestedReviewer';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport CheckIcon from \"@material-ui/icons/Check\"\nimport { SuggestedReviewersVisibilityOptions } from '../shared/types/StageVisibilityOptions';\nimport { BoxHeader } from './BoxHeader';\n\nconst styles = () =>\n createStyles({\n box: {\n marginBottom: 20,\n },\n suggestedReviewers: {\n fontSize: '1rem',\n padding: 0\n },\n suggestedReviewersHeader: {\n height: 10\n },\n heading: {\n marginTop: 20,\n textTransform: 'uppercase',\n fontWeight: 600,\n },\n boxHeading: {\n marginBottom: 10,\n textTransform: 'uppercase',\n fontWeight: 600,\n },\n actions: {\n display: 'flex',\n },\n councilMember: {\n fontSize: '13px',\n fontWeight: 'bold'\n }\n });\n\ntype Props = WithStyles & {\n entityId: string;\n blockHeaderText: string;\n listHeaderText: string\n suggestedReviewersVisibilityOpt: SuggestedReviewersVisibilityOptions\n fetchAvailableSuggestedReviewersHandler: (id: string) => any;\n fetchAssignedSuggestedReviewersHandler: (id: string) => any;\n removeSuggestedReviewerHandler: (id: string, userId: string) => any;\n addSuggestedReviewerHandler: (id: string, userId: string) => any;\n acceptSuggestedReviewerHandler: (id: string, userId: string) => any;\n reviewerAcceptedEvent?: (reviewerId: string) => void;\n};\n\nconst SuggestedReviewersComponent: React.FunctionComponent = ({ \n classes,\n entityId,\n blockHeaderText,\n listHeaderText,\n suggestedReviewersVisibilityOpt,\n addSuggestedReviewerHandler, \n removeSuggestedReviewerHandler,\n acceptSuggestedReviewerHandler,\n fetchAvailableSuggestedReviewersHandler,\n fetchAssignedSuggestedReviewersHandler,\n reviewerAcceptedEvent\n}) => {\n\n const { t } = useTranslator();\n\n const [options, setOptions] = useState>([]);\n const [suggestedReviewers, setSuggestedReviewers] = useState>([]);\n const { userId } = useSelector((state: RootState) => state.user);\n const [serverError, setServerError] = useState('');\n\n const handleSave = async (users: Array) => {\n for (const reviewer of users) {\n try {\n await addSuggestedReviewerHandler(entityId, reviewer.userId);\n await fetchAssignedSuggestedReviewers();\n await fetchAvailableSuggestedReviewers();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n }\n };\n\n const fetchAvailableSuggestedReviewers = () => {\n (async () => {\n setServerError('');\n\n if(suggestedReviewersVisibilityOpt.allowSelectSuggestedReviewers) {\n try {\n const {\n data: { result },\n } = await fetchAvailableSuggestedReviewersHandler(entityId);\n \n setOptions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n }\n \n })();\n };\n\n const clearCallback = (userId: string) => {\n (async () => {\n setServerError('');\n try {\n await removeSuggestedReviewerHandler(entityId, userId);\n await fetchAssignedSuggestedReviewers();\n await fetchAvailableSuggestedReviewers();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n }\n\n const fetchAssignedSuggestedReviewers = () => {\n (async () => {\n if (suggestedReviewersVisibilityOpt.showSuggestedReviewersList) {\n setServerError(\"\");\n\n try {\n const {\n data: { result },\n } = await fetchAssignedSuggestedReviewersHandler(entityId);\n\n setSuggestedReviewers(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n }\n })();\n };\n\n const acceptReviewerCallback = (userId: string) => {\n (async () => {\n if (suggestedReviewersVisibilityOpt.allowAcceptSuggestedReviewers) {\n await acceptSuggestedReviewerHandler(entityId, userId);\n await fetchAssignedSuggestedReviewers();\n reviewerAcceptedEvent && reviewerAcceptedEvent(userId);\n }\n })();\n }\n\n const declineReviewerCallback = (userId: string) => {\n (async () => {\n if (suggestedReviewersVisibilityOpt.allowAcceptSuggestedReviewers) {\n await removeSuggestedReviewerHandler(entityId, userId);\n await fetchAssignedSuggestedReviewers();\n }\n })();\n }\n\n const mapRowsToListRows = () => {\n if (suggestedReviewersVisibilityOpt.allowAcceptSuggestedReviewers) {\n return suggestedReviewers.map((suggestedReviewer) => ({\n id: suggestedReviewer.userId,\n items: [\n {\n key: 'fullName',\n content: (\n
\n {`${suggestedReviewer.firstName} ${suggestedReviewer.lastName}`}\n
{`${t(\"suggestedBy\")} ${\n suggestedReviewer.suggestedByFirstName\n } ${suggestedReviewer.suggestedByLastName}`}
\n
\n ),\n },\n {\n key: 'action',\n content:\n
\n \n \n \n \n \n \n
\n },\n ],\n }));\n }\n else if (suggestedReviewersVisibilityOpt.allowSelectSuggestedReviewers) {\n return suggestedReviewers.map((suggestedReviewer) => ({\n id: suggestedReviewer.userId,\n items: [\n {\n key: 'fullName',\n content: `${suggestedReviewer.firstName} ${suggestedReviewer.lastName}`\n },\n {\n key: 'action',\n content: (suggestedReviewer.suggestedByUserId === userId ?\n (\n \n \n ) : null\n ),\n },\n ],\n }));\n }\n else {\n return suggestedReviewers.map((suggestedReviewer) => ({\n id: suggestedReviewer.userId,\n items: [\n {\n key: 'fullName',\n content: `${suggestedReviewer.firstName} ${suggestedReviewer.lastName}`\n },\n {\n key: 'action',\n content: '',\n },\n ],\n }));\n }\n };\n\n const listHeader = [\n {\n key: 'fullName',\n text: '',\n },\n {\n key: 'action',\n text: '',\n pullRight: true,\n },\n ];\n\n useEffect(fetchAssignedSuggestedReviewers, []);\n useEffect(fetchAvailableSuggestedReviewers, []);\n useEffect(fetchAssignedSuggestedReviewers, [entityId]);\n\n return (\n
\n {blockHeaderText ? : null}\n {suggestedReviewersVisibilityOpt.allowSelectSuggestedReviewers ? (\n \n ) : null}\n\n {suggestedReviewersVisibilityOpt.showSuggestedReviewersList && suggestedReviewers.length ? \n (\n <>\n {suggestedReviewersVisibilityOpt.allowSelectSuggestedReviewers && suggestedReviewers.length > 0 ? \n (\n listHeaderText ? () : null\n ) : null}\n \n \n ) : (\n t(\"none\")\n )}\n
\n );\n};\n\nexport const SuggestedReviewers = withStyles(styles)(SuggestedReviewersComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, RadioGroup, FormControlLabel, Radio } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Submission } from '../shared/types/Submission';\nimport { SubmissionStage } from '../shared/types/SubmissionStage';\nimport { Button } from './Button';\nimport { useHistory } from 'react-router-dom';\nimport { List } from './List';\nimport { ListAction } from './ListAction';\nimport { Box } from './Box';\nimport { BorderColorSharp, DeleteOutlined } from '@material-ui/icons';\nimport { CustomReviewerAutocomplete } from './CustomReviewerAutocomplete';\nimport { SuggestedReviewers } from './SuggestedReviewers';\nimport { BoxHeader } from './BoxHeader';\nimport { User } from '../shared/types/User';\nimport { StageVisibilityOptions } from '../shared/types/StageVisibilityOptions';\nimport { SubmissionStageReviewer } from '../shared/types/SubmissionStageReviewer';\nimport { StageService } from '../services/Stage.service';\nimport { ErrorService } from '../services/Error.service';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { BoxSection } from './BoxSection';\nimport red from '@material-ui/core/colors/red';\nimport { Message } from './Message';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = () =>\n createStyles({\n error: {\n marginBottom: 10,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n saveButton: {\n alignSelf: 'flex-end',\n },\n listItem: {\n padding: 5\n },\n listHeader: {\n height: 0\n },\n box: {\n marginTop: 20,\n },\n suggestedReviewers: {\n fontSize: '1rem',\n padding: 10,\n maxWidth: 250\n },\n suggestedReviewersHeader: {\n height: 10\n },\n iconDelete: {\n fontSize: 20,\n color: red[500],\n marginLeft: 5\n }\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n visibilityOptions: StageVisibilityOptions;\n reviewerStageAttachments: SubmissionAttachment[];\n onSelectedValueChanged?: (value: any) => void;\n reviewerAcceptedEvent?: (reviewerId: string) => void;\n};\n\nconst SubmissionStagesComponent: React.FunctionComponent = ({\n classes,\n submissionId,\n visibilityOptions,\n reviewerStageAttachments,\n reviewerAcceptedEvent,\n onSelectedValueChanged}) => {\n const history = useHistory();\n\n const { t } = useTranslator();\n const { role } = useSelector((state: RootState) => state.user);\n const [blockHeader, setBlockHeader] = useState('');\n\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n\n const [stages, setStages] = useState>([]);\n const [selectedStage, setSelectedStage] = useState();\n const [selectedStageReviewers, setSelectedStageReviewers] = useState>([]);\n const [availableReviewers, setAvailableReviewers] = useState>([]);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [userIdToDelete, setUserIdToDelete] = useState('');\n\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const setBlockHeaderValue = async () => {\n if (\n role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember\n ) {\n setBlockHeader(`${t(\"suggestReviewers\")} - ${selectedStage?.name}`);\n }\n else if (role === RoleEnum.Admin || role === RoleEnum.CompetitionCoordinator) {\n setBlockHeader(`${t(\"suggestedReviewers\")} - ${selectedStage?.name}`);\n }\n};\n\n const stagesListHeader = [\n {\n key: 'selectItem',\n text: '',\n },\n {\n key: 'action',\n text: '',\n pullRight: true,\n },\n ];\n\n const reviewersListHeader = [{\n key: 'fullName',\n text: ''\n }, {\n key: 'action',\n text: ''\n }];\n\n const getStageReviewers = async () => {\n setServerError('');\n try { \n if (visibilityOptions.reviewersVisibility?.showReviewersList) {\n const { data: { result } } = await StageService.getStageReviewers(selectedStage!.id);\n setSelectedStageReviewers(result);\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n};\n\n const getAvailableStageReviewers = () => {\n (async () => {\n setServerError('');\n\n try {\n if (visibilityOptions?.reviewersVisibility?.allowReviewersEdition) {\n const { data: { result } } = await StageService.getAvailableStageReviewers(selectedStage!.id);\n setAvailableReviewers(result);\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n const handleStageReviewerSave = async (users: Array) => {\n if (selectedStage?.id) {\n for (const reviewer of users) {\n try {\n const reviewerDto: SubmissionStageReviewer = {\n reviewerId: reviewer.userId,\n submissionId: submissionId,\n stageId: selectedStage?.id,\n };\n await StageService.addStageReviewer(selectedStage?.id, reviewerDto);\n getAvailableStageReviewers();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n }\n getStageReviewers();\n }\n };\n\n const deleteReviewer = async () => {\n setServerError('');\n\n try {\n if (selectedStage?.id && userIdToDelete){\n await StageService.deleteStageReviewer(selectedStage.id, userIdToDelete);\n\n getStageReviewers();\n getAvailableStageReviewers();\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n };\n\n const mapRowsToReviewerListRows = () =>\n selectedStageReviewers.map((stageReviewer) => ({\n id: stageReviewer.userId,\n items: [{\n key: 'fullName',\n content: (`${stageReviewer.firstName} ${stageReviewer.lastName}`)\n }, {\n key: 'action',\n content: !reviewerStageAttachments.find(attachment => attachment.attachments.some(attach => attach.senderId === stageReviewer.userId)) &&\n handleDeleteReviewerClick(stageReviewer.userId)}\n >\n \n \n }],\n }));\n\n const mapRowsToStageListRows = () => \n stages.map((stage) => ({\n id: stage.id,\n items: [\n {\n key: 'selectItem',\n content: (
} \n label={stage.name} />
)\n },\n {\n key: 'action',\n content: (visibilityOptions?.stagesVisibility?.allowStagesEdition ?\n \n \n \n : null\n ),\n },\n ],\n }));\n\n const suggestedReviewerAcceptedEventHandler = (userId: string) => {\n (async () => {\n getStageReviewers();\n getAvailableStageReviewers();\n reviewerAcceptedEvent && reviewerAcceptedEvent(userId);\n })();\n };\n\n const fetchStages = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const { data: { result } } = await StageService.getStages(submissionId);\n setStages(result);\n\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n const onUpdate = async (selectedKey: string) => {\n const stage = stages.find(x => x.id === selectedKey);\n setSelectedStage(stage);\n onSelectedValueChanged && onSelectedValueChanged(stage);\n };\n\n useEffect(() => {\n getStageReviewers();\n getAvailableStageReviewers();\n setBlockHeaderValue();\n }, [selectedStage]);\n \n useEffect(() => {\n const activeStage = stages.find(x => x.isActive);\n if(activeStage) {\n onUpdate(activeStage.id);\n setSelectedStage(activeStage);\n }\n }, [stages]);\n\n const init = () => {\n fetchStages();\n };\n useEffect(init, []);\n\n const handleDeleteReviewerClick = (userId: string) => {\n setIsConfirmDialogOpen(true);\n setUserIdToDelete(userId);\n };\n\n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && await deleteReviewer();\n setUserIdToDelete('');\n })()\n };\n\n return (\n <>\n \n
\n ) => {\n if(visibilityOptions.stagesVisibility?.allowStagesSwitch) {\n onUpdate(e.target.value);\n }\n }}\n >\n {stages.length ? (\n \n ) : (\n t(\"noneStages\")\n )}\n \n\n {visibilityOptions?.stagesVisibility?.allowStagesEdition && (\n {\n history.push(`/${path}/stages/add`, { submissionId });\n }}\n >\n {t(\"addStage\")}\n \n )}\n \n\n {visibilityOptions.reviewersVisibility &&\n (role === RoleEnum.ScientificCouncilMember ||\n role === RoleEnum.CompetitionCommitteeMember ||\n role === RoleEnum.CompetitionJuryMember ||\n role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator ||\n role === RoleEnum.BoardMember) && (\n \n {selectedStage?.name ? (\n \n ) : (\n \n )}\n\n {visibilityOptions.reviewersVisibility.allowReviewersEdition && selectedStage?.name && (\n \n )}\n\n {visibilityOptions.reviewersVisibility.showReviewersList && selectedStageReviewers.length ? (\n \n ) : (\n t(\"none\")\n )}\n \n )}\n\n {visibilityOptions.suggestedReviewersVisibility && (\n \n {visibilityOptions.suggestedReviewersVisibility && selectedStage?.id ? (\n \n ) : (\n t(\"none\")\n )}\n \n )}\n\n {serverError && (\n {t(serverError)}\n )}\n
\n\n handleCloseConfirmationDialog(confirmed)}\n dialogTitle={t('confirmReviewerDeletionFromStage')}\n />\n \n );\n};\n\nexport const SubmissionStages = withStyles(styles)(SubmissionStagesComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Dialog, DialogTitle, DialogActions } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Button } from './Button';\nimport { ErrorService } from '../services/Error.service';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Submission } from '../shared/types/Submission';\nimport { Message } from './Message';\nimport { ConfirmationDialog } from './ConfirmationDialog';\n\nconst styles = () =>\n createStyles({\n restoreSubmissionButtonContainer: {\n textAlign: 'center',\n },\n });\n\ntype Props = WithStyles & {\n submissionId: Submission['id'];\n onUpdated: () => void;\n};\n\nconst RestoreSubmissionComponent: React.FunctionComponent = ({ classes, submissionId, onUpdated }) => {\n const [serverError, setServerError] = useState('');\n const [saving, setSaving] = useState(false);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n\n const { t } = useTranslator();\n\n const handleClose = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && await handleRestoreSubmission();\n })()\n };\n\n const handleRestoreSubmission = async () => {\n setSaving(true);\n\n try {\n await SubmissionService.updateStatus(submissionId, SubmissionStatusEnum.Draft);\n\n onUpdated();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSaving(false);\n };\n\n return (\n
\n
\n setIsConfirmDialogOpen(true)}\n >\n {t('restoreSubmission')}\n \n
\n {serverError && (\n {t(serverError)}\n )}\n\n handleClose(confirmed)} dialogTitle={t('confirmSubmissionRestore')} />\n
\n );\n};\n\nexport const RestoreSubmission = withStyles(styles)(RestoreSubmissionComponent);\n","export const AllowedMimeTypes = {\n AdditionalDocumentation: [\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/pdf'\n ]\n};\n","import React, { useState } from 'react';\n\nimport { createStyles, withStyles, WithStyles, Grid } from '@material-ui/core';\nimport { SubmissionOtherAttachment } from '../shared/types/SubmissionOtherAttachment';\nimport { InsertDriveFileOutlined, CloudDownloadOutlined, DeleteOutlined } from '@material-ui/icons';\nimport classNames from 'classnames';\nimport { API_URL } from '../services/Api.service';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { FileInput } from './inputs/FileInput';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Message } from './Message';\nimport { blue } from '@material-ui/core/colors';\nimport { AllowedMimeTypes } from '../shared/AllowedMimeTypes';\n\nconst styles = () =>\n createStyles({\n icon: {\n color: '#6c757d',\n margin: '4px 15px 7px 0',\n 'font-size': '22px'\n },\n name: {\n 'font-weight': '600',\n overflow: 'hidden',\n 'overflow-wrap': 'break-word',\n 'margin-right': '15px'\n },\n 'action-buttons': {\n margin: '0 0 0 auto',\n 'font-size': '22px'\n },\n 'action-button': {\n width: '40px',\n cursor: 'pointer'\n },\n 'download-icon': {\n color: blue[500]\n },\n 'delete-icon': {\n color: '#dc3545'\n },\n row: {\n display: 'flex',\n 'flex-direction': 'row',\n 'align-items': 'center',\n 'min-height': '56px',\n padding: '8px 20px',\n 'font-size': '13px',\n '&:nth-child(2n)': {\n 'background-color': '#f1f1f1'\n }\n },\n gridContainer: {\n justifyContent: 'flex-end'\n },\n leftContainer: {\n display: 'inline-flex',\n alignItems: 'center'\n },\n badge: {\n marginTop: 10,\n }\n });\n\ntype Props = WithStyles & {\n submissionOtherAttachments?: Array;\n attachmentsToUpdate: { [key in string]: File | null };\n onDelete?: () => void;\n onChange?: (id: string, file: File | null) => void;\n};\n\nconst SubmissionOtherAttachmentsComponent: React.FunctionComponent = ({classes, submissionOtherAttachments, attachmentsToUpdate, onDelete, onChange}) => {\n const [fileMimeTypeError, setFileMimeTypeError] = useState(false);\n const { t } = useTranslator();\n const { userId, role } = useSelector((state: RootState) => state.user);\n\n const handleDownloadAttachment = (id: string) => () => {\n window.open(`${API_URL}/Attachment/${id}`);\n };\n\n const handleAttachmentDelete = (id: string) => async () => {\n await SubmissionService.removeFile(id);\n\n onDelete && onDelete();\n };\n\n const handleAttachmentUpdate = (id: string, file: File | null) => {\n setFileMimeTypeError(false);\n\n if (file && AllowedMimeTypes.AdditionalDocumentation.indexOf(file.type) < 0) {\n setFileMimeTypeError(true);\n return;\n }\n\n onChange && onChange(id, file);\n };\n\n return (\n
\n {fileMimeTypeError ? {t('invalidFileExtension')} {t('allowedExtensions')} : null}\n {submissionOtherAttachments?.map((attachment) => (\n
\n \n \n
\n \n
{attachment.fileName} ({attachment.senderFirstName} {attachment.senderLastName})
\n
\n \n \n \n {userId === attachment.senderId ? (\n \n \n \n ) : null}\n
\n
\n
\n \n {(role === RoleEnum.Admin || role === RoleEnum.CompetitionCoordinator) ? (\n attachment ? ( \n handleAttachmentUpdate(attachment.id, value)}\n allowedMimeTypes={AllowedMimeTypes.AdditionalDocumentation}\n />\n ) : ( \n {t('none')}\n )\n ) : null}\n \n
\n
\n ))}\n
\n \n );\n};\n\nexport const SubmissionOtherAttachments = withStyles(styles)(SubmissionOtherAttachmentsComponent);","import React, { useState } from 'react';\n\nimport { createStyles, withStyles, WithStyles } from '@material-ui/core';\nimport { CloudUploadOutlined } from '@material-ui/icons';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport Dropzone from 'react-dropzone';\nimport { Message } from '../Message';\nimport { blue } from '@material-ui/core/colors';\n\nconst styles = () =>\n createStyles({\n icon: {\n color: blue[500],\n margin: '0 20px 0 0',\n 'font-size': '32px',\n width: '32px',\n height: '32px'\n },\n label: {\n display: 'flex',\n 'flex-direction': 'row',\n padding: '20px',\n 'align-items': 'center'\n },\n 'allowed-extensions': {\n display: 'block',\n color: '#6c757d'\n },\n 'click-control': {\n cursor: 'pointer',\n color: 'inherit',\n '&:hover': {\n 'text-decoration': 'underline'\n }\n }\n });\n\ntype Props = WithStyles & {\n allowedMimeTypes: string[],\n allowedFileExtensionsLabel: string,\n onChange?: (value: File[]) => void;\n};\n\nconst MultipleFileInputComponent: React.FunctionComponent = ({classes, allowedMimeTypes, allowedFileExtensionsLabel, onChange}) => {\n const [fileMimeTypeError, setFileMimeTypeError] = useState(false);\n\n const { t } = useTranslator();\n\n const handleFileChange = (files: File[]) => {\n onChange && onChange(files);\n };\n\n return (\n
\n setFileMimeTypeError(true)} \n onDropAccepted={() => setFileMimeTypeError(false)}>\n {({getRootProps, getInputProps}) => (\n
\n
\n \n
\n \n
\n \n {t('multiFileInputLabelStart')} {t('multiFileInputLabelClickHere')} {t('multiFileInputLabelEnd')}\n \n \n {allowedFileExtensionsLabel}\n \n
\n
\n
\n {fileMimeTypeError ? {t('invalidFileExtension')} {allowedFileExtensionsLabel} : null}\n
\n )}\n
\n
\n );\n};\n\nexport const MultipleFileInput = withStyles(styles)(MultipleFileInputComponent);","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Box } from './Box';\nimport { useTranslator } from '../i18n/useTranslator';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../store/rootReducer';\nimport { SubmissionOtherAttachments } from './SubmissionOtherAttachments';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { BoxSection } from './BoxSection';\nimport { MultipleFileInput } from './inputs/MultipleFileInput';\nimport { keyBy, mapValues } from 'lodash';\nimport { SubmissionOtherAttachment } from '../shared/types/SubmissionOtherAttachment';\nimport { ErrorService } from '../services/Error.service';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { Button } from './Button';\nimport { BoxLoader } from './BoxLoader';\nimport { Submission } from '../shared/types/Submission';\nimport { CompetitionCategoryEnum } from '../shared/enums/CompetitionCategoryEnum';\nimport { AttachmentStatusEnum } from '../shared/enums/AttachmentStatusEnum';\nimport { AllowedMimeTypes } from '../shared/AllowedMimeTypes';\n\nconst styles = () => createStyles({\n sendDocumentsButton: {\n alignSelf: 'flex-end',\n marginTop: 20,\n },\n additionalDocumentationBox: {\n marginTop: 10\n },\n isSticky: {\n position: 'fixed',\n top: 0,\n zIndex: 999\n }\n});\n\ntype Props = WithStyles & {\n submission: Submission;\n onChanged?: () => void;\n};\n\nconst AdditionalDocumentationComponent: React.FunctionComponent = ({ \n classes,\n submission,\n onChanged\n}) => {\n const [serverError, setServerError] = useState('');\n const [saving, setSaving] = useState(false);\n const [otherAttachments, setOtherAttachments] = useState>([]);\n const [otherAttachmentsLoading, setOtherAttachmentsLoading] = useState(false);\n\n const { role } = useSelector((state: RootState) => state.user);\n const { t } = useTranslator();\n\n const [otherAttachmentsToUpdate, setOtherAttachmentsToUpdate] = useState<{\n [key: string]: File | null;\n }>(\n mapValues(\n keyBy(\n otherAttachments,\n \"id\"\n ),\n () => null\n )\n );\n\n const fetchOtherAttachments = () => {\n (async () => {\n try {\n const {\n data: { result: otherAttachments }\n } = await SubmissionService.getOtherAttachments(submission.id);\n \n setOtherAttachments(otherAttachments);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n \n useEffect(() => {\n fetchOtherAttachments();\n }, []);\n \n const handleMultipleFileChange = async (files: File[]) => {\n const promises = [];\n setOtherAttachmentsLoading(true);\n \n for (const file of files) {\n if (file) {\n const formData = new FormData();\n \n formData.append(\"file\", file);\n formData.append(\"parentId\", submission.id);\n formData.append(\"status\", AttachmentStatusEnum.Autosaved.toString())\n \n promises.push(SubmissionService.addFile(formData));\n }\n }\n \n await Promise.all(promises);\n \n fetchOtherAttachments();\n setOtherAttachmentsLoading(false);\n };\n\n const updateOtherAttachments = async () => {\n const promises = [];\n \n const attachmentsArray = Object.keys(otherAttachmentsToUpdate).map((key) => ({\n attachmentId: key,\n file: otherAttachmentsToUpdate[key],\n }));\n \n for (const file of attachmentsArray) {\n if (!file.file) continue;\n \n const formData = new FormData();\n \n formData.append(\"file\", file.file);\n formData.append(\"parentId\", submission.id);\n \n promises.push(SubmissionService.updateFile(file.attachmentId, formData));\n }\n \n await Promise.all(promises);\n };\n\n const handleOtherAttachmentChange = (attachmentId: string, file: File | null) => {\n setOtherAttachmentsToUpdate({\n ...otherAttachmentsToUpdate,\n [attachmentId]: file\n });\n };\n\n const handleSaveOtherAttachments = async () => {\n setServerError(\"\");\n setSaving(true);\n \n try {\n await updateOtherAttachments();\n \n onChanged && onChanged();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n } finally {\n setSaving(false);\n }\n };\n\n const handleSubmitOtherAttachments = async () => {\n setServerError(\"\");\n setSaving(true);\n \n try {\n await SubmissionService.submitOtherAttachments(submission.id);\n \n onChanged && onChanged();\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n } finally {\n setSaving(false);\n }\n };\n\n const getAdditionalDocumentationSectionTitle = () => \n submission.competition.category === CompetitionCategoryEnum.Person ? \n t(\"candidateAdditionalDocumentation\") : t(\"anyFile\");\n \n return (\n role === RoleEnum.Author || role === RoleEnum.Reviewer || otherAttachments.length ? (\n \n \n {role === RoleEnum.Author || role === RoleEnum.Reviewer ? \n : null}\n {otherAttachmentsLoading ? : null}\n \n \n {(role === RoleEnum.Admin ||\n role === RoleEnum.CompetitionCoordinator) ? ( \n Boolean(otherAttachmentsToUpdate[key])).length}\n onClick={handleSaveOtherAttachments}\n >\n {t(\"save\")}\n \n ) : (\n attachment.status !== AttachmentStatusEnum.Autosaved)}\n onClick={handleSubmitOtherAttachments}\n >\n {t(\"save\")}\n \n )}\n \n \n ) : null\n );\n};\n\nexport const AdditionalDocumentation = withStyles(styles)(AdditionalDocumentationComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport partition from 'lodash/partition';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { BoxLoader } from '../../BoxLoader';\nimport { SubmissionDetails } from '../../SubmissionDetails';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SubmissionFull } from '../../../shared/types/SubmissionFull';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { Box } from '../../Box';\nimport { BoxHeader } from '../../BoxHeader';\nimport { ReviewerAutocomplete } from '../../ReviewerAutocomplete';\nimport { AcceptSubmission } from '../../AcceptSubmission';\nimport { SubmissionStatusEnum } from '../../../shared/enums/SubmissionStatusEnum';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { ReviewSubmissionAdminActions } from '../../ReviewSubmissionAdminActions';\nimport { SubmissionStages } from '../../SubmissionStages';\nimport { User } from '../../../shared/types/User';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { SuggestedReviewers } from '../../SuggestedReviewers';\nimport { RestoreSubmission } from '../../RestoreSubmission';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/rootReducer';\nimport { CompetitionCategoryEnum } from '../../../shared/enums/CompetitionCategoryEnum';\nimport { AdditionalDocumentation } from '../../AdditionalDocumentation';\n\nconst styles = () =>\n createStyles({\n box: {\n marginBottom: 20,\n },\n suggestedReviewers: {\n fontSize: '1rem',\n padding: 0\n },\n suggestedReviewersHeader: {\n height: '10px'\n },\n });\n\ntype Props = WithStyles & RouteComponentProps<{ id: string }>;\n\nconst AdminSubmissionDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [reviewerAttachments, setReviewerAttachments] = useState>([]);\n const [selectedStage, setSelectedStage] = useState();\n const [forceRefreshReviewers, setForceRefreshReviewers] = useState(0);\n const [reviewerStageAttachments, setReviewerStageAttachments] = useState>([]);\n\n const { t } = useTranslator();\n\n const { role } = useSelector((state: RootState) => state.user);\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOneFull(match.params.id);\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getAllAttachments(result.submission.id);\n\n const [reviewer, author] = partition(submissionAttachments, { role: RoleEnum.Reviewer });\n\n setReviewerAttachments(reviewer);\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n const handleSave = async (users: Array) => {\n if (submission?.submission.id) {\n for (const reviewer of users) {\n try {\n await SubmissionService.addReviewer(submission?.submission.id, reviewer.userId);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n }\n \n fetchSubmission();\n }\n };\n\n const acceptSuggestedReviewerEventHandler = async (userId: string) => {\n if (submission?.submission.id) {\n setForceRefreshReviewers(forceRefreshReviewers + 1);\n }\n };\n\n const onUpdate = async (selectedStage: SubmissionStage) => {\n setSelectedStage(selectedStage);\n };\n\n const init = () => {\n fetchSubmission();\n };\n useEffect(init, []);\n\n return (\n
\n \n {submission ? (\n \n ) : null}\n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission && (\n \n \n \n \n \n \n \n {(submission.submission.status === SubmissionStatusEnum.Draft ||\n submission.submission.status === SubmissionStatusEnum.Review) && (\n \n \n {submission.submission.status ===\n SubmissionStatusEnum.Draft ? (\n \n ) : null}\n {submission.submission.status ===\n SubmissionStatusEnum.Review ? (\n \n ) : null}\n \n )}\n\n {(submission.submission.status === SubmissionStatusEnum.New ||\n submission.submission.status === SubmissionStatusEnum.Review) && (\n <>\n \n \n \n \n \n \n \n \n )}\n\n {submission.submission.status === SubmissionStatusEnum.Won && (\n
\n \n \n \n
\n )}\n\n {submission.submission.status === SubmissionStatusEnum.Rejected && (\n \n \n \n \n )}\n\n {submission.submission.competition.category === CompetitionCategoryEnum.Person && (\n \n )}\n
\n \n )}\n
\n );\n};\n\nexport const AdminSubmissionDetailsScreen = withStyles(styles)(AdminSubmissionDetailsScreenComponent);\n","import React, { useEffect, useState, useRef } from 'react';\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core';\n\nimport { List } from '../../List';\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Button } from '../../Button';\nimport { Box } from '../../Box';\nimport { UserService } from '../../../services/User.service';\nimport { User } from '../../../shared/types/User';\nimport { Message } from '../../Message';\nimport { ErrorService } from '../../../services/Error.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\nimport { Select } from '../../inputs/Select';\nimport { Competition } from '../../../shared/types/Competition';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { ListAction } from '../../ListAction';\nimport { DeleteOutlined, FormatListBulletedTwoTone, RestoreFromTrashOutlined } from '@material-ui/icons';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { TextField } from '../../inputs/TextField';\nimport { red, blue } from '@material-ui/core/colors';\nimport { ConfirmationDialog } from '../../ConfirmationDialog';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/rootReducer';\n\nconst styles = ({ custom, palette }: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n indent: {\n marginRight: 10\n },\n buttons: {\n display: 'flex',\n 'justify-content': 'flex-end'\n },\n 'button-clear': {\n alignItems: 'right',\n marginRight: 10,\n marginTop: 10,\n backgroundColor: palette.error.main\n },\n 'button-search': {\n alignItems: 'right',\n marginTop: 10\n },\n actionsWrapper: {\n display: 'inline-flex'\n },\n iconDelete: {\n color: red[500],\n marginLeft: 5\n },\n iconRestore: {\n color: blue[500],\n marginLeft: 5\n },\n disableDeleteButton: {\n pointerEvents: 'none',\n '& svg': {\n color: custom.gray.g_4\n }\n }\n });\n\ntype Props = WithStyles;\n\nconst AdminUsersScreenComponent: React.FunctionComponent = ({classes}) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(true);\n const [users, setUsers] = useState>([]);\n const [competitions, setCompetitions] = useState>([]);\n const [selectedRole, setRole] = useState('');\n const [selectedCompetition, setCompetition] = useState('');\n const [searchPhrase, setSearchPhrase] = useState('');\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [userIdToDelete, setUserIdToDelete] = useState('');\n\n const { userId } = useSelector((state: RootState) => state.user)\n const { t } = useTranslator();\n\n const getUserIsDeletedInfo = (isActive: boolean) => isActive ? '' : ` (${t('deleted').toLowerCase()})`;\n\n const listHeader = [{\n key: 'fullName',\n text: t('fullName'),\n }, {\n key: 'role',\n text: t('role'),\n }, {\n key: 'email',\n text: t('email'),\n }, {\n key: 'action',\n text: '',\n pullRight: true,\n }];\n\n const mapRowsToListRows = () =>\n users.map((user) => ({\n id: user.userId,\n items: [{\n key: 'fullName',\n content: {`${user.firstName} ${user.lastName}${getUserIsDeletedInfo(user.isActive)}`},\n }, {\n key: 'role',\n content: t(user.role),\n }, {\n key: 'email',\n content: user.email,\n }, {\n key: 'action',\n content: (\n
\n \n \n \n {user.isActive ? (\n handleDeactivateUserClick(user.userId)}\n to={'#'}\n >\n \n \n ) : (\n handleActivateUserClick(user.userId)}\n to={'#'}\n >\n \n \n )}\n
\n ),\n }]\n }));\n\n const handleActivateUserClick = (userId: string) => {\n (async () => {\n await updateUserIsActiveField(userId, true);\n })()\n };\n\n const updateUserIsActiveField = async (userId: string, value: boolean) => {\n setServerError('');\n\n try {\n if (userId) {\n await UserService.updateUserIsActiveField(userId, value);\n\n fetchUsers();\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n };\n\n const handleDeactivateUserClick = (userId: string) => {\n setIsConfirmDialogOpen(true);\n setUserIdToDelete(userId);\n };\n\n const handleCloseConfirmationDialog = (confirmed: boolean) => {\n (async () => {\n setIsConfirmDialogOpen(false);\n \n confirmed && await updateUserIsActiveField(userIdToDelete, false);\n setUserIdToDelete('');\n })()\n };\n\n const fetchUsers = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await UserService.getAll();\n\n setUsers(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const mapCompetitionToSelect = (): any => {\n let data = competitions.map((competition) => ({\n value: competition.id,\n label: competition.name\n }));\n return data;\n };\n \n const fetchCompetitions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await CompetitionService.getAll();\n\n setCompetitions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchUsers, []);\n useEffect(fetchCompetitions, []);\n\n const filterUsers = async () => {\n if (!selectedRole && !selectedCompetition && !searchPhrase) {\n fetchUsers();\n return;\n }\n (async () => {\n setServerError('');\n setLoading(true);\n \n try {\n const {\n data: { result },\n } = await UserService.getUsersByFilter(selectedRole!, selectedCompetition!, searchPhrase!);\n\n setUsers(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n const clearFilters = async () => {\n setRole('');\n setCompetition('');\n setSearchPhrase('');\n await fetchUsers();\n };\n\n const onEnterPress = async (e: React.KeyboardEvent) => {\n if (e.key.toLowerCase() !== 'enter') {\n return;\n }\n e.preventDefault();\n await filterUsers();\n };\n\n return (\n
\n {t('addUser')}} />\n {serverError ? (\n {t(serverError)}\n ) : (\n {loading ? :\n
\n
\n ) => setCompetition(e.target.value)}\n />\n ) => setRole(e.target.value)}\n />\n ) => setSearchPhrase(e.target.value)}\n onKeyDown={onEnterPress}\n />\n
\n
\n \n \n
\n \n
}\n
\n )}\n\n handleCloseConfirmationDialog(confirmed)}\n dialogTitle={t('confirmUserDeletion')}\n />\n
\n );\n};\n\nexport const AdminUsersScreen = withStyles(styles)(AdminUsersScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { UserForm } from '../../forms/UserForm';\nimport { Box } from '../../Box';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminAddUserScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n \n \n
\n );\n};\n\nexport const AdminAddUserScreen = withStyles(styles)(AdminAddUserScreenComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport moment from 'moment';\nimport { BorderColorSharp } from '@material-ui/icons';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { List } from '../../List';\nimport { Button } from '../../Button';\nimport { Box } from '../../Box';\nimport { ErrorService } from '../../../services/Error.service';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { Competition } from '../../../shared/types/Competition';\nimport { Message } from '../../Message';\nimport { DateService } from '../../../services/Date.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\nimport { ListAction } from '../../ListAction';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminCompetitionsScreenComponent: React.FunctionComponent = ({ classes }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(true);\n const [competitions, setCompetitions] = useState>([]);\n\n const { t } = useTranslator();\n\n const listHeader = [{\n key: 'name',\n text: t('competitionName'),\n }, {\n key: 'startDate',\n text: t('startDate'),\n }, {\n key: 'endDate',\n text: t('endDate'),\n }, {\n key: 'type',\n text: t('competitionType'),\n }, {\n key: 'status',\n text: t('status'),\n }, {\n key: 'action',\n text: '',\n pullRight: true,\n }];\n\n const mapRowsToListRows = () =>\n competitions.map((competition) => ({\n id: competition.id,\n items: [{\n key: 'name',\n content: {competition.name},\n }, {\n key: 'startDate',\n content: moment(competition.startDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'endDate',\n content: moment(competition.endDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'type',\n content: t(`competitionName${competition.type}`),\n }, {\n key: 'status',\n content: competition.isActive ? t('active') : t('inactive'),\n }, {\n key: 'action',\n content:\n \n \n \n }],\n }));\n\n const fetchCompetitions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await CompetitionService.getAll();\n\n setCompetitions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchCompetitions, []);\n\n return (\n
\n {t('addCompetition')}} />\n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : competitions?.length ? (\n \n ) : (\n {t('noCompetitionsFound')}\n )}\n \n )}\n
\n );\n};\n\nexport const AdminCompetitionsScreen = withStyles(styles)(AdminCompetitionsScreenComponent);\n","import { ApiService } from './Api.service';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { NotificationTemplate } from '../shared/types/NotificationTemplate';\nimport { NotificationTemplateFormData } from '../shared/types/NotificationTemplateFormData';\n\nexport const NotificationTemplateService = {\n resource: 'NotificationTemplates',\n getAll: () => {\n return ApiService.get>>(`${NotificationTemplateService.resource}`, { withCredentials: true });\n },\n getOne: (id: NotificationTemplate['id']) => {\n return ApiService.get>(`${NotificationTemplateService.resource}/${id}`, { withCredentials: true });\n },\n update: (id: NotificationTemplate['id'], data: NotificationTemplateFormData) => {\n return ApiService.put>(`${NotificationTemplateService.resource}/${id}`, data, {\n withCredentials: true,\n });\n },\n};\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { List } from '../../List';\nimport { Box } from '../../Box';\nimport { NotificationTemplateService } from '../../../services/NotificationTemplate.service';\nimport { NotificationTemplate } from '../../../shared/types/NotificationTemplate';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminEmailTemplatesScreenComponent: React.FunctionComponent = () => {\n const [loading, setLoading] = useState(true);\n const [templates, setTemplates] = useState>([]);\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'title',\n text: t('templateTitle'),\n },\n ];\n const mapRowsToListRows = () =>\n templates.map((template) => ({\n id: template.id,\n items: [\n {\n key: 'title',\n content: {template.title},\n },\n ],\n }));\n\n const fetchTemplates = () => {\n (async () => {\n try {\n setServerError('');\n setLoading(true);\n\n const {\n data: { result },\n } = await NotificationTemplateService.getAll();\n\n setTemplates(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchTemplates, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n {loading ? : }\n )}\n
\n );\n};\n\nexport const AdminEmailTemplatesScreen = withStyles(styles)(AdminEmailTemplatesScreenComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { emailTemplateTitle, emailTemplateBody } from '../../shared/validators';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { NotificationTemplateService } from '../../services/NotificationTemplate.service';\nimport { NotificationTemplateFormData } from '../../shared/types/NotificationTemplateFormData';\nimport { NotificationTemplate } from '../../shared/types/NotificationTemplate';\n\nconst styles = () =>\n createStyles({\n saveButton: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps & {\n templateId: NotificationTemplate['id'];\n initValues: NotificationTemplateFormData;\n };\n\ntype FormValues = NotificationTemplateFormData;\n\nconst EmailTemplateFormComponent: React.FunctionComponent = ({ classes, history, initValues, templateId }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n title: emailTemplateTitle(t),\n body: emailTemplateBody(t),\n });\n\n const initialValues: FormValues = {\n ...initValues,\n type: 0,\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setSubmitting(true);\n\n try {\n await NotificationTemplateService.update(templateId, values);\n\n history.push('/admin/templates');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ dirty, isSubmitting }) => (\n \n \n\n \n\n \n\n \n \n )}\n
\n );\n};\n\nexport const EmailTemplateForm = withStyles(styles)(withRouter(EmailTemplateFormComponent));\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { NotificationTemplateService } from '../../../services/NotificationTemplate.service';\nimport { NotificationTemplate } from '../../../shared/types/NotificationTemplate';\nimport { EmailTemplateForm } from '../../forms/EmailTemplateForm';\nimport { NotificationTypeEnum } from '../../../shared/enums/NotificationTypeEnum';\n\nconst styles = () =>\n createStyles({\n legendTitle: {\n marginBottom: 10,\n },\n legendItem: {\n fontWeight: 600,\n display: 'inline-block',\n marginBottom: 10,\n '&:not(:last-child)': {\n marginRight: 10,\n },\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n type: string;\n }>;\n\nconst AdminEmailTemplateDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [template, setTemplate] = useState();\n const legends: { [key: string]: Array } = {\n [NotificationTypeEnum.Invalid]: ['ApplicationUrl'],\n [NotificationTypeEnum.UserRegistered]: ['RegisteredUserEmail', 'RegisteredUserName', 'ApplicationUrl'],\n [NotificationTypeEnum.UserGenerated]: ['NewPassword', 'ApplicationUrl'],\n [NotificationTypeEnum.UserPasswordChanged]: ['ApplicationUrl'],\n [NotificationTypeEnum.UserPasswordReset]: ['NewPassword','ApplicationUrl'],\n [NotificationTypeEnum.EmailConfirmationCodeGenerated]: ['ActivationLink', 'ApplicationUrl'],\n [NotificationTypeEnum.CommentAdded]: ['Id', 'SubmissionId', 'Edition', 'CompetitionName', 'Comment', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionCreated]: ['AuthorFirstName', 'AuthorLastName', 'CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionRejected]: ['CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionAccepted]: ['CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionClosed]: ['CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionReviewerAssigned]: ['AuthorFirstName', 'AuthorLastName', 'CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.SubmissionCreatedUser]: ['AuthorFirstName', 'AuthorLastName', 'CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.OtherAttachmentAdded]: ['Id', 'SubmissionId', 'Edition', 'CompetitionName', 'ApplicationUrl'],\n [NotificationTypeEnum.UserPasswordResetByEmail]: ['NewPasswordLink', 'ApplicationUrl']\n };\n\n const { t } = useTranslator();\n\n const fetchTemplate = () => {\n (async () => {\n const {\n data: { result },\n } = await NotificationTemplateService.getOne(match.params.type);\n\n setTemplate(result);\n })();\n };\n\n useEffect(fetchTemplate, []);\n\n return (\n
\n \n {template ? (\n \n \n \n \n \n \n \n \n
Lista dynamicznie uzupełnianych wartości:
\n
\n {legends[template.type].map((item) => (\n [{item}]\n ))}\n {!legends[template.type].length ? {t('none')} : null}\n
\n
\n
\n
\n ) : null}\n
\n );\n};\n\nexport const AdminEmailTemplateDetailsScreen = withStyles(styles)(withRouter(AdminEmailTemplateDetailsScreenComponent));\n","import React, { Fragment } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { List } from './List';\nimport { Link } from './Link';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { getSubmissionStatusLabel } from '../shared/helpers/getSubmissionStatusLabel';\n\nconst styles = ({ custom }: Theme) => createStyles({});\n\ntype Props = WithStyles & {\n rows: Array;\n};\n\nconst CompetitionRankingListComponent: React.FunctionComponent = ({ rows }) => {\n const { t } = useTranslator();\n const { role } = useSelector((state: RootState) => state.user);\n\n const getRolePath = () => {\n switch (role) {\n case RoleEnum.BoardMember:\n return 'board-member';\n case RoleEnum.FinanceCoordinator:\n return 'finance-coordinator';\n case RoleEnum.ScientificCouncilMember:\n return 'scientific-council-member';\n case RoleEnum.CompetitionCommitteeMember:\n return 'competition-committee-member';\n case RoleEnum.CompetitionJuryMember:\n return 'competition-jury-member';\n case RoleEnum.Admin:\n return 'admin';\n case RoleEnum.CompetitionCoordinator:\n return 'competition-coordinator';\n }\n\n return '';\n };\n\n const listHeader = [\n {\n key: 'authorName',\n text: t('authorName'),\n },\n {\n key: 'submissionNumber',\n text: t('submissionNumber'),\n }, \n {\n key: 'projectName',\n text: t('projectName'),\n },\n {\n key: 'unitInfo',\n text: t('unitInfo'),\n },\n {\n key: 'estimatedFinishTime',\n text: t('estimatedFinishTime'),\n },\n {\n key: 'estimatedFunds',\n text: t('estimatedFunds'),\n },\n {\n key: 'reviewers',\n text: t('reviewers'),\n },\n {\n key: 'marksCount',\n text: t('marksCount'),\n },\n {\n key: 'generalMark',\n text: t('generalMark'),\n },\n {\n key: 'status',\n text: t('status'),\n }, \n ];\n\n const mapRowsToListRows = () =>\n rows.map((row) => ({\n id: row.id,\n items: [\n {\n key: 'authorName',\n content: {`${row.author.firstName} ${row.author.lastName}`},\n },\n {\n key: 'submissionNumber',\n content: `${row.submissionId}/${row.edition}`,\n },\n {\n key: 'projectName',\n content: row.project.title || '-',\n },\n {\n key: 'unitInfo',\n content: row.project.scientificFacility || '-',\n },\n {\n key: 'estimatedFinishTime',\n content: row.project.duration,\n },\n {\n key: 'estimatedFunds',\n content: row.project.cost,\n },\n {\n key: 'reviewers',\n content: row.reviewers !== undefined ? row.reviewers.split(',').map((item: any) => {\n return {item}
\n }\n ) : '-',\n },\n {\n key: 'marksCount',\n content: row.reviewersCount ? `${row.reviewsCount} / ${row.reviewersCount}` : '-',\n },\n {\n key: 'generalMark',\n content: row.summedMarks !== undefined ? `${row.summedMarks} pkt.` : '-',\n },\n {\n key: 'status',\n content: t(getSubmissionStatusLabel(row.status))\n } \n ],\n }));\n\n return (\n
\n \n
\n );\n};\n\nexport const CompetitionRankingList = withStyles(styles)(CompetitionRankingListComponent);\n","import React, { Fragment } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { List } from './List';\nimport { Link } from './Link';\nimport { RootState } from '../store/rootReducer';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {\n rows: Array;\n};\n\nconst GrantImplementationRankingListComponent: React.FunctionComponent = ({ rows }) => {\n const { t } = useTranslator();\n const { role } = useSelector((state: RootState) => state.user);\n\n const getRolePath = () => {\n switch (role) {\n case RoleEnum.BoardMember:\n return 'board-member';\n case RoleEnum.FinanceCoordinator:\n return 'finance-coordinator';\n case RoleEnum.ScientificCouncilMember:\n return 'scientific-council-member';\n case RoleEnum.CompetitionCommitteeMember:\n return 'competition-committee-member';\n case RoleEnum.CompetitionJuryMember:\n return 'competition-jury-member';\n case RoleEnum.Admin:\n return 'admin';\n case RoleEnum.CompetitionCoordinator:\n return 'competition-coordinator';\n }\n\n return '';\n };\n\n const listHeader = [\n {\n key: 'authorName',\n text: t('authorName'),\n }, \n {\n key: 'projectName',\n text: t('projectName'),\n },\n {\n key: 'unitInfo',\n text: t('unitInfo'),\n },\n {\n key: 'estimatedFinishTime',\n text: t('estimatedFinishTime'),\n },\n {\n key: 'estimatedFunds',\n text: t('estimatedFunds'),\n },\n {\n key: 'reviewers',\n text: t('reviewers'),\n },\n {\n key: 'stage',\n text: t('stage'),\n }\n ];\n\n const mapRowsToListRows = () =>\n rows.map((row) => ({\n id: row.id,\n items: [\n {\n key: 'authorName',\n content: {`${row.author.firstName} ${row.author.lastName}`},\n },\n {\n key: 'projectName',\n content: row.project.title || '-',\n },\n {\n key: 'unitInfo',\n content: row.project.scientificFacility || '-',\n },\n {\n key: 'estimatedFinishTime',\n content: row.project.duration,\n },\n {\n key: 'estimatedFunds',\n content: row.project.cost,\n },\n {\n key: 'reviewers',\n content: row.reviewers !== undefined ? row.reviewers.split(',').map((item: any) => {\n return {item}
\n }\n ) : '-',\n },\n {\n key: 'stage',\n content: row.stage ? `${row.stage}` : '-',\n } \n ],\n }));\n\n return (\n
\n \n
\n );\n};\n\nexport const GrantImplementationRankingList = withStyles(styles)(GrantImplementationRankingListComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Tabs, Tab, Theme, Badge } from '@material-ui/core';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { CompetitionRankingList } from './CompetitionRankingList';\nimport { GrantImplementationRankingList } from './GrantImplementationRankingList';\nimport { Message } from './Message';\nimport { Box } from './Box';\nimport { BoxLoader } from './BoxLoader';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { ErrorService } from '../services/Error.service';\nimport { SubmissionsCount } from '../shared/types/SubmissionsCount';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n tabs: {\n marginBottom: 20,\n overflow: 'visible',\n '& > div.MuiTabs-scroller': {\n overflow: 'visible !important'\n }\n },\n tab: {\n borderRadius: `${custom.radius.r_0}px ${custom.radius.r_0}px 0 0`,\n overflow: 'visible'\n },\n badgeText: {\n padding: 5\n }\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst CompetitionRankingListWithTabsComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [activeTab, setActiveTab] = useState(0);\n const [submissions, setSubmissions] = useState>([]);\n const [submissionsCount, setSubmissionsCount] = useState();\n\n const { t } = useTranslator();\n\n const handleTabChange = (event: React.ChangeEvent<{}>, value: number) => {\n setActiveTab(value);\n };\n\n const fetchSubmissions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n if (activeTab === 0) {\n const {\n data: { result },\n } = await SubmissionService.getWon(match.params.id); \n \n setSubmissions(result);\n } else if (activeTab === 1) {\n const {\n data: { result },\n } = await SubmissionService.getInReview(match.params.id); \n\n setSubmissions(result);\n } else if (activeTab === 2) {\n const {\n data: { result },\n } = await SubmissionService.getRejected(match.params.id); \n\n setSubmissions(result);\n } else if (activeTab === 3) {\n const {\n data: { result },\n } = await SubmissionService.getDrafts(match.params.id); \n\n setSubmissions(result);\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const fetchSubmissionsCount = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result }\n } = await SubmissionService.getSubmissionsCount(match.params.id);\n\n setSubmissionsCount(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmissions, [activeTab]);\n useEffect(fetchSubmissionsCount, []);\n\n return (\n
\n \n \n \n {t('grantInplementation')}\n \n \n }\n />\n \n \n {t('markInProgressSubmissions')}\n \n \n }\n />\n \n \n {t('rejectedSubmissions')}\n \n \n }\n />\n \n \n {t('toAcceptSubmissions')}\n \n \n }\n />\n \n {serverError ? (\n {t(serverError)}\n ) : (\n
\n \n {loading ? : submissions.length ? \n
\n {activeTab === 0 ? : null}\n {activeTab > 0 ? : null}\n
\n : {t('none')} }\n
\n
\n )}\n
\n );\n};\n\nexport const CompetitionRankingListWithTabs = withStyles(styles)(withRouter(CompetitionRankingListWithTabsComponent));\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { CompetitionRankingListWithTabs } from '../../CompetitionRankingListWithTabs';\nimport { RouteComponentProps } from 'react-router';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { Competition } from '../../../shared/types/Competition';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst CompetitionRankingListScreenComponent: React.FunctionComponent = ({ match }) => {\n const [competition, setCompetition] = useState();\n const { t } = useTranslator();\n\n const fetchCompetition = () => {\n (async () => {\n const {\n data: { result },\n } = await CompetitionService.getOne(match.params.id);\n\n setCompetition(result);\n })();\n };\n \n useEffect(fetchCompetition, []);\n\n const competitionName = competition?.name ? ` (${competition.name})` : '';\n\n return (\n
\n \n \n
\n );\n};\n\nexport const CompetitionRankingListScreen = withStyles(styles)(CompetitionRankingListScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { Box } from '../../Box';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { List } from '../../List';\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '@material-ui/icons';\nimport { Submission } from '../../../shared/types/Submission';\nimport { UserService } from '../../../services/User.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\nimport { ScreenToolbar } from '../../ScreenToolbar';\n\nconst styles = () =>createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AdminUserCompetitionListScreenComponent: React.FunctionComponent = ({ match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(true);\n const [submissions, setSubmissions] = useState>([]);\n const [title, setTitle] = useState('');\n\n const { t } = useTranslator();\n\n const fetchUser = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const { data: { result } } = await UserService.getOne(match.params.id);\n \n switch (result?.role) {\n case 'Author':\n setTitle(`${t('authorsCompetitions')} ${result.firstName} ${result.lastName}`)\n break;\n case 'Reviewer':\n setTitle(`${t('reviewersCompetitions')} ${result.firstName} ${result.lastName}`)\n break;\n default:\n setTitle(`${t('usersCompetitions')} ${result?.firstName} ${result?.lastName}`)\n break;\n }\n\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const fetchSubmissions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const { data: { result } } = await UserService.getSubmissionsByUser(match.params.id);\n setSubmissions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmissions, []);\n useEffect(fetchUser, []);\n\n const mapRowsToListRows = () => \n\n submissions.map((submission) => ({\n id: submission.id,\n items: [\n {\n key: 'competitionName',\n content: {submission.competition.name},\n },\n {\n key: 'type',\n content: t(`competitionName${submission.competition.type}`),\n },\n {\n key: 'projectName',\n content: {t(submission.project.title)},\n },\n {\n key: 'unitInfo',\n content: t(submission.project.scientificFacility),\n },\n {\n key: 'estimatedFinishTime',\n content: submission.project.duration,\n },\n {\n key: 'estimatedFunds',\n content: submission.project.cost,\n },\n {\n key: 'reviewers',\n content: submission.reviewers,\n }]\n })\n );\n \n \n const listHeader = [\n {\n key: 'competitionName',\n text: t('competitionName'),\n },\n {\n key: 'competitionType',\n text: t('competitionType'),\n },\n {\n key: 'projectName',\n text: t('projectName'),\n },\n {\n key: 'unitInfo',\n text: t('unitInfo'),\n },\n {\n key: 'estimatedFinishTime',\n text: t('estimatedFinishTime'),\n },\n {\n key: 'estimatedFunds',\n text: t('estimatedFunds'),\n },\n {\n key: 'reviewers',\n text: t('reviewers'),\n }\n ];\n\n return (\n
\n {serverError ? (\n {t(serverError)}\n ) : (\n loading ? :\n
\n \n \n \n {submissions.length === 0 ? (t('noCompetitionsFound')) : \n ( )}\n \n
\n )}\n
\n );\n};\n\nexport const AdminUserCompetitionListScreen = withStyles(styles)(withRouter(AdminUserCompetitionListScreenComponent));\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { StageForm } from '../../forms/StageForm';\nimport { Box } from '../../Box';\nimport { useHistory } from 'react-router';\nimport { StageService } from '../../../services/Stage.service';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/rootReducer';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminAddStageScreenComponent: React.FunctionComponent = ({classes}) => {\n const [activeStage, setActiveStage] = useState();\n\n const { t } = useTranslator();\n const history = useHistory();\n const { submissionId } = history.location.state as any;\n \n const { role } = useSelector((state: RootState) => state.user);\n const path = role === RoleEnum.Admin ? 'admin' \n : role === RoleEnum.CompetitionCoordinator ? 'competition-coordinator' \n : '';\n\n const fetchActiveStage = () => {\n (async () => {\n const {\n data: { result },\n } = await StageService.getActiveStage(submissionId);\n\n setActiveStage(result);\n })();\n };\n useEffect(fetchActiveStage, [])\n\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nexport const AdminAddStageScreen = withStyles(styles)(AdminAddStageScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { List } from '../../List';\nimport { Link } from '../../Link';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AdminReportsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'name',\n text: t('reportName'),\n },\n ];\n\n return (\n
\n \n {t('foundationInNumbers')},\n }\n ],\n }]\n } />\n
\n );\n};\n\nexport const AdminReportsScreen = withStyles(styles)(AdminReportsScreenComponent);\n","import { ApiService } from './Api.service';\nimport { ApiResponse } from '../shared/types/ApiResponse';\nimport { FoundationInNumbers } from '../shared/types/FoundationInNumbers';\n\nexport const ReportsService = {\n resource: 'Report',\n getFoundationInNumbers: () => {\n return ApiService.get>>(`${ReportsService.resource}/foundation-in-numbers`, { withCredentials: true });\n }\n}\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { List } from '../../List';\nimport { Box } from '../../Box';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { BoxLoader } from '../../BoxLoader';\nimport { FoundationInNumbers } from '../../../shared/types/FoundationInNumbers';\nimport { ReportsService } from '../../../services/Reports.service';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst FoundationInNumbersReportScreenComponent: React.FunctionComponent = () => {\n const [loading, setLoading] = useState(true);\n const [reportData, setReportData] = useState>([]);\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'edition',\n text: t('edition')\n },\n {\n key: 'name',\n text: t('competitionName')\n },\n {\n key: 'numberOfSubmissions',\n text: t('numberOfSentSubmissions')\n },\n {\n key: 'numberOfSubmissionsWithGrants',\n text: t('numberOfSubmissionsWithGrants')\n },\n {\n key: 'numberOfClosedSubmissions',\n text: t('numberOfClosedSubmissions')\n },\n {\n key: 'sumOfCosts',\n text: t('sumOfCosts')\n }\n ];\n\n const mapRowsToListRows = () =>\n reportData.map((reportDataRow) => ({\n id: reportDataRow.id,\n items: [\n {\n key: 'edition',\n content: reportDataRow.edition\n },\n {\n key: 'name',\n content: reportDataRow.name\n },\n {\n key: 'numberOfSubmissions',\n content: reportDataRow.numberOfSubmissions\n },\n {\n key: 'numberOFSubmissionsWithGrants',\n content: reportDataRow.numberOfSubmissionsWithGrants\n },\n {\n key: 'numberOFClosedSubmissions',\n content: reportDataRow.numberOfClosedSubmissions\n },\n {\n key: 'sumOfCosts',\n content: reportDataRow.sumOfCosts\n }\n ]\n }));\n\n const fetchReportData = () => {\n (async () => {\n try {\n setServerError('');\n setLoading(true);\n\n const {\n data: { result },\n } = await ReportsService.getFoundationInNumbers();\n\n setReportData(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchReportData, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n {loading ? : }\n )}\n
\n );\n};\n\nexport const FoundationInNumbersReportScreen = withStyles(styles)(FoundationInNumbersReportScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { AdminRoute } from '../../routes/AdminRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { AdminAddCompetitionScreen } from '../Admin/AdminAddCompetitionScreen';\nimport { AdminCompetitionDetailsScreen } from '../Admin/CompetitionDetailsScreen';\nimport { AdminUserDetailsScreen } from '../Admin/AdminUserDetailsScreen';\nimport { AdminStageDetailsScreen } from '../Admin/AdminStageDetailsScreen';\nimport { AdminSubmissionDetailsScreen } from '../Admin/AdminSubmissionDetailsScreen';\nimport { AdminUsersScreen } from '../Admin/AdminUsersScreen';\nimport { AdminAddUserScreen } from '../Admin/AdminAddUserScreen';\nimport { AdminCompetitionsScreen } from '../Admin/AdminCompetitionsScreen';\nimport { AdminEmailTemplatesScreen } from '../Admin/AdminEmailTemplatesScreen';\nimport { AdminEmailTemplateDetailsScreen } from '../Admin/AdminEmailTemplateDetailsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { AdminUserCompetitionListScreen } from '../Admin/AdminUserCompetitionListScreen';\nimport { AdminAddStageScreen } from '../Admin/AdminAddStageScreen';\nimport { AdminReportsScreen } from '../Admin/AdminReportsScreen';\nimport { FoundationInNumbersReportScreen } from '../Admin/FoundationInNumbersReportScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst AdminScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const AdminScreens = withStyles(styles)(AdminScreensComponent);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"image\", {\n id: \"nfp-logo-dark\",\n width: 447,\n height: 167,\n xlinkHref: \"data:image/png;base64,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\"\n});\n\nvar SvgNfpLogoDark = function SvgNfpLogoDark(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 447,\n height: 167,\n viewBox: \"0 0 447 167\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgNfpLogoDark, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/nfp-logo-dark.c2694390.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ReactComponent as Logo } from '../../assets/nfp-logo-dark.svg';\n\nimport BackgroundImage from '../../assets/bg.jpg';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: 40,\n paddingBottom: 40,\n height: '100vh',\n backgroundImage: `url(${BackgroundImage})`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat'\n },\n boxContainer: {\n maxWidth: 650,\n margin: '40px auto',\n width: '100%',\n },\n logo: {\n maxHeight: 60,\n },\n });\n\ntype Props = WithStyles;\n\nconst UnloggedLayoutComponent: React.FunctionComponent = ({ children, classes }) => {\n return (\n
\n \n
{children}
\n
\n );\n};\n\nexport const UnloggedLayout = withStyles(styles)(UnloggedLayoutComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { FieldCheckbox } from '../form-fields/FieldCheckbox';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { email, reviewerSpecialization, name, surname, scienceUnit, phone, agreement, password } from '../../shared/validators';\nimport { UserService } from '../../services/User.service';\nimport { RegistrationData } from '../../shared/types/RegistrationData';\nimport { FormError } from '../FormError';\nimport { ErrorService } from '../../services/Error.service';\nimport { RodoMessage } from '../RodoMessage';\n\nconst styles = () => createStyles({\n checkboxField: {\n marginTop: 5\n }\n});\n\ntype Props = WithStyles & RouteComponentProps;\n\ntype FormValues = RegistrationData;\n\nconst RegistrationFormComponent: React.FunctionComponent = ({ classes, history }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n firstName: name(t),\n lastName: surname(t),\n scientificFacility: scienceUnit(t),\n phoneNumber: phone(t),\n email: email(t),\n password: password(t),\n specialty: reviewerSpecialization(t),\n acceptedRODO: agreement(t),\n });\n\n const initialValues = {\n firstName: '',\n lastName: '',\n phoneNumber: '',\n scientificFacility: '',\n email: '',\n password: '',\n agreement: false,\n specialty: '',\n acceptedRODO: false\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setServerError('');\n setSubmitting(true);\n\n try {\n await UserService.register(values);\n\n history.push('/registration/success');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\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};\n\nexport const RegistrationForm = withStyles(styles)(withRouter(RegistrationFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { useTranslator} from '../i18n/useTranslator';\nimport classNames from 'classnames';\n\nconst styles = ({ palette }: Theme) =>\n createStyles({\n root: {\n textAlign: 'center',\n padding: '20px 20px 0 20px',\n color: 'gray'\n },\n });\n\ntype Props = WithStyles & {\n className?: string;\n};\n\nconst HelpMessageComponent: React.FunctionComponent = ({ classes, className }) => {\n const { t } = useTranslator();\n\n return(\n \n )\n};\n\nexport const HelpMessage = withStyles(styles)(HelpMessageComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { Divider } from '../Divider';\nimport { Button } from '../Button';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { RegistrationForm } from '../forms/RegistrationForm';\nimport { HelpMessage } from '../HelpMessage';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst RegitrationScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const RegitrationScreen = withStyles(styles)(RegitrationScreenComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { email, password } from '../../shared/validators';\nimport { ErrorService } from '../../services/Error.service';\nimport { UserService } from '../../services/User.service';\nimport { FormError } from '../FormError';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\ntype FormValues = {\n email: string;\n password: string;\n};\n\nconst LoginFormComponent: React.FunctionComponent = ({ history }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n email: email(t),\n password: password(t),\n });\n\n const initialValues = {\n email: '',\n password: '',\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setServerError('');\n setSubmitting(true);\n\n try {\n await UserService.login(values);\n\n try {\n const {\n data: {\n result: { role },\n },\n } = await UserService.getMe();\n\n switch (role) {\n case RoleEnum.Admin:\n history.push('/admin/competitions');\n break;\n case RoleEnum.Author:\n history.push('/author/competitions');\n break;\n case RoleEnum.Reviewer:\n history.push('/reviewer/submissions/active');\n break;\n case RoleEnum.ScientificCouncilMember:\n history.push('/scientific-council-member/competitions');\n break;\n case RoleEnum.CompetitionCommitteeMember:\n history.push('/competition-committee-member/competitions');\n break;\n case RoleEnum.CompetitionJuryMember:\n history.push('/competition-jury-member/competitions');\n break;\n case RoleEnum.FinanceCoordinator:\n history.push('/finance-coordinator/competitions');\n break;\n case RoleEnum.BoardMember:\n history.push('/board-member/competitions');\n break;\n case RoleEnum.CompetitionCoordinator:\n history.push('/competition-coordinator/competitions');\n break;\n default:\n history.push('/');\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n console.log(error);\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n console.log(error);\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\n \n \n \n\n \n\n \n \n )}\n
\n );\n};\n\nexport const LoginForm = withStyles(styles)(withRouter(LoginFormComponent));\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useLocation } from 'react-router';\n\nimport { LoginForm } from '../forms/LoginForm';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { Divider } from '../Divider';\nimport { Button } from '../Button';\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Message } from '../Message';\nimport { HelpMessage } from '../HelpMessage';\nimport { Link } from '../Link';\n\nconst styles = () => createStyles({\n message: { \n marginBottom: 20\n },\n resetPasswordLink: {\n marginTop: 10,\n alignSelf: 'end'\n }\n});\n\ntype Props = WithStyles;\n\nconst LoginScreenComponent: React.FunctionComponent = ({ classes }) => {\n const [infoMessage, setInfoMessage] = useState('');\n\n const { t } = useTranslator();\n const location = useLocation<{ confirmedEmail: boolean }>();\n\n const initMessages = () => {\n if (!location.state) {\n return;\n }\n\n if (location.state.confirmedEmail) {\n setInfoMessage('emailIsConfirmed')\n }\n }\n\n useEffect(initMessages, [])\n\n return (\n \n \n \n {infoMessage ? (\n {t(infoMessage)}\n ) : null}\n \n\n \n {t(\"forgotPassword\")}\n \n \n \n \n \n \n \n );\n};\n\nexport const LoginScreen = withStyles(styles)(LoginScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\n\nconst styles = () =>\n createStyles({\n loginButton: {\n marginTop: 20,\n },\n });\n\ntype Props = WithStyles;\n\nconst SuccessRegistrationScreenComponent: React.FunctionComponent = ({ classes }) => {\n const { t } = useTranslator();\n\n return (\n \n \n \n
{t('activateYourAccount')}
\n \n
\n
\n );\n};\n\nexport const SuccessRegistrationScreen = withStyles(styles)(SuccessRegistrationScreenComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst AuthorRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.Author) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const AuthorRoute = withRouter(AuthorRouteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { List } from './List';\nimport { ListRow } from '../shared/types/ListRow';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {\n rows: Array;\n};\n\nconst SubmissionsListComponent: React.FunctionComponent = ({ rows }) => {\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'submissionName',\n text: t('submissionName'),\n },\n {\n key: 'submissionDate',\n text: t('submissionDate'),\n },\n ];\n\n return rows.length ? : {t('none')};\n};\n\nexport const SubmissionsList = withStyles(styles)(SubmissionsListComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport moment from 'moment';\n\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SubmissionsList } from '../../SubmissionsList';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SimpleSubmission } from '../../../shared/types/SimpleSubmission';\nimport { ErrorService } from '../../../services/Error.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Message } from '../../Message';\nimport { DateService } from '../../../services/Date.service';\nimport { Link } from '../../Link';\nimport { SubmissionStatusEnum } from '../../../shared/enums/SubmissionStatusEnum';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AuthorSubmissionsScreenComponent: React.FunctionComponent = () => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submissions, setSubmissions] = useState>([]);\n const { t } = useTranslator();\n\n const mapRowsToListRows = () =>\n submissions.map((submission) => ({\n id: submission.id,\n items: [\n {\n key: 'submissionName',\n content: {submission.competitionName},\n },\n {\n key: 'submissionDate',\n content:
{moment(submission.createdAt).format(DateService.DATE_FORMAT)}
,\n },\n ],\n }));\n\n const fetchSubmissions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getMy();\n\n setSubmissions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmissions, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n {loading ? : }\n )}\n
\n );\n};\n\nexport const AuthorSubmissionsScreen = withStyles(styles)(AuthorSubmissionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Box } from './Box';\nimport { BoxHeader } from './BoxHeader';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {};\n\nconst AuthorSubmissionInstructionsComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n
    \n
  1. Pobierz szablony dokumentów i zapisz je u siebie na dysku
  2. \n
  3. Uzupełnij szablony
  4. \n
  5. Załącz do zgłoszenia skany wypełnionych dokumentów
  6. \n
\n
\n {t('iInCaseOfHelp')} kontakt.fundacja@polpharma.com\n
\n
\n );\n};\n\nexport const AuthorSubmissionInstructions = withStyles(styles)(AuthorSubmissionInstructionsComponent);\n","import React, { useState, useEffect } from \"react\";\nimport { createStyles, WithStyles, withStyles, Grid } from \"@material-ui/core\";\nimport { RouteComponentProps } from \"react-router\";\nimport partition from \"lodash/partition\";\n\nimport { useTranslator } from \"../../../i18n/useTranslator\";\nimport { SectionHeader } from \"../../SectionHeader\";\nimport { SubmissionDetails } from \"../../SubmissionDetails\";\nimport { SubmissionService } from \"../../../services/Submissions.service\";\nimport { Submission } from \"../../../shared/types/Submission\";\nimport { Box } from \"../../Box\";\nimport { BoxLoader } from \"../../BoxLoader\";\nimport { Message } from \"../../Message\";\nimport { ErrorService } from \"../../../services/Error.service\";\nimport { SubmissionAttachment } from \"../../../shared/types/SubmissionAttachment\";\nimport { RoleEnum } from \"../../../shared/enums/RoleEnum\";\nimport { AuthorSubmissionInstructions } from \"../../AuthorSubmissionInstructions\";\nimport { StageService } from \"../../../services/Stage.service\";\nimport { SubmissionStage } from \"../../../shared/types/SubmissionStage\";\nimport { SubmissionStatusEnum } from \"../../../shared/enums/SubmissionStatusEnum\";\nimport { AdditionalDocumentation } from \"../../AdditionalDocumentation\";\nimport { CompetitionCategoryEnum } from \"../../../shared/enums/CompetitionCategoryEnum\";\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AuthorSubmissionDetailsScreenComponent: React.FunctionComponent<\n Props\n> = ({ match }) => {\n const [serverError, setServerError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState<\n Array\n >([]);\n const [activeStage, setActiveStage] = useState();\n\n const { t } = useTranslator();\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError(\"\");\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOne(match.params.id);\n\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getAuthorAttachments(result.id);\n\n const [, author] = partition(submissionAttachments, {\n role: RoleEnum.Reviewer,\n });\n\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const fetchActiveStage = () => {\n (async () => {\n setLoading(true);\n setServerError(\"\");\n if (submission?.status === SubmissionStatusEnum.Won) {\n try {\n const {\n data: { result },\n } = await StageService.getActiveStage(match.params.id);\n setActiveStage(result);\n } catch (error) {\n if (ErrorService.parseStatusCode(error) !== 404) {\n setServerError(ErrorService.parseError(error));\n }\n }\n setLoading(false);\n }\n })();\n };\n\n useEffect(fetchSubmission, []);\n useEffect(fetchActiveStage, [submission]);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission ? (\n \n \n \n \n \n \n \n \n \n {submission.competition.category === CompetitionCategoryEnum.Person ? (\n \n ) : null}\n \n \n ) : null}\n
\n );\n};\n\nexport const AuthorSubmissionDetailsScreen = withStyles(styles)(\n AuthorSubmissionDetailsScreenComponent\n);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport moment from 'moment';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { List } from '../../List';\nimport { Box } from '../../Box';\nimport { ErrorService } from '../../../services/Error.service';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { Competition } from '../../../shared/types/Competition';\nimport { Message } from '../../Message';\nimport { DateService } from '../../../services/Date.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst AuthorCompetitionsScreenComponent: React.FunctionComponent = () => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [competitions, setCompetitions] = useState>([]);\n\n const { t } = useTranslator();\n\n const listHeader = [{\n key: 'name',\n text: t('competitionName'),\n }, {\n key: 'startDate',\n text: t('startDate'),\n }, {\n key: 'endDate',\n text: t('endDate'),\n }];\n\n const mapRowsToListRows = () =>\n competitions.map((competition) => ({\n id: competition.id,\n items: [{\n key: 'name',\n content: (\n \n {competition.name}\n \n ),\n }, {\n key: 'startDate',\n content: moment(competition.startDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'endDate',\n content: moment(competition.endDate).format(DateService.DATE_FORMAT),\n }],\n }));\n\n const fetchCompetitions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await CompetitionService.getActive();\n\n setCompetitions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchCompetitions, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : (\n <>\n {competitions.length ? : {t('noCompetitionsFound')}}{' '}\n \n )}\n \n )}\n
\n );\n};\n\nexport const AuthorCompetitionsScreen = withStyles(styles)(AuthorCompetitionsScreenComponent);\n","import React, { useState, useRef, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid, Divider } from '@material-ui/core';\nimport moment from 'moment';\nimport { useSelector } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router';\n\nimport { BoxSection } from './BoxSection';\nimport { LabelValue } from './LabelValue';\nimport { useTranslator, TFunction } from '../i18n/useTranslator';\nimport { SubmissionDocumentation } from './SubmissionDocumentation';\nimport { Button } from './Button';\nimport { Competition } from '../shared/types/Competition';\nimport { DateService } from '../services/Date.service';\nimport { RootState } from '../store/rootReducer';\nimport { UserService } from '../services/User.service';\nimport { SubmissionService } from '../services/Submissions.service';\nimport { ErrorService } from '../services/Error.service';\nimport { FormError } from './FormError';\nimport { SubmissionForm, SubmissionFormValues } from './forms/SubmissionForm';\nimport { Submission } from '../shared/types/Submission';\nimport { SubmissionStatusEnum } from '../shared/enums/SubmissionStatusEnum';\nimport { Form } from \"./Form\";\nimport { FormContent } from \"./FormContent\";\nimport * as Yup from 'yup';\nimport { projectName, unitInfo, academicTitle as academicTitleValidator, estimatedFinishTime, estimatedFunds, acceptedRequiredConsent } from '../shared/validators';\nimport { CompetitionCategoryEnum } from '../shared/enums/CompetitionCategoryEnum';\nimport { RoleEnum } from '../shared/enums/RoleEnum';\nimport { SubmissionProject } from '../shared/types/SubmissionProject';\nimport { Autosave } from './Autosave';\nimport { AxiosResponse } from 'axios';\nimport { SubmissionAttachment } from '../shared/types/SubmissionAttachment';\nimport { AttachmentStatusEnum } from '../shared/enums/AttachmentStatusEnum';\nimport { AttachmentTemplate } from '../shared/types/AttachmentTemplate';\nimport { FormikHelpers } from 'formik';\n\nconst styles = () =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n section: {},\n row: {\n marginBottom: 12,\n },\n error: {\n marginTop: 10,\n marginBottom: 0,\n }, \n sectionsContainer: {\n marginBottom: 20,\n },\n sendDocumentsButton: {\n alignSelf: 'flex-end',\n marginTop: 20,\n }, \n sendButton: {\n alignSelf: 'flex-end',\n },\n });\n\n type SubmissionDetailsForm = SubmissionFormValues & {\n submissionId: Submission[\"id\"];\n };\n\ntype Props = WithStyles &\n RouteComponentProps & {\n attachmentTemplates?: Array;\n competition: Competition;\n submission?: Submission;\n attachments: Array;\n onChanged?: () => void;\n };\n\nconst SubmitSubmissionComponent: React.FunctionComponent = ({\n classes,\n competition,\n history,\n attachmentTemplates,\n attachments,\n submission,\n onChanged\n}) => {\n const [attachmentsToUpload, setAttachmentsToUpload] = useState>(new Map());\n const [shouldValidateFiles, setShouldValidateFiles] = useState(false);\n const [serverError, setServerError] = useState('');\n const [submissionId, setSubmissionId] = useState(submission?.id);\n const [autosaving, setAutosaving] = useState(false);\n const [dataToSubmit, setDataToSubmit] = useState();\n\n const initialAttachments = useRef>(new Map()).current;\n \n const { t } = useTranslator();\n const { firstName, lastName, email, phoneNumber, scientificFacility } = useSelector((state: RootState) => state.user);\n\n const [initialValues, setInitialValues] = useState({\n submissionId: submission ? submission.id : '',\n projectName: submission ? submission.project.title : '',\n unitInfo: submission ? submission.project.scientificFacility : '',\n estimatedFinishTime: submission?.project.duration,\n estimatedFunds: submission?.project.cost,\n academicTitle: submission ? submission.project.academicTitle : '',\n requiredConsent: competition.requiredConsent,\n acceptedRequiredConsent: submission ? submission.project.acceptedRequiredConsent : false\n });\n\n const handleFileChange = (templateId: string, file: File | null) => {\n setAttachmentsToUpload(map => new Map(map.set(templateId, file)));\n };\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n projectName: projectName(t),\n unitInfo: unitInfo(t),\n academicTitle: academicTitleValidator(t),\n estimatedFinishTime: estimatedFinishTime(t, competition.category === CompetitionCategoryEnum.Project),\n estimatedFunds: estimatedFunds(t, competition.category === CompetitionCategoryEnum.Project),\n acceptedRequiredConsent: acceptedRequiredConsent(t, competition.category === CompetitionCategoryEnum.Person)\n });\n\n const hasInvalidDocuments = () => {\n let invalid = attachmentTemplates?.some(template =>\n !attachmentsToUpload.get(template.id) && \n !attachments.find(attach => attach.templateId)?.attachments.length &&\n template.isRequired);\n \n invalid = invalid || attachments.some(attachment =>\n !attachmentsToUpload.get(attachment.templateId) &&\n !attachment.attachments.length &&\n attachment.isRequired);\n\n return invalid;\n };\n\n const saveAttachments = async (submissionId: Submission['id']) => {\n const promises: Promise>[] = [SubmissionService.submitAttachments(submissionId)];\n\n attachmentsToUpload.forEach((file, templateId) => {\n if (!file) {\n return;\n }\n const formData = new FormData();\n\n formData.append('file', file);\n formData.append('parentId', submissionId);\n formData.append('templateId', templateId);\n formData.append('status', AttachmentStatusEnum.Submitted.toString());\n\n promises.push(SubmissionService.addFile(formData));\n });\n\n return Promise.all(promises);\n };\n\n const handleSubmissionDetailsSubmit = async (data: SubmissionDetailsForm): Promise => {\n const submissionProject = {\n title: data.projectName,\n scientificFacility: data.unitInfo,\n academicTitle: data.academicTitle,\n duration: data.estimatedFinishTime === \"\" ? null : data.estimatedFinishTime,\n cost: data.estimatedFunds === \"\" ? null : data.estimatedFunds,\n requiredConsent: data.requiredConsent,\n acceptedRequiredConsent: data.acceptedRequiredConsent\n } as SubmissionProject;\n \n const {\n data: {\n result: { id },\n },\n } = await SubmissionService.add(competition.id, submissionProject);\n\n return id;\n };\n\n const handleSaveSubmission = () => {\n (async () => {\n if (!dataToSubmit || autosaving) {\n return;\n }\n\n try {\n const id = await handleSubmissionDetailsSubmit(dataToSubmit);\n\n await saveAttachments(id);\n await SubmissionService.notifyCreated(id);\n\n history.push('/author/submissions');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n } finally {\n setDataToSubmit(undefined);\n }\n })();\n };\n\n useEffect(handleSaveSubmission, [dataToSubmit, autosaving]);\n\n const handleFormSubmit = (data: SubmissionDetailsForm, { setSubmitting }: FormikHelpers) => {\n setShouldValidateFiles(true);\n if (hasInvalidDocuments() || autosaving) {\n setSubmitting(false);\n return;\n }\n\n setServerError(\"\");\n setDataToSubmit(data);\n };\n\n const handleSubmissionDetailsAutosave = async (data: SubmissionDetailsForm): Promise => {\n const submissionProject = {\n title: data.projectName,\n scientificFacility: data.unitInfo,\n academicTitle: data.academicTitle,\n duration: data.estimatedFinishTime === \"\" ? null : data.estimatedFinishTime,\n cost: data.estimatedFunds === \"\" ? null : data.estimatedFunds,\n requiredConsent: data.requiredConsent,\n acceptedRequiredConsent: data.acceptedRequiredConsent\n } as SubmissionProject;\n \n const {\n data: {\n result: { id },\n },\n } = await SubmissionService.autosave(competition.id, submissionProject);\n\n return id;\n };\n\n const handleAutosaveSubmission = async (\n data?: SubmissionDetailsForm,\n attachmentsToAdd?: { key: string; value: File | null; }[]\n ) => {\n setAutosaving(true);\n\n try {\n let id = submissionId;\n if (data) {\n id = await handleSubmissionDetailsAutosave(data);\n setInitialValues(data);\n }\n else if (!id) {\n id = await handleSubmissionDetailsAutosave(initialValues);\n }\n\n setSubmissionId(id);\n\n await autosaveAttachments(id, attachmentsToAdd);\n }\n finally {\n setAutosaving(false);\n }\n };\n\n const autosaveAttachments = async (\n submissionId: string,\n attachmentsToAdd?: { key: string; value: File | null; }[]\n ) => {\n if (!attachmentsToAdd) {\n return;\n }\n\n const promises: Promise>[] = [];\n\n attachmentsToAdd.forEach(file => {\n if (!file.value) {\n return;\n }\n\n const formData = new FormData();\n\n formData.append('file', file.value);\n formData.append('parentId', submissionId);\n formData.append('templateId', file.key);\n formData.append('status', AttachmentStatusEnum.Autosaved.toString());\n\n promises.push(SubmissionService.addFile(formData));\n });\n\n await Promise.all(promises);\n \n if (promises.length) {\n onChanged && onChanged();\n setAttachmentsToUpload(map => {\n attachmentsToAdd.forEach(attachment => {\n map.delete(attachment.key);\n });\n return map;\n });\n }\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 \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 {(Boolean(attachments.length) || attachmentTemplates) && (\n \n )}\n \n setShouldValidateFiles(true)}\n type=\"submit\"\n >\n {t(\"send\")}\n \n
\n {t(\"requiredInfo\")}\n
\n \n \n
\n )}\n \n
\n
\n \n
\n );\n};\n\nexport const SubmitSubmission = withStyles(styles)(withRouter(SubmitSubmissionComponent));\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport { AxiosError } from 'axios';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { SubmitSubmission } from '../../SubmitSubmission';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { Competition } from '../../../shared/types/Competition';\nimport { Box } from '../../Box';\nimport { BoxLoader } from '../../BoxLoader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { AuthorSubmissionInstructions } from '../../AuthorSubmissionInstructions';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { Submission } from '../../../shared/types/Submission';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { RootState } from '../../../store/rootReducer';\nimport { useSelector } from 'react-redux';\nimport { AttachmentTemplate } from '../../../shared/types/AttachmentTemplate';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst AuthorSubmissionScreenComponent: React.FunctionComponent = ({ match }) => {\n const [competition, setCompetition] = useState();\n const [submission, setSubmission] = useState();\n const [submissionNotFound, setSubmissionNotFound] = useState();\n const [attachmentTemplates, setAttachmentTemplates] = useState>();\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const { t } = useTranslator();\n const { role } = useSelector((state: RootState) => state.user);\n\n const fetchCompetition = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result: competition },\n } = await CompetitionService.getOne(match.params.id);\n\n setCompetition(competition);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n finally {\n setLoading(false);\n }\n })();\n };\n\n const fetchAttachments = async (submission: Submission) => {\n try {\n const { data: { result: authorAttachments } } = await SubmissionService.getAuthorAttachments(submission.id);\n\n setAuthorAttachments(authorAttachments);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n };\n\n const fetchAutosavedSubmission = () => {\n (async () => {\n try {\n if (!competition) {\n return;\n }\n setAttachmentTemplates(undefined);\n\n const { data: { result: submission } } = await SubmissionService.getAutosaved(competition.id);\n \n setSubmission(submission);\n setSubmissionNotFound(false);\n\n await fetchAttachments(submission);\n } catch (error) {\n const axiosError = error as AxiosError;\n if (axiosError.response?.status === 404) {\n setSubmissionNotFound(true);\n return;\n }\n\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n const fetchAttachmentTemplates = () => {\n (async () => {\n try {\n if (!competition || !submissionNotFound) {\n return;\n }\n\n const { data: { result: attachmentTemplates } } = await CompetitionService.getAttachmentTemplates(competition.id);\n\n setAttachmentTemplates(attachmentTemplates.filter((template) => template.role === role));\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n useEffect(fetchCompetition, []);\n useEffect(fetchAutosavedSubmission, [competition]);\n useEffect(fetchAttachmentTemplates, [submissionNotFound]);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n \n \n \n {loading ? (\n \n ) : competition && submissionNotFound !== undefined && (\n \n )}\n \n \n \n \n \n \n )}\n
\n );\n};\n\nexport const AuthorSubmissionScreen = withStyles(styles)(AuthorSubmissionScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { AuthorRoute } from '../../routes/AuthorRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { AuthorSubmissionsScreen } from '../Author/AuthorSubmissionsScreen';\nimport { AuthorSubmissionDetailsScreen } from '../Author/AuthorSubmissionDetailsScreen';\nimport { AuthorCompetitionsScreen } from '../Author/AuthorCompetitionsScreen';\nimport { AuthorSubmissionScreen } from '../Author/AuthorSubmissionScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst AuthorScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport const AuthorScreens = withStyles(styles)(AuthorScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst BoardMemberRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.BoardMember) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const BoardMemberRoute = withRouter(BoardMemberRouteComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Theme } from '@material-ui/core';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport moment from 'moment';\n\nimport { useTranslator } from '../i18n/useTranslator';\nimport { Message } from './Message';\nimport { Box } from './Box';\nimport { BoxLoader } from './BoxLoader';\nimport { ErrorService } from '../services/Error.service';\nimport { CompetitionService } from '../services/Competition.service';\nimport { List } from './List';\nimport { DateService } from '../services/Date.service';\nimport { Competition } from '../shared/types/Competition';\nimport { Link } from './Link';\n\nconst styles = ({ custom }: Theme) =>\n createStyles({\n tabs: {\n marginBottom: 20,\n },\n tab: {\n borderRadius: `${custom.radius.r_0}px ${custom.radius.r_0}px 0 0`,\n },\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }> & {\n rolePath: string;\n };\n\nconst ActiveCompetitionListComponent: React.FunctionComponent = ({ rolePath }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [competitions, setCompetitions] = useState>([]);\n\n const { t } = useTranslator();\n\n const fetchCompetitions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await CompetitionService.getActiveForView();\n\n setCompetitions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const listHeader = [{\n key: 'name',\n text: t('competitionName'),\n }, {\n key: 'startDate',\n text: t('startDate'),\n }, {\n key: 'endDate',\n text: t('endDate'),\n }, {\n key: 'type',\n text: t('competitionType'),\n }];\n\n const mapRowsToListRows = () =>\n competitions.map((competition) => ({\n id: competition.id,\n items: [{\n key: 'name',\n content: {competition.name},\n }, {\n key: 'startDate',\n content: moment(competition.startDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'endDate',\n content: moment(competition.endDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'type',\n content: t(`competitionName${competition.type}`),\n }]\n }));\n\n useEffect(fetchCompetitions, []);\n\n return (\n
\n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : competitions?.length ? (\n \n ) : (\n {t('none')}\n )}\n \n )}\n
\n );\n};\n\nexport const ActiveCompetitionList = withStyles(styles)(withRouter(ActiveCompetitionListComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ActiveCompetitionList } from '../../ActiveCompetitionList';\nimport { SectionHeader } from '../../SectionHeader';\nimport { useTranslator } from '../../../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({});\n\ntype Props = WithStyles;\n\nconst BoardMemberCompetitionsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const BoardMemberCompetitionsScreen = withStyles(styles)(BoardMemberCompetitionsScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport partition from 'lodash/partition';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { Box } from '../../Box';\nimport { BoxLoader } from '../../BoxLoader';\nimport { SubmissionDetails } from '../../SubmissionDetails';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { SubmissionFull } from '../../../shared/types/SubmissionFull';\nimport { SubmissionStatusEnum } from '../../../shared/enums/SubmissionStatusEnum';\nimport { SubmissionStages } from '../../SubmissionStages';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { CompetitionCategoryEnum } from '../../../shared/enums/CompetitionCategoryEnum';\nimport { AdditionalDocumentation } from '../../AdditionalDocumentation';\n\nconst styles = () =>\n createStyles({\n box: {\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & RouteComponentProps<{ id: string }>;\n\nconst BoardMemberSubmissionDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [reviewerAttachments, setReviewerAttachments] = useState>([]);\n const [selectedStage, setSelectedStage] = useState();\n\n const { t } = useTranslator();\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOneFull(match.params.id);\n\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getAllAttachments(result.submission.id);\n\n const [reviewer, author] = partition(submissionAttachments, { role: RoleEnum.Reviewer });\n\n setReviewerAttachments(reviewer);\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const onUpdate = async (selectedStage: SubmissionStage) => {\n setSelectedStage(selectedStage);\n };\n\n useEffect(fetchSubmission, []);\n\n return (\n
\n \n {submission ? (\n \n ) : null}\n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission ? (\n \n \n \n \n \n \n {submission.submission.status === SubmissionStatusEnum.Won ? \n \n : null}\n \n \n {submission.submission.competition.category === CompetitionCategoryEnum.Person ? (\n \n ) : null}\n \n \n ) : null}\n
\n );\n};\n\nexport const BoardMemberSubmissionDetailsScreen = withStyles(styles)(BoardMemberSubmissionDetailsScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { List } from '../../List';\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Box } from '../../Box';\nimport { UserService } from '../../../services/User.service';\nimport { User } from '../../../shared/types/User';\nimport { Message } from '../../Message';\nimport { ErrorService } from '../../../services/Error.service';\nimport { BoxLoader } from '../../BoxLoader';\n\nconst styles = () =>\n createStyles({});\n\ntype Props = WithStyles;\n\nconst ReviewersScreenComponent: React.FunctionComponent = () => {\n const [serverError, setServerError] = useState('');\n const [users, setUsers] = useState>([]);\n const [loading, setLoading] = useState(true);\n\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'fullName',\n text: t('fullName')\n },\n {\n key: 'email',\n text: t('email')\n },\n {\n key: 'phoneNumber',\n text: t('phone')\n },\n {\n key: 'scientificFacility',\n text: t('scienceUnit')\n },\n {\n key: 'specialty',\n text: t('specialty')\n }\n ];\n\n const mapRowsToListRows = () =>\n users.map((user) => ({\n id: user.userId,\n items: [\n {\n key: 'fullName',\n content: `${user.firstName} ${user.lastName}`\n },\n {\n key: 'email',\n content: user.email\n },\n {\n key: 'phoneNumber',\n content: user.phoneNumber\n },\n {\n key: 'scientificFacility',\n content: user.scientificFacility\n },\n {\n key: 'specialty',\n content: user.specialty\n }\n ]\n }));\n\n const fetchReviewers = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result }\n } = await UserService.getReviewersGrid();\n\n setUsers(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchReviewers, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n {loading ? \n : \n } \n \n )}\n
\n );\n};\n\nexport const ReviewersScreen = withStyles(styles)(ReviewersScreenComponent);","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { BoardMemberRoute } from '../../routes/BoardMemberRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { BoardMemberCompetitionsScreen } from '../BoardMember/BoardMemberCompetitionsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { BoardMemberSubmissionDetailsScreen } from '../BoardMember/BoardMemberSubmissionDetailsScreen';\nimport { ReviewersScreen } from '../Common/ReviewersScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst BoardMemberScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport const BoardMemberScreens = withStyles(styles)(BoardMemberScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst FinanceCoordinatorRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.FinanceCoordinator) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const FinanceCoordinatorRoute = withRouter(FinanceCoordinatorRouteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ActiveCompetitionList } from '../../ActiveCompetitionList';\nimport { SectionHeader } from '../../SectionHeader';\nimport { useTranslator } from '../../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst FinanceCoordinatorCompetitionsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const FinanceCoordinatorCompetitionsScreen = withStyles(styles)(FinanceCoordinatorCompetitionsScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport partition from 'lodash/partition';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { BoxLoader } from '../../BoxLoader';\nimport { SubmissionDetails } from '../../SubmissionDetails';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { SubmissionFull } from '../../../shared/types/SubmissionFull';\nimport { CompetitionCategoryEnum } from '../../../shared/enums/CompetitionCategoryEnum';\nimport { AdditionalDocumentation } from '../../AdditionalDocumentation';\n\nconst styles = () =>\n createStyles({\n box: {\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & RouteComponentProps<{ id: string }>;\n\nconst FinanceCoordinatorSubmissionDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [reviewerAttachments, setReviewerAttachments] = useState>([]);\n\n const { t } = useTranslator();\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOneFull(match.params.id);\n\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getAllAttachments(result.submission.id);\n\n const [reviewer, author] = partition(submissionAttachments, { role: RoleEnum.Reviewer });\n\n setReviewerAttachments(reviewer);\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmission, []);\n\n return (\n
\n \n {submission ? (\n \n ) : null}\n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission ? (\n \n \n \n \n \n {submission.submission.competition.category === CompetitionCategoryEnum.Person ? (\n \n ) : null}\n \n \n ) : null}\n
\n );\n};\n\nexport const FinanceCoordinatorSubmissionDetailsScreen = withStyles(styles)(FinanceCoordinatorSubmissionDetailsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { FinanceCoordinatorRoute } from '../../routes/FinanceCoordinatorRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { FinanceCoordinatorCompetitionsScreen } from '../FinanceCoordinator/FinanceCoordinatorCompetitionsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { FinanceCoordinatorSubmissionDetailsScreen } from '../FinanceCoordinator/FinanceCoordinatorSubmissionDetailsScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst FinanceCoordinatorScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const FinanceCoordinatorScreens = withStyles(styles)(FinanceCoordinatorScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst ReviewerRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.Reviewer) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const ReviewerRoute = withRouter(ReviewerRouteComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { Check, Close } from '@material-ui/icons';\nimport moment from 'moment';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { ErrorService } from '../../../services/Error.service';\nimport { SimpleSubmission } from '../../../shared/types/SimpleSubmission';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Message } from '../../Message';\nimport { Box } from '../../Box';\nimport { BoxLoader } from '../../BoxLoader';\nimport { List } from '../../List';\nimport { Link } from '../../Link';\nimport { DateService } from '../../../services/Date.service';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ReviewerActiveSubmissionsScreenComponent: React.FunctionComponent = () => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submissions, setSubmissions] = useState>([]);\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'submissionName',\n text: t('submissionName'),\n },\n {\n key: 'author',\n text: t('author'),\n },\n {\n key: 'createdAt',\n text: t('submissionDate'),\n },\n {\n key: 'marked',\n text: t('marked'),\n },\n {\n key: 'mark',\n text: t('generalMark'),\n }, \n ];\n\n const mapRowsToListRows = () =>\n submissions.map((submission) => ({\n id: submission.id,\n items: [\n {\n key: 'submissionName',\n content: {submission.competitionName},\n },\n {\n key: 'author',\n content: `${submission.author.firstName} ${submission.author.lastName}`,\n },\n {\n key: 'createdAt',\n content: moment(submission.createdAt).format(DateService.DATE_FORMAT),\n },\n {\n key: 'marked',\n content: submission.hasReviewed ? : ,\n },\n {\n key: 'mark',\n content: submission.hasReviewed ? `${submission.mark}` : '',\n }, \n ],\n }));\n\n const fetchSubmissions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getActive();\n\n setSubmissions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmissions, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : submissions.length ? (\n \n ) : (\n
{t('none')}
\n )}\n
\n )}\n
\n );\n};\n\nexport const ReviewerActiveSubmissionsScreen = withStyles(styles)(ReviewerActiveSubmissionsScreenComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport moment from 'moment';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { ErrorService } from '../../../services/Error.service';\nimport { SimpleSubmission } from '../../../shared/types/SimpleSubmission';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Message } from '../../Message';\nimport { Box } from '../../Box';\nimport { BoxLoader } from '../../BoxLoader';\nimport { List } from '../../List';\nimport { Link } from '../../Link';\nimport { DateService } from '../../../services/Date.service';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ReviewerArchivedSubmissionsScreenComponent: React.FunctionComponent = () => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submissions, setSubmissions] = useState>([]);\n const { t } = useTranslator();\n\n const listHeader = [\n {\n key: 'submissionName',\n text: t('submissionName'),\n },\n {\n key: 'author',\n text: t('author'),\n },\n {\n key: 'createdAt',\n text: t('submissionDate'),\n },\n ];\n\n const mapRowsToListRows = () =>\n submissions.map((submission) => ({\n id: submission.id,\n items: [\n {\n key: 'submissionName',\n content: {submission.competitionName},\n },\n {\n key: 'author',\n content: `${submission.author.firstName} ${submission.author.lastName}`,\n },\n {\n key: 'createdAt',\n content: moment(submission.createdAt).format(DateService.DATE_FORMAT),\n },\n ],\n }));\n\n const fetchSubmissions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getArchived();\n\n setSubmissions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setLoading(false);\n })();\n };\n\n useEffect(fetchSubmissions, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : submissions.length ? (\n \n ) : (\n
{t('none')}
\n )}\n
\n )}\n
\n );\n};\n\nexport const ReviewerArchivedSubmissionsScreen = withStyles(styles)(ReviewerArchivedSubmissionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Box } from './Box';\nimport { BoxHeader } from './BoxHeader';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () =>\n createStyles({\n root: {\n marginBottom: 20,\n },\n });\n\ntype Props = WithStyles & {};\n\nconst ReviewerSubmissionInstructionsComponent: React.FunctionComponent = ({ classes }) => {\n const { t } = useTranslator();\n\n return (\n \n \n
    \n
  1. Zapoznaj się z dokumentacją uczestnika
  2. \n
  3. Oceń wniosek
  4. \n
  5. Pobierz szablony dokumentów dla recenzenta i zapisz je u siebie na dysku
  6. \n
  7. Uzupełnij szablony
  8. \n
  9. Załącz do zgłoszenia skany wypełnionych dokumentów
  10. \n
\n
\n {t('iInCaseOfHelp')} kontakt.fundacja@polpharma.com\n
\n
\n );\n};\n\nexport const ReviewerSubmissionInstructions = withStyles(styles)(ReviewerSubmissionInstructionsComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport partition from 'lodash/partition';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Submission } from '../../../shared/types/Submission';\nimport { SectionHeader } from '../../SectionHeader';\nimport { Message } from '../../Message';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Box } from '../../Box';\nimport { SubmissionDetails } from '../../SubmissionDetails';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { ReviewerSubmissionInstructions } from '../../ReviewerSubmissionInstructions';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { RootState } from '../../../store/rootReducer';\nimport { useSelector } from 'react-redux';\nimport { StageService } from '../../../services/Stage.service';\nimport { BillingMethodEnum } from '../../../shared/enums/BillingMethodEnum';\nimport { Alert } from '@material-ui/lab';\nimport { CompetitionCategoryEnum } from '../../../shared/enums/CompetitionCategoryEnum';\nimport { AdditionalDocumentation } from '../../AdditionalDocumentation';\n\nconst styles = () =>\n createStyles({ \n actionsBox: {\n marginBottom: 20,\n },\n box: {\n marginBottom: 20,\n },\n alert: {\n marginTop: -10\n }\n });\n\ntype Props = WithStyles &\n RouteComponentProps<{\n id: string;\n }>;\n\nconst ReviewerSubmissionScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [reviewerAttachments, setReviewerAttachments] = useState>([]);\n const [canUserReviewSubmission, setCanUserReviewSubmission] = useState();\n const [activeStage, setActiveStage] = useState();\n\n const { t } = useTranslator();\n const { userId } = useSelector((state: RootState) => state.user);\n\n const checkIfUserCanReviewSubmission = () => {\n (async () => {\n try {\n\n const {\n data: { result },\n } = await SubmissionService.canReviewSubmission(match.params.id, userId);\n \n setCanUserReviewSubmission(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n })();\n };\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOne(match.params.id);\n\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getReviewerAttachments(result.id);\n\n const [reviewer, author] = partition(submissionAttachments, { role: RoleEnum.Reviewer });\n\n setReviewerAttachments(reviewer);\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const fetchStages = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const { data: { result } } = await StageService.getActiveStage(match.params.id);\n setActiveStage(result);\n\n } catch (error) {\n }\n setLoading(false);\n })();\n };\n useEffect(fetchStages, [])\n useEffect(fetchSubmission, []);\n useEffect(checkIfUserCanReviewSubmission, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission ? (\n \n \n \n \n \n \n \n \n {submission.competition.billingMethod === BillingMethodEnum.PerCompetition && \n {t('billingPerCompetitionInfo')}}\n {submission.competition.category === CompetitionCategoryEnum.Person ? (\n \n ) : null}\n \n \n ) : null}\n
\n );\n};\n\nexport const ReviewerSubmissionScreen = withStyles(styles)(ReviewerSubmissionScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { ReviewerRoute } from '../../routes/ReviewerRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { ReviewerActiveSubmissionsScreen } from '../../screens/Reviewer/ReviewerActiveSubmissionsScreen';\nimport { ReviewerArchivedSubmissionsScreen } from '../../screens/Reviewer/ReviewerArchivedSubmissionsScreen';\nimport { ReviewerSubmissionScreen } from '../../screens/Reviewer/ReviewerSubmissionScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst ReviewerScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const ReviewerScreens = withStyles(styles)(ReviewerScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst ScientificCouncilMemberRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.ScientificCouncilMember) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const ScientificCouncilMemberRoute = withRouter(ScientificCouncilMemberRouteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ActiveCompetitionList } from '../../ActiveCompetitionList';\nimport { SectionHeader } from '../../SectionHeader';\nimport { useTranslator } from '../../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ScientificCouncilMemberCompetitionsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const ScientificCouncilMemberCompetitionsScreen = withStyles(styles)(ScientificCouncilMemberCompetitionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { Box } from './Box';\nimport { BoxHeader } from './BoxHeader';\nimport { useTranslator } from '../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & {};\n\nconst SubmissionInstructionsComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n
    \n
  1. Przejrzyj dokumentację zgłaszającego
  2. \n
  3. Wpisz w dyskusji sugestie odnośnie recezentów
  4. \n
\n
\n );\n};\n\nexport const SubmissionInstructions = withStyles(styles)(SubmissionInstructionsComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles, Grid } from '@material-ui/core';\nimport { RouteComponentProps } from 'react-router';\nimport partition from 'lodash/partition';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { ErrorService } from '../../../services/Error.service';\nimport { Message } from '../../Message';\nimport { Box } from '../../Box';\nimport { BoxLoader } from '../../BoxLoader';\nimport { SubmissionDetails } from '../../SubmissionDetails';\nimport { SubmissionService } from '../../../services/Submissions.service';\nimport { SubmissionAttachment } from '../../../shared/types/SubmissionAttachment';\nimport { ScreenToolbar } from '../../ScreenToolbar';\nimport { RoleEnum } from '../../../shared/enums/RoleEnum';\nimport { SubmissionFull } from '../../../shared/types/SubmissionFull';\nimport { SubmissionInstructions } from '../../SubmissionInstructions';\nimport { SubmissionStages } from '../../SubmissionStages';\nimport { SubmissionStatusEnum } from '../../../shared/enums/SubmissionStatusEnum';\nimport { SubmissionStage } from '../../../shared/types/SubmissionStage';\nimport { SuggestedReviewers } from '../../SuggestedReviewers';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/rootReducer';\nimport { CompetitionCategoryEnum } from '../../../shared/enums/CompetitionCategoryEnum';\nimport { AdditionalDocumentation } from '../../AdditionalDocumentation';\n\nconst styles = () =>\n createStyles({\n box: {\n marginBottom: 20,\n marginTop: 10\n },\n suggestedReviewers: {\n fontSize: '1rem',\n padding: 0\n },\n suggestedReviewersHeader: {\n height: '10px'\n },\n heading: {\n textTransform: 'uppercase',\n fontWeight: 600,\n }\n });\n\ntype Props = WithStyles & RouteComponentProps<{ id: string }>;\n\nconst SubmissionDetailsScreenComponent: React.FunctionComponent = ({ classes, match }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(false);\n \n const [submission, setSubmission] = useState(null);\n const [authorAttachments, setAuthorAttachments] = useState>([]);\n const [reviewerAttachments, setReviewerAttachments] = useState>([]);\n\n const [selectedStage, setSelectedStage] = useState();\n\n const { t } = useTranslator();\n\n const { role } = useSelector((state: RootState) => state.user);\n const getRolePath = () => {\n switch (role) {\n case RoleEnum.ScientificCouncilMember:\n return 'scientific-council-member';\n case RoleEnum.CompetitionCommitteeMember:\n return 'competition-committee-member';\n case RoleEnum.CompetitionJuryMember:\n return 'competition-jury-member';\n }\n\n return '';\n };\n\n const fetchSubmission = () => {\n (async () => {\n setLoading(true);\n setServerError('');\n\n try {\n const {\n data: { result },\n } = await SubmissionService.getOneFull(match.params.id);\n\n setSubmission(result);\n\n try {\n const {\n data: { result: submissionAttachments },\n } = await SubmissionService.getAllAttachments(result.submission.id);\n\n const [reviewer, author] = partition(submissionAttachments, { role: RoleEnum.Reviewer });\n\n setReviewerAttachments(reviewer);\n setAuthorAttachments(author);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n const onUpdate = async (selectedStage: SubmissionStage) => {\n setSelectedStage(selectedStage);\n };\n\n useEffect(fetchSubmission, []);\n\n return (\n
\n \n {submission ? (\n \n ) : null}\n {serverError ? (\n {t(serverError)}\n ) : loading ? (\n \n ) : submission ? (\n \n \n \n \n \n \n \n \n {submission.submission.status === SubmissionStatusEnum.Won ? (\n \n ) : (\n \n )}\n \n\n {submission.submission.status === SubmissionStatusEnum.New ||\n submission.submission.status === SubmissionStatusEnum.Review ? (\n \n \n \n ) : null}\n \n {submission.submission.competition.category === CompetitionCategoryEnum.Person ? (\n \n ) : null}\n \n \n ) : null}\n
\n );\n};\n\nexport const SubmissionDetailsScreen = withStyles(styles)(SubmissionDetailsScreenComponent);","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { ScientificCouncilMemberRoute } from '../../routes/ScientificCouncilMemberRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { ScientificCouncilMemberCompetitionsScreen } from '../ScientificCouncilMember/ScientificCouncilMemberCompetitionsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { SubmissionDetailsScreen } from '../Common/ScientificCouncilMemberSubmissionDetailsScreen';\nimport { ReviewersScreen } from '../Common/ReviewersScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst ScientificCouncilMemberScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport const ScientificCouncilMemberScreens = withStyles(styles)(ScientificCouncilMemberScreensComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\nimport { useSelector } from 'react-redux';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { repeatNewPassword, password } from '../../shared/validators';\nimport { ErrorService } from '../../services/Error.service';\nimport { FormError } from '../FormError';\nimport { UserService } from '../../services/User.service';\nimport { RootState } from '../../store/rootReducer';\nimport { FormSuccess } from '../FormSuccess';\n\nconst styles = () =>\n createStyles({\n button: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & RouteComponentProps;\n\ntype FormValues = {\n oldPassword: string;\n newPassword: string;\n newPasswordRepeat: string;\n};\n\nconst PasswordChangeFormComponent: React.FunctionComponent = ({ classes }) => {\n const { userId } = useSelector((state: RootState) => state.user);\n const [serverError, setServerError] = useState('');\n const [successMessage, setSuccessMessage] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n oldPassword: password(t),\n newPassword: password(t),\n newPasswordRepeat: repeatNewPassword(t),\n });\n\n const initialValues = {\n oldPassword: '',\n newPassword: '',\n newPasswordRepeat: '',\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting, resetForm }: FormikHelpers) => {\n setServerError('');\n setSuccessMessage('');\n setSubmitting(true);\n\n try {\n await UserService.changePassword(userId, {\n oldPassword: values.oldPassword,\n newPassword: values.newPassword,\n });\n\n resetForm();\n setSuccessMessage('passwordChangeSuccess');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\n \n \n \n \n\n \n\n \n\n \n \n )}\n
\n );\n};\n\nexport const PasswordChangeForm = withStyles(styles)(withRouter(PasswordChangeFormComponent));\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\nimport { useSelector } from 'react-redux';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { specialty as specialtyValidator } from '../../shared/validators';\nimport { ErrorService } from '../../services/Error.service';\nimport { FormError } from '../FormError';\nimport { UserService } from '../../services/User.service';\nimport { RootState } from '../../store/rootReducer';\nimport { FormSuccess } from '../FormSuccess';\n\nconst styles = () =>\n createStyles({\n button: {\n alignSelf: 'flex-end',\n },\n });\n\ntype Props = WithStyles & RouteComponentProps;\n\ntype FormValues = {\n specialty: string;\n};\n\nconst UpdateSpecialtyFormComponent: React.FunctionComponent = ({ classes }) => {\n const { specialty } = useSelector((state: RootState) => state.user);\n const [serverError, setServerError] = useState('');\n const [successMessage, setSuccessMessage] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n specialty: specialtyValidator(t),\n });\n\n const initialValues = {\n specialty,\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting, resetForm }: FormikHelpers) => {\n setServerError('');\n setSuccessMessage('');\n setSubmitting(true);\n try {\n await UserService.updateSpecialty(values.specialty);\n\n resetForm();\n setSuccessMessage('updateSpecialtySuccess');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\n \n \n\n \n\n \n\n \n \n )}\n
\n );\n};\n\nexport const UpdateSpecialtyForm = withStyles(styles)(withRouter(UpdateSpecialtyFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\n\nimport { DashboardScreenWrapper } from '../DashboardScreenWrapper';\nimport { SectionHeader } from '../SectionHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { PasswordChangeForm } from '../forms/PasswordChangeForm';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\nimport { UpdateSpecialtyForm } from '../forms/UpdateSpecialtyForm';\n\nconst styles = () =>\n createStyles({\n box: {\n marginTop: 20,\n },\n });\n\ntype Props = WithStyles;\n\nconst ProfileScreenComponent: React.FunctionComponent = ({ classes }) => {\n const { role } = useSelector((state: RootState) => state.user);\n const { t } = useTranslator();\n\n return (\n \n \n \n \n \n \n {role === RoleEnum.Reviewer ? (\n \n \n \n \n ) : null}\n \n );\n};\n\nexport const ProfileScreen = withStyles(styles)(ProfileScreenComponent);\n","import React, { useEffect, useState } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst PrivateRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const [isUserLoggedIn] = useState(true);\n\n useEffect(() => {\n if (!isUserLoggedIn) {\n history.push('/login');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const PrivateRoute = withRouter(PrivateRouteComponent);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { useLocation, useHistory } from 'react-router';\nimport qs from 'query-string'\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { Message } from '../Message';\nimport { UserService } from '../../services/User.service';\nimport { ErrorService } from '../../services/Error.service';\nimport { BoxLoader } from '../BoxLoader';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ConfirmEmailScreenComponent: React.FunctionComponent = () => {\n const [loading, setLoading] = useState(true);\n const [, setError] = useState('');\n\n const location = useLocation();\n const history = useHistory();\n const { t } = useTranslator();\n\n const confirmEmail = () => {\n (async () => {\n try {\n const query = qs.parse(location.search, { decode: false })\n const code = query.code as string\n const id = query.id as string\n\n await UserService.confirmEmail(code, id)\n \n history.push('/login', { confirmedEmail: true })\n } catch (error) {\n setError(ErrorService.parseError(error))\n }\n \n setLoading(false);\n })()\n }\n\n useEffect(confirmEmail, [])\n\n return (\n \n \n \n {loading ? (\n \n ) : (\n {t('errorConfirmEmail')}\n )}\n \n \n );\n};\n\nexport const ConfirmEmailScreen = withStyles(styles)(ConfirmEmailScreenComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { email } from '../../shared/validators';\nimport { ErrorService } from '../../services/Error.service';\nimport { UserService } from '../../services/User.service';\nimport { FormError } from '../FormError';\nimport classNames from 'classnames';\n\nconst styles = () =>\n createStyles({\n root: {\n textAlign: \"left\",\n padding: \"0 0 10px 0\",\n },\n });\n\ntype Props = WithStyles & RouteComponentProps;\n\ntype FormValues = {\n email: string;\n};\n\nconst ResetPasswordFormComponent: React.FunctionComponent = ({ history, classes }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n email: email(t),\n });\n\n const initialValues = {\n email: ''\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setServerError('');\n setSubmitting(true);\n\n try {\n await UserService.resetPasswordByEmailToken({email: values.email});\n console.log(values.email);\n history.push('/password/reset/email', { email: values.email });\n \n } catch (error) {\n setServerError(ErrorService.parseError(error));\n console.log(error);\n }\n\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\n \n\n
\n {t('resetPasswordScreenMessage')}\n
\n \n \n\n \n\n \n
\n )}\n
\n );\n};\n\nexport const ResetPasswordForm = withStyles(styles)(withRouter(ResetPasswordFormComponent));\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { HelpMessage } from '../HelpMessage';\nimport { ResetPasswordForm } from '../forms/ResetPasswordForm';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ResetPasswordScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const ResetPasswordScreen = withStyles(styles)(ResetPasswordScreenComponent);","import produce from 'immer';\n\nimport { UserActions } from './actions';\nimport { ActionType } from '../actionTypes';\nimport { User } from '../../shared/types/User';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\nexport type UserState = User;\n\nconst initialState: UserState = {\n userId: '',\n firstName: '',\n lastName: '',\n role: RoleEnum.Author,\n email: '',\n phoneNumber: '',\n scientificFacility: '',\n academicTitle: '',\n specialty: '',\n acceptedRODO: false,\n isActive: true\n};\n\nconst userReducer = (state: UserState = initialState, action: UserActions) =>\n produce(state, (draft) => {\n switch (action.type) {\n case ActionType.SET_USER:\n return Object.assign({}, draft, action.payload);\n }\n });\n\nexport default userReducer;\n","import { combineReducers } from 'redux';\n\nimport user, { UserState } from './user/reducer';\n\nexport interface RootState {\n user: UserState;\n}\n\nconst rootReducer = combineReducers({\n user,\n});\n\nexport default rootReducer;\n","import { createStore, compose, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport rootReducer, { RootState } from './rootReducer';\nimport { Actions } from './helpers';\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: Function;\n }\n}\n\nconst composeEnhancers =\n (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n trace: true,\n traceLimit: 25,\n })) ||\n compose;\n\nconst store = createStore(rootReducer, composeEnhancers(applyMiddleware(thunk)));\n\nexport default store;\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { useHistory } from 'react-router';\nimport { Button } from '../Button';\nimport { HelpMessage } from '../HelpMessage';\n\nconst styles = () =>\n createStyles({\n loginButton: {\n marginTop: 20,\n },\n });\n\ntype Props = WithStyles;\n\nconst PasswordResetEmailSentScreenComponent: React.FunctionComponent = ({ classes }) => {\n const { t } = useTranslator();\n\n const history = useHistory();\n const { email } = history.location.state as any;\n\n return (\n \n \n \n
{t('resetPasswordMessage1')} {email}
\n
{t('resetPasswordMessage2')}
\n
\n \n \n
\n
\n );\n};\n\nexport const PasswordResetEmailSentScreen = withStyles(styles)(PasswordResetEmailSentScreenComponent);\n","import React, { useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { FormikHelpers } from 'formik';\nimport * as Yup from 'yup';\n\nimport { Form } from '../Form';\nimport { FieldTextField } from '../form-fields/FieldTextField';\nimport { useTranslator, TFunction } from '../../i18n/useTranslator';\nimport { Button } from '../Button';\nimport { FormContent } from '../FormContent';\nimport { password, repeatNewPassword } from '../../shared/validators';\nimport { ErrorService } from '../../services/Error.service';\nimport { UserService } from '../../services/User.service';\nimport { FormError } from '../FormError';\nimport { RouteComponentProps, withRouter } from 'react-router';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles &\nRouteComponentProps & {\n token: string;\n userId: string;\n};\n\ntype FormValues = {\n newPassword: string;\n repeatedNewPassword: string;\n};\n\nconst CreatePasswordFormComponent: React.FunctionComponent = ({ history, token, userId }) => {\n const [serverError, setServerError] = useState('');\n\n const { t } = useTranslator();\n\n const validationSchema = (t: TFunction) =>\n Yup.object().shape({\n newPassword: password(t),\n repeatedNewPassword: repeatNewPassword(t),\n });\n\n const initialValues = {\n newPassword: '',\n repeatedNewPassword: '',\n };\n\n const handleSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\n setServerError('');\n setSubmitting(true);\n\n try {\n\n await UserService.setNewPasswordByEmailToken({\n token: token,\n newPassword: values.newPassword,\n repeatedNewPassword: values.repeatedNewPassword,\n userId: userId\n });\n\n history.push('/password/reset/success');\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n console.log(error);\n history.push('/password/reset/error');\n }\n setSubmitting(false);\n };\n\n return (\n
\n {({ isSubmitting }) => (\n \n \n \n\n \n\n \n \n )}\n
\n );\n};\n\nexport const CreatePasswordForm = withStyles(styles)(withRouter(CreatePasswordFormComponent));\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { HelpMessage } from '../HelpMessage';\nimport { CreatePasswordForm } from '../forms/CreatePasswordForm';\nimport { ErrorService } from '../../services/Error.service';\nimport { useLocation } from 'react-router';\nimport qs from 'query-string'\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CreatePasswordScreenComponent: React.FunctionComponent = () => {\n const [token, setToken] = useState('');\n const [userId, setUserId] = useState('');\n const [, setError] = useState('');\n\n const location = useLocation();\n const { t } = useTranslator();\n\n const retrieveToken = () => {\n (async () => {\n try {\n const query = qs.parse(location.search, { decode: false })\n const code = query.code as string\n setToken(code);\n const userId = query.id as string\n setUserId(userId);\n } catch (error) {\n setError(ErrorService.parseError(error))\n }\n })()\n }\n\n useEffect(retrieveToken, [])\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport const CreatePasswordScreen = withStyles(styles)(CreatePasswordScreenComponent);","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { HelpMessage } from '../HelpMessage';\nimport { Button } from '../Button';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CreatePasswordSuccessScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n \n
{t('passwordChangeSuccess')}
\n
\n \n \n
\n
\n );\n};\n\nexport const CreatePasswordSuccessScreen = withStyles(styles)(CreatePasswordSuccessScreenComponent);","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { UnloggedLayout } from '../layouts/UnloggedLayout';\nimport { Box } from '../Box';\nimport { BoxHeader } from '../BoxHeader';\nimport { useTranslator } from '../../i18n/useTranslator';\nimport { HelpMessage } from '../HelpMessage';\nimport { Button } from '../Button';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst ResetPasswordErrorScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n \n \n \n
{t('passwordChangeError')}
\n
\n \n \n
\n
\n );\n};\n\nexport const ResetPasswordErrorScreen = withStyles(styles)(ResetPasswordErrorScreenComponent);","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst CompetitionCoordinatorRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.CompetitionCoordinator) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const CompetitionCoordinatorRoute = withRouter(CompetitionCoordinatorRouteComponent);\n","import React, { useState, useEffect } from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport moment from 'moment';\nimport { BorderColorSharp } from '@material-ui/icons';\n\nimport { useTranslator } from '../../../i18n/useTranslator';\nimport { SectionHeader } from '../../SectionHeader';\nimport { List } from '../../List';\nimport { Box } from '../../Box';\nimport { ErrorService } from '../../../services/Error.service';\nimport { CompetitionService } from '../../../services/Competition.service';\nimport { Competition } from '../../../shared/types/Competition';\nimport { Message } from '../../Message';\nimport { DateService } from '../../../services/Date.service';\nimport { BoxLoader } from '../../BoxLoader';\nimport { Link } from '../../Link';\nimport { ListAction } from '../../ListAction';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionCoordinatorCompetitionsScreenComponent: React.FunctionComponent = ({ classes }) => {\n const [serverError, setServerError] = useState('');\n const [loading, setLoading] = useState(true);\n const [competitions, setCompetitions] = useState>([]);\n\n const { t } = useTranslator();\n\n const listHeader = [{\n key: 'name',\n text: t('competitionName'),\n }, {\n key: 'startDate',\n text: t('startDate'),\n }, {\n key: 'endDate',\n text: t('endDate'),\n }, {\n key: 'type',\n text: t('competitionType'),\n }, {\n key: 'status',\n text: t('status'),\n }, {\n key: 'action',\n text: '',\n pullRight: true,\n }];\n\n const mapRowsToListRows = () =>\n competitions.map((competition) => ({\n id: competition.id,\n items: [{\n key: 'name',\n content: {competition.name},\n }, {\n key: 'startDate',\n content: moment(competition.startDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'endDate',\n content: moment(competition.endDate).format(DateService.DATE_FORMAT),\n }, {\n key: 'type',\n content: t(`competitionName${competition.type}`),\n }, {\n key: 'status',\n content: competition.isActive ? t('active') : t('inactive'),\n }, {\n key: 'action',\n content:\n \n \n \n }]\n }));\n\n const fetchCompetitions = () => {\n (async () => {\n setServerError('');\n setLoading(true);\n\n try {\n const {\n data: { result },\n } = await CompetitionService.getForCompetitionCoordinator();\n\n setCompetitions(result);\n } catch (error) {\n setServerError(ErrorService.parseError(error));\n }\n\n setLoading(false);\n })();\n };\n\n useEffect(fetchCompetitions, []);\n\n return (\n
\n \n {serverError ? (\n {t(serverError)}\n ) : (\n \n {loading ? (\n \n ) : competitions?.length ? (\n \n ) : (\n {t('noCompetitionsFound')}\n )}\n \n )}\n
\n );\n};\n\nexport const CompetitionCoordinatorCompetitionsScreen = withStyles(styles)(CompetitionCoordinatorCompetitionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { CompetitionCoordinatorRoute } from '../../routes/CompetitionCoordinatorRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { AdminCompetitionDetailsScreen } from '../Admin/CompetitionDetailsScreen';\nimport { AdminStageDetailsScreen } from '../Admin/AdminStageDetailsScreen';\nimport { AdminSubmissionDetailsScreen } from '../Admin/AdminSubmissionDetailsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { AdminUserCompetitionListScreen } from '../Admin/AdminUserCompetitionListScreen';\nimport { AdminAddStageScreen } from '../Admin/AdminAddStageScreen';\nimport { CompetitionCoordinatorCompetitionsScreen } from '../CompetitionCoordinator/CompetitionCoordinatorCompetitionsScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst CompetitionCoordinatorScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const CompetitionCoordinatorScreens = withStyles(styles)(CompetitionCoordinatorScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst CompetitionCommitteeMemberRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.CompetitionCommitteeMember) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const CompetitionCommitteeMemberRoute = withRouter(CompetitionCommitteeMemberRouteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ActiveCompetitionList } from '../../ActiveCompetitionList';\nimport { SectionHeader } from '../../SectionHeader';\nimport { useTranslator } from '../../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionCommitteeMemberCompetitionsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const CompetitionCommitteeMemberCompetitionsScreen = withStyles(styles)(CompetitionCommitteeMemberCompetitionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { CompetitionCommitteeMemberRoute } from '../../routes/CompetitionCommitteeMemberRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { CompetitionCommitteeMemberCompetitionsScreen } from '../CompetitionCommitteeMember/CompetitionCommitteeMemberCompetitionsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { SubmissionDetailsScreen } from '../Common/ScientificCouncilMemberSubmissionDetailsScreen';\nimport { ReviewersScreen } from '../Common/ReviewersScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst CompetitionCommitteeMemberScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport const CompetitionCommitteeMemberScreens = withStyles(styles)(CompetitionCommitteeMemberScreensComponent);\n","import React, { useEffect } from 'react';\nimport { Route, RouteProps, withRouter, RouteComponentProps } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { RootState } from '../../store/rootReducer';\nimport { RoleEnum } from '../../shared/enums/RoleEnum';\n\ntype Props = RouteProps & RouteComponentProps;\n\nconst CompetitionJuryMemberRouteComponent: React.FunctionComponent = ({ component: Component, history, ...restProps }) => {\n const { role } = useSelector((state: RootState) => state.user);\n\n useEffect(() => {\n if (role !== RoleEnum.CompetitionJuryMember) {\n history.push('/');\n }\n });\n\n return (Component ? : null)} />;\n};\n\nexport const CompetitionJuryMemberRoute = withRouter(CompetitionJuryMemberRouteComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport { ActiveCompetitionList } from '../../ActiveCompetitionList';\nimport { SectionHeader } from '../../SectionHeader';\nimport { useTranslator } from '../../../i18n/useTranslator';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles;\n\nconst CompetitionJuryMemberCompetitionsScreenComponent: React.FunctionComponent = () => {\n const { t } = useTranslator();\n\n return (\n
\n \n \n
\n );\n};\n\nexport const CompetitionJuryMemberCompetitionsScreen = withStyles(styles)(CompetitionJuryMemberCompetitionsScreenComponent);\n","import React from 'react';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport { RouteComponentProps, Switch } from 'react-router';\n\nimport { CompetitionJuryMemberRoute } from '../../routes/CompetitionJuryMemberRoute';\nimport { DashboardScreenWrapper } from '../../DashboardScreenWrapper';\nimport { CompetitionJuryMemberCompetitionsScreen } from '../CompetitionJuryMember/CompetitionJuryMemberCompetitionsScreen';\nimport { CompetitionRankingListScreen } from '../Common/CompetitionRankingListScreen';\nimport { SubmissionDetailsScreen } from '../Common/ScientificCouncilMemberSubmissionDetailsScreen';\nimport { ReviewersScreen } from '../Common/ReviewersScreen';\n\nconst styles = () => createStyles({});\n\ntype Props = WithStyles & RouteComponentProps;\n\nconst CompetitionJuryMemberScreensComponent: React.FunctionComponent = ({ match }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport const CompetitionJuryMemberScreens = withStyles(styles)(CompetitionJuryMemberScreensComponent);\n","import React from 'react';\nimport { CssBaseline, ThemeProvider, createMuiTheme } from '@material-ui/core';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { Switch, Route } from 'react-router';\nimport { Provider } from 'react-redux';\n\nimport theme from './styles/theme';\nimport { AdminScreens } from './components/screens/wrappers/AdminScreens';\nimport { RegitrationScreen } from './components/screens/RegistrationScreen';\nimport { LoginScreen } from './components/screens/LoginScreen';\nimport { SuccessRegistrationScreen } from './components/screens/SuccessRegistrationScreen';\nimport { AuthorScreens } from './components/screens/wrappers/AuthorScreens';\nimport { BoardMemberScreens } from './components/screens/wrappers/BoardMemberScreens';\nimport { FinanceCoordinatorScreens } from './components/screens/wrappers/FinanceCoordinatorScreens';\nimport { ReviewerScreens } from './components/screens/wrappers/ReviewerScreens';\nimport { ScientificCouncilMemberScreens } from './components/screens/wrappers/ScientificCouncilMemberScreens';\nimport { ProfileScreen } from './components/screens/ProfileScreen';\nimport { PrivateRoute } from './components/PrivateRoute';\nimport { ConfirmEmailScreen } from './components/screens/ConfirmEmailScreen';\nimport { ResetPasswordScreen } from './components/screens/ResetPasswordScreen';\nimport store from './store';\nimport { PasswordResetEmailSentScreen } from './components/screens/PasswordResetEmailSentScreen';\nimport { CreatePasswordScreen } from './components/screens/CreatePasswordScreen';\nimport { CreatePasswordSuccessScreen } from './components/screens/CreatePasswordSuccessScreen';\nimport { ResetPasswordErrorScreen } from './components/screens/ResetPasswordErrorScreen';\nimport { CompetitionCoordinatorScreens } from './components/screens/wrappers/CompetitionCoordinatorScreens';\nimport { CompetitionCommitteeMemberScreens } from './components/screens/wrappers/CompetitionCommitteeMemberScreens';\nimport { CompetitionJuryMemberScreens } from './components/screens/wrappers/CompetitionJuryMemberScreens';\nimport { SnackbarProvider } from 'notistack';\n\nfunction App() {\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 \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import { Translation } from '../Translation.type';\n\nexport const plTranslation = {\n login: 'Logowanie',\n signIn: 'Zaloguj się',\n registration: 'Rejestracja',\n name: 'Imię',\n surname: 'Nazwisko',\n email: 'Email',\n resetPasswordMessage1: 'Wysłaliśmy wiadomość na adres',\n resetPasswordMessage2: 'Kliknij w link aby zmienić hasło. Nie otrzymałeś wiadomości? Sprawdź folder SPAM.',\n linkSent: 'Wiadomość została wysłana.', \n password: 'Hasło',\n forgotPassword: 'Zapomniałeś hasło?',\n resetPassword: 'Zresetuj hasło',\n register: 'Zarejestruj się',\n scienceUnit: 'Nazwa jednostki naukowej',\n phone: 'Numer telefonu',\n iAcceptTermsTitle: 'Zaakceptuj klauzule o danych osobowych',\n iAcceptTerms: 'Akceptuję klauzulę o danych osobowych',\n iTerms: 'Klauzula o danych osobowych',\n iInCaseOfHelp: 'W razie pytań prosimy o kontakt:',\n fieldIsRequired: 'Wypełnij to pole',\n wrongEmailAddress: 'Nieprawidłowy adres email',\n incorrectNumber: 'Wprowadź poprawną liczbę bez spacji i znaków specjalnych',\n participant: 'Uczestnik',\n reviewer: 'Recenzent',\n reviewerSpecialization: 'Specjalizacja recenzenta',\n specialty: 'Specjalizacja',\n maximumFieldLength: 'Podana wartość jest zbyt długa',\n youMustAgreeToTerms: 'Musisz zaakceptować klauzulę o danych osobowych',\n passwordTooShort: 'Hasło powinno zawierać conajmniej 6 znaków',\n passwordTooLong: 'Hasło powinno zawierać maksymalnie 12 znaków',\n fullName: 'Imię i nazwisko',\n role: 'Rola',\n users: 'Użytkownicy',\n addUser: 'Dodaj użytkownika',\n userDetails: 'Szczegóły użytkownika',\n scientificCouncil: 'Członek rady naukowej',\n management: 'Członek zarządu',\n admin: 'Administrator',\n competitionCoordinator: 'Koordynator konkursu',\n competitionCommitteeMember: 'Członek komisji konkursowej',\n competitionJuryMember: 'Członek kapituły konkursu',\n logout: 'Wyloguj się',\n competitions: 'Konkursy',\n startDate: 'Data rozpoczęcia',\n endDate: 'Data zakończenia',\n status: 'Status',\n competitionType: 'Rodzaj konkursu',\n competitionDetails: 'Szczegóły konkursu',\n addCompetition: 'Dodaj konkurs',\n invalidPassword: 'Hasło powinno zawierać conajmniej 6 znaków, jedną wielką literę, cyfrę oraz znak specjalny',\n serverError: 'Wystąpił nieoczekiwany błąd, spróbuj ponownie lub skontaktuj się z administratorem',\n registrationSuccess: 'Konto założone pomyślnie',\n activateYourAccount: 'Na podany adres email wysłaliśmy link aktywacyjny. Kliknij w link, aby aktywować konto.',\n startStatus: 'Status początkowy',\n active: 'Aktywny',\n inactive: 'Nieaktywny',\n researchProjectCompetition: 'Konkurs na Projekt Badawczy',\n scholarshipProgram: 'Program Stypendialny',\n mobileTechnics: 'Konkurs na Techniki Mobilne',\n alreadyHasActiveStage: 'To zgłoszenie ma aktywny etap',\n disalbleActiveStage: 'Dezaktywuj aktywny etap przed aktywacją etapu',\n competitionName0: '???',\n competitionName1: 'Konkurs na Projekt Badawczy',\n competitionName2: 'Program Stypendialny',\n competitionName3: 'Konkurs na Techniki Mobilne',\n endDateShouldBeAfterStartDate: 'Data zakończenia powinna być późniejsza niż data rozpoczęcia',\n submissions: 'Zgłoszenia',\n submissionName: 'Nazwa konkursu',\n submissionDate: 'Data zgłoszenia',\n submissionDetails: 'Szczegóły zgłoszenia',\n submission: 'Zgłoszenie',\n adminActions: 'Akcje administratora',\n timeline: 'Szczegóły procesu',\n createDate: 'Data utworzenia',\n firstName: 'Imię',\n lastName: 'Nazwisko',\n documentation: 'Dokumentacja',\n noReviewers: 'Brak recenzentów do wyboru',\n author: 'Uczestnik',\n Author: 'Uczestnik',\n Reviewer: 'Recenzent',\n Administrator: 'Administrator',\n 'Finance Coordinator': 'Koordynator finansowy',\n 'Scientific Council Member': 'Członek Rady Naukowej',\n 'Board Member': 'Członek Zarządu',\n 'Competition Coordinator': 'Koordynator Konkursu',\n 'Competition Committee Member': 'Członek Komisji Konkursowej',\n 'Competition Jury Member': 'Członek Kapituły Konkursu',\n downloadDocument: '',\n competitionName: 'Nazwa konkursu',\n financeCoordinator: 'Koordynator finansowy',\n emailTemplates: 'Szablony email',\n templateTitle: 'Nazwa szablonu',\n templateDetails: 'Szczegóły szablonu',\n save: 'Zapisz',\n templateBody: 'Zawartość szablonu',\n profile: 'Profil',\n oldPassword: 'Stare hasło',\n newPassword: 'Nowe hasło',\n repeatNewPassword: 'Powtórz nowe hasło',\n changePassword: 'Zmień hasło',\n passwordMustMatch: 'Podane hasła różnią się od siebie',\n passwordChangeSuccess: 'Hasło zostało pomyślnie zmienione',\n passwordChangeError: 'Błąd podczas próby zmiany hasła',\n data: 'Dane',\n resetUserPassword: 'Zresetuj hasło użytkownika',\n passwordResetSuccess: 'Hasło zresetowane pomyślnie',\n generalInfo: 'Informacje ogólne',\n addDocument: 'Dodaj dokument',\n noDocumentsAdded: 'Brak dodanych dokumentów',\n templateFile: 'Wzór dokumentu',\n documentName: 'Nazwa dokumentu',\n removeDocument: 'Usuń dokument',\n noCompetitionsFound: 'Brak konkursów',\n details: 'Szczegóły',\n submit: 'Wyślij zgłoszenie',\n document: 'Dokument',\n sendSubmission: 'Wyślij zgłoszenie',\n chooseFile: 'Wybierz plik',\n downloadTemplate: 'Szablon',\n deleteDocument: 'Usuń dokument',\n cancel: 'Anuluj',\n edit: 'Edytuj',\n reviewerDocument: 'Dokument recenzenta',\n authorDocument: 'Dokument uczestnika',\n fillDocument: 'Uzupełnij dokument',\n reviewers: 'Recenzenci',\n suggestedReviewers: 'Wskazani recenzenci',\n suggestReviewers: 'Wskazanie recenzentów',\n removeSuggestedReviewer: 'Usuń wskazanego recenzenta',\n addReviewer: 'Dodaj recenzenta',\n pickReviewer: 'Wybierz recenzenta',\n activeSubmissions: 'Aktywne zgłoszenia',\n archiveSubmissions: 'Archiwalne zgłoszenia',\n none: 'Brak',\n noAuthorDocumentation: 'Brak dokumentacji uczestnika',\n noReviewerDocumentation: 'Brak dokumentacji recenzenta',\n rankingList: 'Lista rankingowa',\n template: 'Wzór',\n reviewSubmission: 'Oceń zgłoszenie',\n mark: 'Oceń',\n markRequired: 'Uzupełnij ocenę',\n authorName: 'Imię i nazwisko autora',\n generalMark: 'Ocena ogólna',\n discussion: 'Dyskusja',\n comment: 'Komentarz',\n addComment: 'Dodaj komentarz',\n commentDetails: 'Treść komentarza',\n notes: 'Notatki',\n addNote: 'Dodaj notatkę',\n noteDetails: 'Treść notatki',\n attachedReviewers: 'Przypisani recenzenci',\n markedSubmissions: 'Ocenione wnioski',\n submissionsInprogress: 'Wnioski w trakcie oceny',\n activeCompetitions: 'Aktywne konkursy',\n usersCompetitions: 'Konkursy dla użytkownika',\n authorsCompetitions: 'Konkursy dla uczestnika',\n reviewersCompetitions: 'Konkursy dla recenzenta',\n alreadyParticipate: 'Zgłoszenie wysłane',\n updateSpecialty: 'Zaktualizuj specjalność recenzenta',\n instructions: 'Instrukcja',\n alreadyMarkedSubmission: 'Już oceniłeś to zgłoszenie',\n updateSpecialtySuccess: 'Specjalność recenzenta zaktualizowana',\n acceptSubmission: 'Zaakceptuj zgłoszenie',\n submissionMark: 'Ocena zgłoszenia',\n noMarks: 'Brak ocen',\n mySubmission: 'Moje zgłoszenie',\n mySubmissions: 'Moje zgłoszenia',\n toAcceptSubmissions: 'Do akceptacji',\n rejectedSubmissions: 'Odrzucone',\n toPickReviewersSubmissions: 'Bez recenzentów',\n markInProgressSubmissions: 'W trakcie oceny',\n grantInplementation: 'Realizacja grantu',\n rejectSubmission: 'Odrzuć zgłoszenie',\n choiceIsRequired: 'Wybierz jedną z opcji',\n submissionWasRejected: 'Zgłoszenie zostało odrzucone',\n marksCount: 'Liczba ocen',\n markSaved: 'Ocena zapisana pomyślnie',\n marked: 'Ocenione',\n backToRankingList: 'Powrót do listy rankingowej',\n backToUserList: 'Powrót do listy użytkowników',\n backToSubmission: 'Powrót do zgłoszenia',\n authorDocumentation: 'Dokumentacja uczestnika',\n reviewerDocumentation: 'Dokumentacja recenzenta',\n downloadUploadedFile: 'Pobierz aktualny plik',\n delete: 'Usuń',\n markAsWon: 'Przyznaj grant',\n closeSubmission: 'Zamknij zgłoszenie',\n submissionDraft: 'Do akceptacji',\n submissionInvalid: 'Nieprawidłowe',\n submissionNew: 'Przypisywanie recenzentów',\n submissionReview: 'W trakcie oceny',\n submissionWon: 'Nagrodzone',\n submissionRejected: 'Odrzucone',\n submissionClosed: 'Zamknięte',\n emailConfirmation: 'Potwierdzenie adresu email',\n inputEmailAddress: 'Wpisz adres e-mail',\n resetPasswordScreenMessage: 'Wpisz e-mail, na który wyślemy wiadomość z linkiem do zmiany hasła.',\n errorConfirmEmail: 'Nie mogliśmy potwierdzić adresu email. Spróbuj ponownie lub skontaktuj się z administratorem.',\n emailIsConfirmed: 'Adres email został potwierdzony. Możesz się teraz zalogować.',\n projectName: 'Tytuł projektu',\n unitInfo: 'Nazwa i adres jednostki, w której będzie realizowany projekt',\n estimatedFinishTime: 'Planowany czas realizacji (miesiące)',\n estimatedFunds: 'Planowane nakłady (zł)',\n academicTitle: 'Tytuł i stopień naukowy',\n prizeCandidate: 'Kandydat do nagrody',\n candidateUnitInfo: 'Nazwa i adres jednostki, w której pracuje kandydat',\n candidateAdditionalDocumentation: 'Dodatkowa dokumentacja (np. publikacja kandydata)',\n requiredConsentLabel: 'Treść wymaganej zgody',\n defaultRequiredConsent: `Zgłoszenia do konkursu mogą dotyczyć wyłącznie osób: \\n- ze stopniem naukowym doktora \\n- z ważnym osiągnięciem badawczym \\n- niezatrudnionych w przemyśle farmaceutycznym \\nPrzez zatrudnienie rozumie się powołanie w skład organów podmiotów gospodarczych sektora farmaceutycznego lub zatrudnienie w podmiotach tego sektora na podstawie umowy o pracę.`,\n consentIsRequired: 'Zgoda jest wymagana',\n send: 'Wyślij',\n submissionNumber: 'Numer zgłoszenia',\n isRequired: 'Wymagany',\n notRequired: 'Niewymagany',\n requiredInfo: '(*) - wymagane pole',\n noStagesDefined: 'Brak etapów',\n stage: 'Etap',\n stages: 'Etapy',\n noneStages: 'Brak etapów',\n addStage: 'Dodaj etap',\n stageName: 'Nazwa etapu',\n stageDetails: 'Szczegóły etapu',\n anyFile: 'Dodatkowa dokumentacja',\n multiFileInputLabelStart: 'Przeciągnij tutaj pliki lub',\n multiFileInputLabelClickHere: 'kliknij tutaj',\n multiFileInputLabelEnd: 'aby wybrać pliki.',\n invalidFileExtension: 'Plik jest niepoprawny. Dozwolone rozszerzenia plików to:',\n allowedExtensions: '.xlsx, .xls, .doc, .docx, .ppt, .pptx, .pdf',\n attachmentTemplateAllowedExtensions: '.doc, .docx',\n documentRequiredInfo: '(*) - dokument wymagany',\n visibleForRoles: 'Podgląd dla roli',\n search: 'Szukaj',\n all: 'Wszystkie',\n clearFilters: 'Wyczyść filtry',\n reports: 'Raporty',\n reportName: 'Nazwa raportu',\n edition: 'Edycja',\n competitionCategory: 'Kategoria konkursu',\n competitionCategoryProject: 'Projektowa',\n competitionCategoryPerson: 'Osobowa',\n numberOfSentSubmissions: 'Liczba nadesłanych projektów',\n numberOfSubmissionsWithGrants: 'Liczba przyznanych grantów',\n numberOfClosedSubmissions: 'Liczba zakończonych projektów',\n sumOfCosts: 'Koszt całkowity w PLN',\n foundationInNumbers: 'Fundacja w liczbach',\n suggestedBy: 'Wskazany przez',\n sendDocuments: 'Wyślij dokumenty',\n changeDocument: 'Zmień dokument',\n restoreSubmission: 'Przywróć zgłoszenie',\n confirmAttachmentTemplateDeletion: 'Czy na pewno chcesz usunąć dokument?',\n confirmSubmissionRestore: 'Czy na pewno chcesz przywrócić zgłoszenie?',\n confirmReviewerDeletionFromSubmission: 'Czy na pewno chcesz usunąć recenzenta ze zgłoszenia?',\n confirmReviewerDeletionFromStage: 'Czy na pewno chcesz usunąć recenzenta z etapu?',\n yes: 'Tak',\n no: 'Nie',\n noCompetitionCoordinatorsToChoose: 'Brak koordynatorów konkursu do wyboru',\n pickCompetitionCoordinator: 'Wybierz koordynatora konkursu',\n competitionCoordinators: 'Koordynatorzy konkursu',\n noCompetitionCoordinatorsSelected: 'Brak wybranych koordynatorów konkursu',\n billingMethod: 'Sposób rozliczania',\n billingMethodPerReview: 'Jedna umowa i rachunek na recenzję',\n billingMethodPerCompetition: 'Jedna umowa i rachunek na konkurs',\n duplicatedFileInfo: 'Plik \"{0}\" został załączony {1} razy (w polach {2})',\n documentForAllReviews: 'Dokument wspólny dla wszystkich recenzji',\n confirmChangeDocumentForAllReviews: 'Próbujesz zamienić dokument wspólny dla wszystkich recenzji danego recenzenta. Czy na pewno chcesz zamienić dokument?',\n confirmDeleteDocumentFromAllReviews: 'Czy na pewno chcesz usunąć dokument ze wszystkich recenzji?',\n billingPerCompetitionInfo: 'Ten konkurs rozliczany jest jedną umową i rachunkiem. Dokumenty oznaczone jako \"DOKUMENT WSPÓLNY DLA WSZYSTKICH RECENZJI\" wystarczy załączyć tylko na jednym zgłoszeniu',\n acceptRequiredConsentLabel: 'Akceptuję treść poniższej zgody',\n searchPhrase: 'Szukana fraza',\n deleteUser: 'Usuń użytkownika',\n restoreUser: 'Przywróć użytkownika',\n confirmUserDeletion: 'Czy na pewno chcesz usunąć użytkownika?',\n deleted: 'Usunięty',\n atLeastOneDocumentIsForAllReviews: 'Co najmniej jeden dokument jest wspólny dla wszystkich recenzji'\n};\n\nexport const pl: Translation = {\n translation: plTranslation,\n};","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nimport { pl } from './translations/pl';\n\ni18n.use(initReactI18next).init({\n resources: {\n pl,\n },\n lng: 'pl',\n fallbackLng: 'pl',\n debug: process.env.NODE_ENV !== 'production',\n interpolation: {\n escapeValue: false,\n },\n});\n\nexport default i18n;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n/i18n';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}