{"version":3,"sources":["actions/auth_actions.js","config/config_prod.js","config/index.js","components/Abilities/index.js","config/permissions.js","config/permissions_prod.js","components/Common/utils.js","components/Auth/Header.js","components/Auth/Login.js","components/Auth/Forget.js","components/Common/LoadingProgress.js","components/Main/ContractSwitcherMenu.js","components/Main/Navigation.js","components/Main/index.js","components/Print/index.js","components/Help/chatavatar.svg","components/Help/index.js","components/AutoLogout/index.js","components/Auth/PricingTable.js","App.js","components/Common/ErrorBoundary.js","serviceWorker.js","reducers/authReducer.js","reducers/candidatesReducer.js","reducers/portalDetailsReducer.js","reducers/portalUsersReducer.js","reducers/vacanciesReducer.js","reducers/adminReducer.js","reducers/rewardReducer.js","reducers/jobReducer.js","reducers/caseloadReducer.js","reducers/qualficationReducer.js","reducers/rootReducer.js","reducers/feedbackReducer.js","store.js","index.js","actions/portal_actions.js","actions/vacancies_actions.js","components/Common/EntitiesAutoComplete.js","components/Common/Logo/smLogo.svg","components/Candidates/CandidateSimpleDetails/OtherAssessments.js","components/Common/AssessmentCard/index.js","components/Common/SummaryRadarCard/index.js","components/Candidates/CandidateSimpleDetails/definitions.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/ContructExpansionPanel.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/DimensionDetail.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/InterestsPieChart.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/interestTypes.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobMatchesGrid/InterestsPanel.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobMatchesGrid/SkillsPanel.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobMatchesGrid/StylesPanel.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobMatchesGrid/index.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobMatches.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/icons/skilledit.svg","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/JobSkillSummary.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/NewSkills.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/icons/rewardShield.svg","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/icons/smallCoin.svg","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/CoinLevels.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/CandidateSummaryView.js","components/Candidates/CandidateSimpleDetails/CandidateActivityBarChart.js","components/Candidates/CandidateSimpleDetails/CandidateSummaryView/MissionHoverView.js","components/Candidates/CandidateSimpleDetails/AnalyticsPieChart.js","components/Candidates/CandidateSimpleDetails/CandidateAnalytics.js","components/Candidates/CandidateSimpleDetails/CandidateEngagement.js","actions/types.js","components/Common/TabControl.js","actions/candidates_actions.js","constants/routes.js","components/Skillzminer/JobResults/MatchBreakdown/icons/interests.svg","components/Skillzminer/JobResults/MatchBreakdown/icons/skill.svg","components/Skillzminer/JobResults/MatchBreakdown/icons/styles.svg","components/Skillzminer/JobResults/MatchBreakdown/InterestsPie.js","components/Skillzminer/JobResults/MatchBreakdown/SkillLine.js","components/Skillzminer/JobResults/MatchBreakdown/SkillsList.js","components/Skillzminer/JobResults/MatchBreakdown/StylesRadar.js","components/Skillzminer/JobResults/MatchBreakdown/index.js","actions/job_actions.js","components/Skillzminer/JobResults/JobListingView.js","components/Skillzminer/JobResults/OccupationalArea.js","components/Skillzminer/JobResults/CustomCircle.js","components/Skillzminer/JobResults/OccupationalMatch.js","components/Skillzminer/JobResults/icons/InterestsIcon.js","components/Skillzminer/JobResults/icons/SkillsIcon.js","components/Skillzminer/JobResults/icons/StylesIcon.js","components/Skillzminer/JobResults/JobRecommendationsTable.js","components/Skillzminer/JobResults/index.js","components/Candidates/CandidateSimpleDetails/BackpackMatches.js","components/Candidates/CandidateSimpleDetails/index.js"],"names":["logger","Logger","authError","error","type","AUTH_ERROR","payload","message","login","history","username","password","dispatch","info","Cache","clear","Auth","signIn","then","data","removeItem","challengeName","AUTH_NEW_PASSWORD_REQUIRED","AUTH_MFA","AUTH_USER","currentAuthUser","getPortalDetails","API","patch","config","API_NAME","catch","err","push","validateUserSession","bypass","currentAuthenticatedUser","bypassCache","userSession","session","isValid","currentUserCredentials","credentials","warn","accessKeyId","sessionToken","secretAccessKey","UNAUTH_USER","RESET_APP","setNewPassword","cognitoUser","newPassword","completeNewPassword","logout","signOut","window","location","assign","reload","confirmLogin","code","confirmSignIn","forgotPassword","FORGOT_PASSWORD","confirmForgotPassword","forgotPasswordSubmit","FORGOT_PASSWORD_CONFIRM","createCheckout","seatOption","creditOption","recaptchaValue","post","body","seat","credits","captcha","checkoutResponse","success","url","c","env","AWS_REGION","AWS_COGNITO_IDENTITY_POOL_ID","AWS_COGNITO_USER_POOL_ID","AWS_COGNITO_CLIENT_ID","API_ENDPOINT","PORTAL_BUCKET","DEFAULT_CACHE_TIME","DEFAULT_SESSIONCHECK_TIME","currencySign","currency","distanceName","STORAGE_CLOUDFRONT_URL","signupURL","process","AbilityContext","React","createContext","Can","createContextualCan","Consumer","role","options","AbilityBuilder","extract","can","rules","cannot","ROUTES","candidateCheckbox","caseloadCheckbox","adminProviderCheckbox","vacancyCheckbox","getBrowserDetail","tem","ua","navigator","userAgent","M","match","test","exec","slice","join","replace","appName","appVersion","splice","Header","classes","this","props","className","main","CardMedia","logo","image","title","Component","withStyles","theme","height","width","marginTop","marginLeft","marginRight","versionsBehindMessage","Login","state","email","npassword","showPassword","open","vertical","horizontal","loading","version","parseInt","manualURL","handleClose","setState","AUTH_ERROR_CLEAR","handleForceClose","forceClose","handleChange","prop","event","target","value","handleClickShowPassword","bind","changePass","Storage","get","result","console","split","browser","toLowerCase","browserErrorText","prevProps","errorMessage","changePassword","e","preventDefault","trim","loginAction","setPasswordAction","queryDict","search","substr","forEach","item","duration","pass","queryParamsLoaded","decodeURIComponent","root","progressCont","LinearProgress","progress","Grid","container","justify","alignContent","alignItems","style","paddingTop","xs","color","textAlign","Paper","onSubmit","TextField","id","label","classNames","margin","textField","name","autoComplete","variant","autoFocus","required","defaultValue","onChange","autocomplete","InputProps","endAdornment","InputAdornment","position","IconButton","aria-label","onClick","Button","button","size","Typography","marginLabel","Link","component","RouterLink","to","href","rel","Snackbar","anchorOrigin","snack","onClose","autoHideDuration","ContentProps","SnackbarContent","aria-describedby","connect","auth","mfaRequired","mfa","bindActionCreators","confirmLoginAction","paddingBottom","marginBottom","backgroundColor","palette","dark","fontSize","Forget","passwordcon","forgotPasswordCode","reset","forgotPasswordAction","confirmForgotPasswordAction","alert","authenticated","LoadingProgress","text","CircularProgress","thickness","paddingLeft","ContractSwitcherMenu","portaldetails","selectContract","textColor","useState","anchorEl","setAnchorEl","orgcontracts","user","contracts","userContracts","organizationContracts","availableUserContracts","contractOptions","map","keyworkerContractId","find","contractID","currentContract","selectedContract","disabled","length","aria-controls","aria-haspopup","currentTarget","textTransform","Menu","keepMounted","Boolean","MenuItem","key","Navigation","openContractAnchor","handleMenu","handleMenuContract","handleCloseContract","componentDidMount","route","pathname","indexOf","portalusers","vacancies","orgdetails","unverifiedRolesLength","unverifiedDepartmentsLength","unverifiedLineManagersLength","snackBarText","totalNotifcaitons","isInternalMobility","isCustomer","disabledNav","AppBar","colorPrimary","appbarColor","Toolbar","src","navLogoURL","Date","now","alt","grow","I","getVariant","Tooltip","paddingRight","Badge","badgeContent","badge","attributes","given_name","aria-owns","undefined","getColor","transformOrigin","Divider","light","getBillingConsole","portal","display","justifyContent","fetchCandidates","flexGrow","padding","layout","textDecoration","ltext","logoholder","logok","loadernobg","loader","MainDashboard","lazy","Insights","Caseloads","Admin","Candidates","Profile","Faq","Vacancies","SuperAdmin","Main","topLoading","bg","init","render","listen","setItem","componentKey","Fade","in","Zoom","Avatar","orgLogoURL","gutterBottom","contractName","contract","fallback","path","exact","globalloading","setTimeout","defaultRoute","missions","viewPermissions","dashboardCheckboxGlobal","dashboardCheckbox","candidates","contr","zIndex","spacing","breakpoints","up","top","left","withRouter","Print","componentDidUpdate","selectedCandidateData","sortedmissions","_","each","newItem","score","latestAssessmentResult","results","dimension","percentage","missionsAnalytics","mission","missionId","status","event_type","sortBy","goBack","onBeforeGetContent","Promise","resolve","isOnPrintMode","onAfterPrint","content","componentRef","trigger","ref","el","direction","candidate","triggerReassessment","CandidateSummaryView","groupSkillsBackpack","rewards","CandidateEngagement","keyworkerId","currentKeyWorker","userID","OtherAssessments","_defs","fetchCandidateDetails","_excluded","_extends","Object","i","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","createElement","viewBox","fill","cx","cy","r","transform","overflow","d","clipPath","clipRule","fillRule","ForwardRef","forwardRef","useStyles","makeStyles","anchorSmall","bottom","right","anchor","down","header","borderTopRightRadius","borderTopLeftRadius","avatar","paddingBlock","Help","isAuthenticated","getHelpVideos","useLocation","isOpen","expanded","setExpanded","currentPath","setCurrentPath","helpObject","setHelpObject","useEffect","pathChange","videos","elevation","index","videoURL","Accordion","AccordionSummary","expandIcon","AccordionDetails","frameborder","referrerpolicy","allowfullscreen","allow","sandbox","Chip","logoutcb","warnTimeout","setWarnTimeout","mouseEvents","logoutCallback","setTimeoutCheck","resetTimeout","clearTimeout","addEventListener","seatOptions","price","annualPrice","creditOptions","SeatProduct","selectedSeat","setSelectedSeat","itemSpace","Card","selectedProduct","unSelectdProduct","product","CardContent","midText","largeText","smallText","CardActions","CreditProduct","selectedCredits","setSelectedCredits","flexDirection","SuccessPopUp","isEmbeded","paper","paperTitle","paperText","smallPaperText","ConfirmPopup","terms","setTerms","Checkbox","checked","buttonText","PricingTable","urlString","successEvent","confirmPopup","recaptchaRef","createRef","document","background","stripesuccess","current","getValue","checkoutURL","Backdrop","submit","gridEmbeded","grid","titleText","subtitleText","bodyText","subText","sitekey","maxWidth","cursor","border","fontFamily","fontWeight","maxHeight","generateClassName","createGenerateClassName","productionPrefix","seed","LOG_LEVEL","NotFoundRedirect","PublicRoute","ReactComponent","authStatus","rest","getItem","PrivateRoute","t","pop","newpath","ability","DefaultRoute","App","handleWindowClose","validateUser","interval","setInterval","clearInterval","validateUserAction","defineRulesFor","update","portalDetails","optional_rules","StylesProvider","ErrorBoundary","hasError","eventId","Dialog","aria-labelledby","DialogTitle","DialogContent","DialogContentText","DialogActions","children","hostname","require","mergeObjectsWithDivision","obj","obj1","mergeWith","objValue","srcValue","isNumber","toFixed","mergeObjectsWithSum","caseLoads","caseload","orgadminCaseload","dashboard","caseloaddata","all","invited","accessed","iaCompleted","reassessmentIssued","reassessmentCompleted","reverse","aggregated","aggregatedGraphData","interestGraphData","_latest","Math","round","parseFloat","latestAssessment","Number","EPSILON","_initial","initialAssessment","_onlyInitial","onlyInitialAssessment","_dt","count","sum","interests","nullInterests","n","isNaN","isNull","locations","locationGraph","entries","sort","a","b","tierGraph","occupationGraph","jobsData","occupationGraphAppliedJobs","tierGraphAppliedJobs","occupationGraphAppliedQuals","tierGraphAppliedQuals","occupationGraphSavedJobs","tierGraphSavedJobs","occupationGraphSavedQuals","tierGraphSavedQuals","engagementData","previous_experience","previous_experience_low","previous_experience_high","qualsData","qualsOccupationGraph","qualsTierGraph","jobs","jobsApplied","jobsViewed","jobsSaved","startsWith","jobs_applied","omit","jobs_saved","quals_applied","quals_saved","quals","engagement","numberOfSessions","totalMinutes","skillColours","toTitleCase","str","txt","charAt","toUpperCase","findAttribute","row","Attributes","elem","Name","Value","allReducers","combineReducers","action","returnProps","signInUserSession","idToken","debug","REGISTER_USER","register","REGISTER_USER_CONFIRM","resendCode","REGISTER_MFA","REGISTER_USER_ERROR","FETCH_CANDIDATES","candidatesAll","UserStatus","Cognito_UserStatus","Enabled","Cognito_Enabled","Username","UserID","formattedInviteDate","createdAt","toString","toLocaleDateString","formattedAccessedDate","lastAccessedAt","formattedCompletedDate","latestAssessmentCreatedAt","flag","assessmentCompleted","assessmentVersion","isDisabled","sortOrder","EMPTY_CANDIDATES","EMPTY_CANDIDATE_DETAILS","selectedCandidate","FETCH_CANDIDATE_DETAILS","latest","assessmentResult","radarData","COMM","first","RTF","ADY","SPC","RLS","DMA","CONF","CONT","PSA","ACdata","LAdata","REdata","values","interventions","intervention","newSkills_names","occupationSkills","mainSkill","skills","s","skills_names","Set","occupationBlacklist","candidateStatus","candidate_status_history","FETCH_CANDIDATE_BACKPACK","bestBackpack","FETCH_CANDIDATE_MATCHES","matches","FETCH_CANDIDATE_SKILLS_INFO","skillsInfo","FETCH_CANDIDATE_ENGAGEMENTS","engagements","resources","resourceViewed","resource","link","coursesViewed","qualsSaved","qualsApplied","qualsViewed","FETCH_CANDIDATE_JOB_MATCHES","normalJobMatches","techJobMatches","FETCH_ALL_OCCUPATIONS","jobcat","new_jobs_cats","desired_occupations","interest_occupations","past_occupations","skills_backpack_occupations","styles_occupations","SET_NEW_SKILLS","newOccupationSkills","FETCH_VALIDATION_REQUESTS","skilValidationRequests","PORTAL_DETAILS","_orgcontracts","_providers","providers","userdata","x","FETCH_INTERVENTIONS","only","onlyInterventions","PORTAL_LIST_CONTRACTS","PORTAL_SELECT_CONTRACT","PORTAL_DESELECT_KEYWORKER","PORTAL_SELECT_KEYWORKER","PORTAL_SELECT_KEYWORKERS","keyworker","PORTAL_DESELECT_LINEMANAGER","currentLineManager","PORTAL_SELECT_LINEMANAGER","lineManager","PORTAL_DESELECT_DEPARTMENT","currentDepartment","PORTAL_SELECT_DEPARTMENT","department","PORTAL_SELECT_PROVIDER","selectedProvider","provider","FETCH_MISSIONS","dimensionText","PORTAL_CASELOAD","contractId","caseloadData","existingCaseloads","newCaseload","PORTAL_CASELOAD_ENDDATE","keyWorkerEndDateCaseload","PORTAL_ORGADMIN_CASELOAD","PORTAL_ORGADMIN_CASELOAD_ENDDATE","endDateCaseload","PORTAL_ORGADMIN_CASELOAD_GLOBAL","globalDashboard","PORTAL_LOCATION_LIST","locationList","PORTAL_SUPPLY_DATA","supplyData","PORTAL_SUPPLY_LOW","supplyDataLowLevel","PORTAL_ADZUNA_CATEGORY","newCategory","tag","adzunaCategory","PORTAL_ADZUNA_REGION_DATA","adzunaRegional","PORTAL_ADZUNA_HISTOGRAM_CATEGORY","adzunaHistogram","PORTAL_ADZUNA_HISTORICAL_CATEGORY","adzunaHistorical","PORTAL_DASHBOARD_CASELOAD","isArray","dashboards","combinedObject","caseLoad","EMPTY_CANDIDATES_SELECTION","SET_RECENTLY_VIEWED","Item","users","recentlyViewedUsers","UPDATE_BULK_UPLOAD_PROGRESS","bulkUploadProgressText","SET_BULK_EMAIL_TEMPLATE","defaultBulkTemplate","SET_ROLES","internalRoles","unverifiedRoles","SET_DEPARTMENTS","internalDepartments","unverifiedDepartments","SET_LOCATIONS","internalLocations","unverifiedLocations","unverifiedLocationsLength","SET_LINEMANAGERS","internalLineManagers","unverifiedLineManagers","SET_UNVERIFIED","SET_DEMOGRAPHICS","demographicsQuestions","SET_HELP_VIDEOS","authenticatedVideos","OPEN_KEYWORKER_DIALOG","keyworkerData","CLOSE_KEYWORKER_DIALOG","ADD_KEYWORKER_CONTRACT","FETCH_PORTAL_USERS","keyworkers","Users","firstKeyWorkerLastname","secondKeyWorkerLastname","localeCompare","itemName","orgadmins","partners","allProviders","allContracts","CUSTOMER_CHECK","FETCH_VACANCIES","vacancy","salary_min","hourly_salary_min","annual_salary_min","salary_max","hourly_salary_max","annual_salary_max","salary_config","moment","updatedAt","ADD_VACANCY","concat","REMOVE_VACANCY","filter","EDIT_VACANCY","vacancy_id","FIND_VACANCIES_STATUSES","newProfileUrls","profileUrls","candidatesStatuses","shortList","firstName","lastName","initals","searchCandidate","phoneNumber","telephone","hired","removed","favourited","applied","isUnlocked","script_status","script_results","contactedAt","profileUrl","candidatesToRemove","removedUsers","includes","candidatesStatus","globalUnlocked","FETCH_VACANCIES_CANDIDATES","vacancyCandidates","allOccs","allSkills","organisation","newVacancyCandidates","jobID","newVacancies","current_vac","job_id","lastAccessedMoment","lastAccessedDays","free_resume","identity","resumeModifiedDate","startOf","occName","relevance","experience","matched","skillsMatched","skill","titleName","splitName","md5EmailAddress","emailAddress","numObj","phoneNumbers","priority","phoneNumberValue","getPhonenumber","city","range","distance","salary","salaryAsInt","lastAccessed","format","qualification","degree","qualificationLevel","rightToWork","workAuthorizations","country","authorization","willRelocate","yearsOfExperience","occupationMatched","relevanceObject","locationObject","additionalReqMatch","requiredSkillMatch","rawUser","viewed","viewedCount","unlockedCount","chartList","queryKey","travel_distance_flag","jobTypes","styles","lookingForWork","talentType","salInt","substring","missing_skills","skills_required","score_bp_skills_matched","setStatus","internalMobilityProvider","occupationList","desiredOccupations","occupations","user_all_skills","fullName","score_bp","score_styles","score_interest","locationOriginal","radius","locationRadius","occupationExtended","desiredOccupationsExtended","previousOccupations","previousOccupationsExtended","occupationsExtended","desiredExp","qualifications","similar_skills","skills_list","allow_reverse_mine","rightTooWork","shortlistedCans","uniqBy","hasRemovedCandidates","FETCH_VACANCIES_CANDIDATES_MONSTER","newSearchCandidates","unlockedVersion","textResumeID","hasOccMatch","occScore","userSkills","matchesLen","colour","calculatedScore","REMOVE_VACANCIES_CANDIDATES","updatedList","isPotential","SET_CANDIDATE_DETAILS","selectedVacancy","userStatus","element","cand","initials","candidateInterestsData","interestsOriginal","upperType","other_skills","occSkill","individual_skill","skills_score","candidateStylesData","key_worker_name","internalMobilityResponses","UPDATE_CANDIDATE_INFO","userId","SET_VACANCY_BY_ID","FETCH_SEARCHES","searches","ADD_SEARCH","newSearches","unshift","REMOVE_SEARCH","EDIT_SEARCH","oldSearch","FETCH_SEARCH_CANDIDATES","viewedCandidates","globalViewedCandidates","globalUnlockedCandidates","searchShortlist","hidden_talent","newCands","allQuals","allRadius","newallOccs","hasExtraRequirementsResults","hasRequiredSkillsResults","sourceRequirements","extraRequirements","today","orderItem","dictValue","Array","isAdditionalMatch","isRequiredSkillMatch","searched_string","qualName","isInteger","chart_data","reduce","sotredSkills","searchCandidates","searchFilterOptions","allSearchableOccs","allSearchableSkills","allSearchableQuals","allAdditionalReqs","maxRadius","max","filteredSearchCandidates","searchFilter","FETCH_SEARCH_SHORTLIST","newSearchShortlist","UPDATE_VIEWED_CANDIDATES","newView","newFilteredSearchCandidates","newGlobalViewedCandidates","cands","UPDATE_SEARCH_SHORTLIST","updatedCandidate","unlocked","idx","shortlist","findIndex","newShortlist","remove","FILTER_SEARCH_CANDIDATES","_isRemote","selectedSearch","original_location","currentFilters","newSearch","additionalReqs","filterChange","newFilters","activeOccs","pickBy","activeSkills","activeQuals","activeAdditionalReqs","activeRequiredSkills","filteredCandidates","freeResume","filterMatches","sharedSkills","intersection","FETCH_BOT_TEMPLATE","searchChatTemplates","base","baseTemplate","toggle","toggleQuestions","start_text","end_text","end_text_escape","emailMain","emailPromotional","userTemplates","ADD_TEMPLATE","newSearchChatTemplates","REMOVE_TEMPLATE","EDIT_TEMPLATE","oldTemplate","UPDATE_SNACKBAR","GET_VIEW_PREFS","columnViewPrefs","sa","selected","SA_FETCH_ORGS","selectedOrg","orgs","SA_FETCH_ORGADMINS","SA_FETCH_PARTNERS","SA_FETCH_FLEXIBLE_USER_DETAILS","userDetailsFlexible","SA_PROVIDER_FETCH_DETAILS","SAProviderDetails","SA_FETCH_FLEXIBLE","flexible","SA_FETCH_KEYWORKERS","SA_FETCH_EMPLOYERS","employers","SA_FETCH_HRMANAGERS","hrmanager","SA_FETCH_LINEMANAGERS","linemanager","SA_SELECT_ORG","saveddata","SA_ERROR","SA_LOADING","SA_FETCH_DUMMYKWS","dummyKW","SA_DELETE","displayToastDelete","SA_DISPLAY_TOAST","SA_FETCH_CASELOAD","SA_UNFULFILLED_ORDERS","unfulfilledOrders","UPDATE_QUALIFICATION","qual","qual_id","LOADING_QUALIFICATION","ADD_QUALIFICATION","FETCH_QUALIFICATIONS","Items","LastEvaluatedKey","loaded","FETCH_COINS","currentLevel","toNextLevel","levelRange","levels","coins","totalEarnedCoins","k","v","partialSum","newCoins","setcoins","l","level","RESET_COINS","feedback","SA_FEEDBACK","SA_FEEDBACK_USER","feedback_user","SA_FEEDBACK_DELETE","newArr","jobReducer","INDEED_DESCRIPTION","indeed_description","desc","description","CL_FETCH_KEYWORKERS","CL_FETCH_ORG_DATA","prov","CL_FETCH_CASELOAD","caseloadType","initial","reAssessment","jobviewed","jobApplied","qualviewed","qualApplied","courseViewed","skillValidated","cvCreated","skillsAdded","inactive","live","active","exceptionReport","dataBreakdown","CLEAR_CASELOAD","CL_FETCH_CONTRACT_AND_PROVIDERS","CL_FETCH_EVENTS","events","userKW","keyworkerID","keyworkerName","keyworkerEmail","userEvents","CL_FETCH_EXCEPTION_REPORT","file","reportPath","reportType","expires","getTime","CL_RESET_EXCEPTION_REPORT","rootReducer","initialState","composeEnhancers","composeWithDevTools","Ability","Sentry","dsn","release","environment","Amplify","configure","identityPoolId","region","userPoolId","userPoolWebClientId","endpoints","endpoint","AWSS3","bucket","createMuiTheme","primary","contrastText","secondary","shadows","ReactDOM","Provider","store","createStore","applyMiddleware","thunk","ThemeProvider","utils","MomentUtils","getElementById","serviceWorker","ready","registration","unregister","merge","getRecentlyViewed","getState","fetchInterventions","getMissions","getKeyworkerCaseload","fetchUnverifiedCounts","getCreditTotals","log","defaultCandidateSelection","selectContractNoRequest","selectProvider","currentKeyWorkerId","resetKeyworker","setKeyworker","setLineManger","lineManagerID","fetchCandidatesIM","setDepartment","departmentID","setKeyworkers","promises","promise","failure","combineObject","getPortalUsers","getKeyworkerCaseloads","functions","callback","async","series","getKeyworkerCaseloadWithDate","dateUnix","isEndDate","targeDate","getOrgAdminCaseloadWithDate","startDate","getGlobalCaseload","getOrgAdminCaseloadWithEndDate","getSupply","identityId","townsUrl","fetch","json","tempObj","getSupplyWithLocation","dateList","subtract","reject","monthObject","monthData","monthNumber","location_data","clean_string","replaceAll","number_jobs","calculatedMonths","monthNum","month_digit","occupation_details","percentage_in_total","getSupplyLowLevel","getAdzunaCategory","getAdzunaRegionData","category","retries","delay","ms","res","getAdzunaHistoricalCategory","getAdzunaHistogramCategory","getOrgAdminCaseload","setOrgContract","caseloadObj","lastObjectMerged","provider1","provider2","providerMerge1","providerMerge","JSON","stringify","parse","setProviderChange","providerID","providerIds","containsAll","caseloadObjs","providersContactsMerge","trackBulkUpload","bulkJobID","emailContent","inputData","put","initialWait","jobRunning","maxRuns","waitTime","stage","running","responseUrl","getBulkEmailTemplate","setBulkEmailTemplate","newtemplate","fetchRoles","addRole","newRole","removeRole","roleID","newValue","fetchDepartments","addDepartment","newDepartment","removeDepartment","fetchLocations","addLocation","newLocation","removeLocation","locationID","removeLineManagers","fetchLineManagers","fetchDemographics","updateDemographics","newQuestions","questions","updateUserRoleInternalMobility","updateUserDepartmentsInternalMobility","updateUserLineManagerInternalMobility","getOccDetails","response","unAuthenticatedVideos","pathData","paths","roles","inviteToVacancy","jobId","jobTitle","job_title","jobSort","employer","employerName","location_full","jobDetails","findAllStatuses","fetchDetailedCandidate","inviteListToVacancy","userList","setFavouritedCandidate","isFavourited","freeCandidate","searchOnly","isSearch","freeCandidateDetails","setBulkFavouriteCandidates","userIdList","foundCand","removeCandidatesFromVacancy","restoreRemovedCandidates","fetchVacancies","refreshVacancies","addNewVacancy","removeOldSearch","jobDB_vac","cloneDeep","onet_styles","highest_interest","onet_interests","highest_styles","addNewSearch","editVacancy","setVacancyStatus","getVacancyDetails","mineGlobally","includeInternalProvider","onlySkills","occupation","idList","isRemote","request_body","postcode","lat","lon","required_skills","monsterSearch","candidateID","candidateData","statusData","getVacancyById","fetchSearches","deleteSearch","fetchHiddenTalent","fetchSearchCandidates","low_occupation","favouriteCandidate","viewCandidate","fetchShortlistCandidates","unlockCandidate","newVersion","transferCandidate","getCVLink","freeVersion","timeout","genResponse","s3Url","method","blob","updateSearchFilters","filterObject","fetchBotTemplates","submitTemplateItem","newTemplate","isEdit","deleteTemplate","template","templateSort","assignTemplateScript","templateName","autoCompleteV2","dualType","directMatches","closeMatches","autoCompleteV2Skill","autoCompleteLocationV2","getLocationDetails","contactCandidate","isInternalCandidate","isVacancy","isFreeCandidate","setColumnViewPrefs","view","getColumnViewPrefs","bundleCheckout","jobMatchTypeOptions","htmlLabel","group","blankOption","whiteStyles","EntitiesAutoComplete","onSelect","selectedOptions","placeholder","useJobMatchOption","blankInput","clearOnSelect","filteredOptions","setFilteredOptions","input","setInput","setLoading","searchQueue","setSearchQueue","onInputChange","searchText","setBlankInput","autoCompleteHandeler","fullWidth","inputValue","getOptionLabel","option","groupBy","renderInput","params","InputLabelProps","renderOption","whiteSpace","ReactHtmlParser","filterOptions","_desc","_g","_clipPath","_clipPath2","_clipPath3","_clipPath4","_clipPath5","_clipPath6","_clipPath7","_clipPath8","_clipPath9","_clipPath10","_clipPath11","_clipPath12","_clipPath13","_clipPath14","_clipPath15","_clipPath16","_clipPath17","_clipPath18","_clipPath19","_clipPath20","_clipPath21","_clipPath22","_clipPath23","_clipPath24","_clipPath25","_clipPath26","SvgSmLogo","xmlSpace","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeDashoffset","strokeLinejoin","strokeMiterlimit","opacity","visibility","vectorEffect","y","rx","ry","points","AlertDialog","subtitle","subtitle2","sectionTitle","center","graphBg","subheading","heading","typography","pxToRem","flexBasis","flexShrink","heading1","subheading1","resultText","resultText1","divid","reassess","itemre","avatarlarge","smallicons","itemtitle","prog","itemgrid","minHeight","activeIntervention","candidateInterventions","isInterventionOngoing","reAssessmentDue","organizationInterventions","isPending","setPendingStatus","isSucceeded","setIsSucceeded","setError","pushIntervention","candidateId","interventionId","interventionID","totalInterventionIds","add","from","distance_travelled","initialScore","finalScore","showSendCTA","endIcon","card","minWidth","cardContent","labelsContent","labelItem","dataKey","hasDoneMultipleAssessments","barSize","domain","tickFormatter","verticalAlign","wrapperStyle","assoArr","arr","angle","fillOpacity","definitions","analytical_capacity_TTT","analytical_capacity_TUT","analytical_capacity_TTU","analytical_capacity_TUU","analytical_capacity_UTT","analytical_capacity_UUT","analytical_capacity_UUU","analytical_capacity_UTU","learning_agility_TTT","learning_agility_TUT","learning_agility_TTU","learning_agility_TUU","learning_agility_UTT","learning_agility_UUT","learning_agility_UUU","learning_agility_UTU","resilience_TTT","resilience_TUT","resilience_TTU","resilience_TUU","resilience_UTT","resilience_UUT","resilience_UUU","resilience_UTU","SPC_underskilled_definition","SPC_talented_definition","SPC_overuse_definition","DMA_underskilled_definition","DMA_talented_definition","DMA_overuse_definition","PSA_underskilled_definition","PSA_talented_definition","PSA_overuse_definition","RTF_underskilled_definition","RTF_talented_definition","RTF_overuse_definition","ADY_underskilled_definition","ADY_talented_definition","ADY_overuse_definition","RLS_underskilled_definition","RLS_talented_definition","RLS_overuse_definition","CONT_underskilled_definition","CONT_talented_definition","CONT_overuse_definition","COMM_underskilled_definition","COMM_talented_definition","COMM_overuse_definition","CONF_underskilled_definition","CONF_talented_definition","CONF_overuse_definition","getDefinition","definition","getSkill","ConstructExpansionPanel","constructTitle","constructDescription","constructSummary","titleColor","defaultExpanded","isExpanded","toggleExpansion","ExpansionPanel","ExpansionPanelSummary","ExpansionPanelDetails","DimensionDetail","summary","colorSchema","creator","doer","driver","investigator","facilitator","crafter","InterestPieChart","nameKey","paddingAngle","innerRadius","outerRadius","cornerRadius","animationDuration","entry","interestTypes","CustomLinearProgress","barColorPrimary","InterestsPanel","interestScore","xmlns","aspect","gridmargin","p","pp","SkillsPanel","skillScore","StylesPanel","stylesScore","isAnimationActive","gridcont","griditem","PanelGroup","job","candidateInterestsScore","candidateStyles","JobMatchesGrid","sector","subtitle3","jobpanelcontainerprint","jobpanelcontainer","class","_rect","_path","_path2","_path3","_path4","_path5","JobMatches","getCandidateJobMatches","candidateDetails","loadJobs","slider_root","slider_root_orange","slider_thumb","boxShadow","slider_active","slider_valueLabel","slider_track","borderRadius","slider_rail","slider_mark","slider_markActive","slider_markActiveOrange","SkillRow","proficiency","projectedLevel","pendingValidationRequest","editSkillLevel","hasUpdates","setHasUpdates","createValidationRequest","proficiencyLevel","0","1","2","3","4","TableRow","TableCell","scope","borderBottom","align","Slider","step","marks","min","track","rail","thumb","mark","markActive","SkillProficiencyTable","Table","TableHead","TableBody","SkillsExpansionPanel","saveSkills","subPannelExpanded","setSubPanelExpanded","stopPropagation","optionalSkills","deletedSkills","SkillsBackpackSummary","backpack","groupedSkills","acl","curr","titleContainer","titleRow","bodyContainer","icon","marginInline","skillRow","borderTop","skillName","buttonContainer","NewSkills","closePanel","existingSkills","useTheme","fullScreen","useMediaQuery","newSkillList","setNewSkillList","list","arrow","placement","_path6","_path7","_path8","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_path18","_path19","_path20","_path21","_path22","_path23","_path24","_path25","_path26","_path27","_path28","_path29","_path30","_path31","_path32","CoinLevels","orangepaper","shield","zeroMinWidth","levelTitle","leftprogress","leftcoinsprogress","coinText","coinIcon","coinsmalltitle","Hidden","smDown","rightcoins","centerSkill","pageBreakAfter","gsb","getSkillsInfo","addNewSkill","newSkillPanel","newSkillPanelSet","currentCandidate","setCurrentCandidate","assessmentCreatedAt","reassessmentTriggeredAt","mostMatchedInterestProfile","interestChartData","interest","fromNow","newSkills","square","analytical_capacity","talent","learning_agility","resilience","dangerouslySetInnerHTML","__html","CandidateActivityBarChart","dateKey","valueKey","tick","MissionHoverView","missionTitle","missionTooltip","time","tooltip","COLORS","AnalyticsPieChart","chartData","chart","CandidateAnalytics","cardroot","titleNumber","float","hr","marginTop10","isQual","getBackGroundColor","lastItemsStatus","unsuccessful","getTextForButton","started","interviewed","orderBy","assoArrChart","momentDate","unix","tierChart","List","dense","lastItems","ListItem","ListItemText","lastItemsCreatedAt","sm","md","tableCell","challengesTable","missionsTable","iconPosition","getCandidateEngagements","showResources","setShowResources","showCourses","setShowCourses","showMissions","setShowMissions","showChallenges","setShowChallenges","showEngagement","setShowEngagement","showJobs","setShowJobs","fetchEngagements","appEngagements","type3Interventions","hideQualifications","jobsType","getFullYear","chartYear","setChartYear","getMonth","chartMonth","setChartMonth","dates","monthNames","days","getDate","toISOString","findD","date","lastAuthenticatedAt","totalDurationFormatted","candidateIntervention","tabsRoot","TabControl","panels","defaultTab","onTabChange","tabLabels","defaultTabIndex","currentTabIndex","changeTabIndex","useDefault","setUseDefault","indicatorColor","isEmpty","occupationsOriginal","desiredOccupationsOriginal","coinsObject","calculateQualifications","rangeKey","jobitem","getBestBackpacks","getDesc","skill_name","f","skillLoop","skill_list","individual_skill_object","requests","completed","skillObj","candidateUserId","dateString","year","month","totalDuration","xmins","floor","xhours","String","averageDurationSession","averageDurationDay","htmlStrip","sb_tech_backpack","tech_int_styles","Interests","interestOne","interestTwo","Styles","stylesOne","stylesTwo","sb_backpack","normalBackpack","normal_int_styles","added_occs_styles","normalStyleOne","normalStyleTwo","added_occs_interests","normalInterestOne","normalInterestTwo","interests_score","styles_score","most_similar_occ","interests_normal","styles_normal","similarity_in_skills","similarity","skillObjIdx","_item","newSkillsInfo","setSkillUpdates","LOGIN","FORGET","MAIN","PRINT","PROFILE","FAQ","PRICING","CANDIDATES","SKILLZMINER","SKILLZMINER_RESULTS","VACANCIES","DASHBOARDS","INSIGHTS","CASELOADS","SUPER_ADMIN","SUPER_ADMIN_FEEDBACK","SUPER_ADMIN_FEEDBACK_SKILLS","SUPER_ADMIN_BRANDING","SUPER_ADMIN_PROVIDERS","SUPER_ADMIN_CONTRACTS","SUPER_ADMIN_OAUSERS","SUPER_ADMIN_CASELOAD","SUPER_ADMIN_CREDITS","SUPER_ADMIN_COINS","ADMIN","QUALIFICATIONS","MANAGE_USER","NEW_USER","ORGANISATION","CONTRACTS","INTERVENTIONS","PROVIDERS","BULK_INVITE","ROLES","DEPARTMENTS","LOCATIONS","DEMOGRAPHICS","LINEMANAGERS","NEW_CANDIDATE","MANAGE_CANDIDATES","InterestsPie","pieContainer","secondPie","legend","bodyParagraph","m","alignCenter","marginTop15","overflowY","selectedJob","difference","setDifference","yourValue","setYourValue","jobValue","setJobValue","setTextColor","jobInterests","graphData","interestsdata","newdata","mapToCandidate","dataToPress","differenceNumber","dataToRender","slicesLabelsTextColor","enableSlicesLabels","isInteractive","slicesLabelsSkipAngle","colors","enableRadialLabels","legends","translateX","itemWidth","itemHeight","symbolSize","symbolShape","itemTextColor","Box","SkillLine","showMore","handleOpen","skilllinecontgrow","skilllinecont","pointselected","point","line","noWrap","descShow","descHide","textOverflow","lineHeight","rotated","left20","relativeContainer","expertContainer","skillsContainer","overflowX","coloredText","MatchSkillContainer","absoluteContainer","absoluteContainerSlider","relative","matchingKey","missingKey","hoverState","height50","marginTop30","SkillsList","matchedSkills","matchedSkillsObj","occskill","_skill","skillLevel","Hover","onHover","onHovering","onHoveringSet","onMouseEnter","onMouseLeave","jobDifference","jobQualification","jobscore","ONET_required_level_education","qualificationValue","valueLabelDisplay","valueLabelFormat","StylesRadar","underline","radarContainer","activeLabel","You","Vacancy","matchTypes","buttontitle","subTitle","matchIcon","radarMapping","MatchBreakdown","headerContainer","footerContainer","closeButton","closeIcon","headerText","subTitleText","divider","dialog","rightContainer","defaultType","currentViewIndex","setCurrentViewIndex","currentView","getNextIndex","getPreviousIndex","animate","setAnimate","setRight","startIcon","getIndeedDescription","getReedDescription","jobDescription","contentGrid","backdrop","promotedChip","onDismiss","onInviteToVacancy","enqueueSnackbar","useSnackbar","showSkillMatch","setShowSkillMatch","descriptionFull","setDescriptionFull","previousJobId","setPreviousJob","openSkillGapJob","Icon","itemstyle","salary_type","job_contract","word","job_url","onMouseDown","onmousedown","indeed_clk","OccupationalArea","high_occupation","occupation_descripton","popoverAnchor","setPopoverAnchor","Popover","disableRestoreFocus","easeOut","string","disableShrink","innerText","other","circleStyle","rootStyle","rootProps","circumference","PI","clsx","indeterminate","static","svg","SIZE","textAnchor","circle","circleIndeterminate","circleStatic","circleDisableShrink","transition","transitions","create","animation","colorSecondary","flip","OccupationalMatch","showSkillsDialog","toggleSkillsDialog","CustomCircle","disableTypography","InterestsIcon","SkillsIcon","StylesIcon","columnDefinitions","isSkillzBackpack","field","customSort","score_quals","fields","distance_in_miles","postedDate","salaryExtension","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","JobRecommendationsTable","isLoading","onRowClick","jobRecommendations","optionalMessageWhenEmpty","jobMatchType","selectedRow","setSelectedRow","columns","components","Container","pageSize","headerStyle","rowStyle","rowData","tableData","evt","localization","emptyDataSourceMessage","formatToSterling","amount","contractTypeOptions","contract_type","JobResults","onJobMatchTypeChange","lowerValue","job_match_type","fetchJobRecommendations","selectOnChangeHandler","previousState","set_job_match_type","salary_range","travel_distance","returnMappedResults","occ1","occ2","mappedResults","occ","ONET_styles","ONET_interests","matchedOcc","occPayload","onCandidateChange","clearCurrentSelections","cachedCandidate","cachedJobMatchType","scroll","candidateHasLatestAssessment","salaryRangeOptions","locationRadiusOptions","JobListingView","isSearchable","filterJobs","data_","BackpackMatches","inactiveTitle","percentageGrid","onMatchClick","onJobClick","activeMatch","setActiveMatch","matchListMap","previous","classnames","valueBuffer","bottomFooterTitle","OptionsMenu","showBackdrop","setShowBackdrop","backdropText","setBackdropText","style_matches","interest_matches","blobUrl","URL","createObjectURL","download","click","CandidateHeader","fetchSb","phonePreferred","internalMobilityLineManager","internalMobilityDepartment","internalMobilityLocation","imDepartments","ID","imLineManagers","imLocations","locationString","locationName","qualificationsName","showStatus","usersProvider","pv","additionalPersonalInfoCheckbox","invisible","departmentName","utc","roleTitle","roleName","desiredOccupationList","o","_text","noJobsNearMe","CandidateSimpleDetails","selectedUserData","userMission","activeTab"],"mappings":"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H,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,SAAUG,KAEdH,EAAI,QAASG,KACbH,EAAI,SAAUG,KAEdH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,MAAO,cACXA,EAAI,MAAO,qBACXA,EAAI,MAAO,QACXE,EAAO,KAAM,gBAEbF,EAAI,SAAU,aACdA,EAAI,QAASG,KACbH,EAAI,QAASG,KACb,MACF,IAAK,UACHH,EAAI,QAASG,KACbD,EAAO,QAASC,KAChBH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,SAAUG,KAEdH,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbD,EAAO,QAASC,KAEhBH,EAAI,MAAO,cACXE,EAAO,MAAO,qBACdF,EAAI,MAAO,QACXE,EAAO,KAAM,gBACbF,EAAI,QAASG,KACbH,EAAI,SAAU,YACd,MACF,IAAK,cACHA,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbH,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACb,MACF,IAAK,YACHH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbD,EAAO,QAASC,KAChBD,EAAO,QAAD,UAAaC,IAAb,SACNH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KAGbH,EAAI,QAASG,KAEbH,EAAI,QAASG,KACbH,EAAI,QAASG,KACbH,EAAI,QAASG,KAEbH,EAAI,MA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WAG3C,IACI+6B,EAAM,GAOV,OANA/wC,IAAEC,KAFU,CAAC,aAAc,QAAS,WAAY,eAAgB,iBAAkB,WAAY,aAAc,UAAW,eAEzG,SAACwC,GACTquC,EAAQruC,IACVsuC,EAAI/oD,KAAK8oD,EAAQruC,OAKnB,kBAAC,IAAD,CAAqB7T,OAAQ,KAC3B,kBAAC,IAAD,CAAY1H,KAAM6pD,GAChB,kBAAC,IAAD,MACA,kBAAC,IAAD,CAAgBR,QAASA,IACzB,kBAAC,IAAD,CAAiBG,OAAQ,CAAC,EAAG,KAAMM,MAAO,KAExC,kBAAC,IAAD,CACEt9C,KAAK,qBACL68C,QAAQ,QACRlE,OAAO,UACPzoC,KAAK,UACL0oC,YAAa,EACb2E,YAAa,KAGjB,kBAAC,IAAD,CACEv9C,KAAK,oBACL68C,QAAQ,SACRlE,OAAO,UACPzoC,KAAK,UACL0oC,YAAa,EACb2E,YAAa,KAEf,kBAAC,IAAD,MAtBF,IAsBa,kBAAC,IAAD,WC1EfC,EAAc,CAChBC,wBACE,0PACFC,wBACE,uSACFC,wBACE,oWACFC,wBACE,wUACFC,wBACE,sUACFC,wBACE,oVACFC,wBACE,oQACFC,wBACE,oTAEFC,qBACE,qaACFC,qBACE,iVACFC,qBACE,qUACFC,qBACE,4UACFC,qBACE,kWACFC,qBACE,8UACFC,qBACE,+UACFC,qBAAsB,GAEtBC,eACE,oVACFC,eACE,iRACFC,eACE,ibACFC,eACE,wWACFC,eACE,8UACFC,eACE,+TACFC,eACE,8YACFC,eACE,8VAEFC,4BACE,4ZACFC,wBACE,uYACFC,uBACE,4RAEFC,4BACE,0QACFC,wBACE,wTACFC,uBACE,oSAEFC,4BACE,6TACFC,wBACE,gUACFC,uBACE,mUAEFC,4BACE,kTACFC,wBACE,4RACFC,uBACE,kUAEFC,4BACE,+VACFC,wBACE,kTACFC,uBACE,oVAEFC,4BACE,0YACFC,wBACE,uXACFC,uBACE,2TAEFC,6BACE,0aACFC,yBACE,0VACFC,wBACE,oTAEFC,6BACE,4aACFC,yBACE,+bACFC,wBACE,gTAEFC,6BACE,6ZACFC,yBACE,iYACFC,w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","file":"static/js/main.6f870c3d.chunk.js","sourcesContent":["import { Auth, Cache, Logger, API } from \"aws-amplify\";\nimport config from \"../config\";\nimport {\n AUTH_USER,\n AUTH_MFA,\n AUTH_NEW_PASSWORD_REQUIRED,\n UNAUTH_USER,\n REGISTER_USER,\n REGISTER_USER_CONFIRM,\n REGISTER_MFA,\n REGISTER_USER_ERROR,\n FORGOT_PASSWORD,\n FORGOT_PASSWORD_CONFIRM,\n AUTH_ERROR,\n RESET_APP\n} from \"./types\";\nimport { getPortalDetails } from \"./portal_actions\";\n\nconst logger = new Logger(\"AUTH.ACTIONS\", \"INFO\");\n\nexport function authError(error) {\n return {\n type: AUTH_ERROR,\n payload: error.message ? error.message : error\n };\n}\n\n// Cognito - Auth.signIn()\nexport function login({ username, password }, history) {\n return function(dispatch) {\n logger.info(\"actions.login(): username:\", { username });\n Cache.clear();\n // signIn (cognito)\n Auth.signIn(username, password)\n .then(data => {\n Cache.removeItem(\"lastpath\");\n // success -- dispatch AUTH_USER\n logger.info(\"login():Auth.signIn() data:\", data);\n\n // inspect response 'data' and check whether\n // 1. MFA confirmation is required, dispatch->AUTH_MFA\n // 2. New Password is required (change 'FORCE_CHANGE_PASSWORD'\n // to 'CONFIRMED'), dispatch-> AUTH_NEW_PASSWORD_REQUIRED with payload\n // 3. otherwise, authenticate user, dispatch -> AUTH_USER\n if (data.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n dispatch({ type: AUTH_NEW_PASSWORD_REQUIRED, payload: data });\n } else if (\n data.challengeName === \"MFA_REQUIRED\" ||\n data.challengeName === \"SMS_MFA\"\n ) {\n dispatch({ type: AUTH_MFA, payload: data });\n } else {\n // dispatch AUTH_USER\n dispatch({ type: AUTH_USER, currentAuthUser: data });\n dispatch(getPortalDetails());\n API.patch(config.API_NAME, `/user/updateLastAuth`, {}).catch(err => {\n logger.error(\"login():updateLastAuth err:\", err);\n });\n // we have authenticated, lets navigate to /main route\n history.push(\"/portal\");\n }\n })\n .catch(err => {\n logger.error(\"login():Auth.signIn() err:\", err);\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.currentAuthenticatedUser()\n// Cognito - Auth.userSession()\n// This is a pass-through function to indicate that user has already authenticated\n// and has a valid Amplify session.\n\nexport function validateUserSession(bypass = true) {\n return function(dispatch) {\n logger.info(\"validateUserSession()\");\n\n Auth.currentAuthenticatedUser({\n bypassCache: bypass\n })\n .then(currentAuthUser => {\n logger.info(\n \"validateUserSession():Auth.currentAuthenticatedUser() currentAuthUser:\",\n currentAuthUser\n );\n // grab the user session\n Auth.userSession(currentAuthUser)\n .then(async session => {\n logger.info(\n \"actions.validateUserSession():Auth.userSession() session:\",\n session\n );\n // finally invoke isValid() method on session to check if auth tokens are valid\n // if tokens have expired, lets call \"logout\"\n // otherwise, dispatch AUTH_USER success action and by-pass login screen\n if (session.isValid()) {\n // fire user is authenticated\n dispatch({ type: AUTH_USER, currentAuthUser });\n dispatch(getPortalDetails());\n\n Auth.currentUserCredentials().then(credentials => {\n logger.warn(\"ACCESSKEYID:\", credentials.accessKeyId);\n logger.warn(\"SESSIONTOKEN:\", credentials.sessionToken);\n logger.warn(\"SECRET ACCESS KEY:\", credentials.secretAccessKey);\n });\n } else {\n logger.error(\"user session is not valid anymore\");\n // fire user is unauthenticated\n Cache.clear();\n dispatch({ type: UNAUTH_USER });\n dispatch({ type: RESET_APP });\n }\n })\n .catch(err => {\n logger.error(\"validateUserSession():Auth.userSession() err:\", err);\n // error occured during session validation, fire user is unauthenticated\n Cache.clear();\n dispatch({ type: UNAUTH_USER });\n dispatch({ type: RESET_APP });\n });\n })\n .catch(err => {\n logger.error(\n \"validateUserSession():Auth.currentAuthenticatedUser() err:\",\n err\n );\n Cache.clear();\n // error occured while retrieving current auth user, fire user is unauthenticated\n dispatch({ type: UNAUTH_USER });\n dispatch({ type: RESET_APP });\n });\n };\n}\n\n// Cognito - Auth.completeNewPassword()\nexport function setNewPassword(cognitoUser, newPassword, history) {\n return function(dispatch) {\n logger.info(\"setNewPassword(): cognitoUSer, newPassword:\", {\n cognitoUser,\n newPassword\n });\n\n // completeNewPassword (cognito)\n Auth.completeNewPassword(cognitoUser, newPassword)\n .then(data => {\n logger.info(\"setNewPassword():Auth.completeNewPassword() data: \", data);\n\n // inspect response 'data' and check whether\n // 1. MFA confirmation is required, dispatch->AUTH_MFA\n // 2. otherwise, authenticate user, dispatch -> AUTH_USER\n if (data.challengeName === \"SMS_MFA\") {\n dispatch({ type: AUTH_MFA, payload: data });\n } else {\n // dispatch AUTH_USER\n Auth.currentAuthenticatedUser({\n bypassCache: true\n })\n .then(currentAuthUser => {\n Auth.userSession(currentAuthUser)\n .then(session => {\n dispatch({ type: AUTH_USER, currentAuthUser });\n dispatch(getPortalDetails());\n history.push(\"/\");\n })\n .catch(err => {\n logger.error(\"usersession: \", err);\n });\n })\n .catch(err => {\n logger.error(\"usersession: \", err);\n });\n\n // we have authenticated, lets navigate to /main route\n }\n })\n .catch(err => {\n logger.error(\"setNewPassword():Auth.completeNewPassword() err:\", err);\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.signOut()\nexport function logout(username = \"\", history, message) {\n return function(dispatch) {\n logger.info(\"logout(): username: \", username);\n Cache.removeItem(\"lastpath\");\n // signOut (cognito)\n Auth.signOut()\n .then(data => {\n logger.info(\"logout():Auth.signOut() data:\", data);\n\n dispatch({ type: UNAUTH_USER });\n dispatch({ type: RESET_APP });\n Cache.clear();\n // we have authenticated, lets navigate to /main route\n history.push(\"/\");\n \n if (message === 'inactivity'){\n window.location.assign(\"/login?message=inactivity\");\n } else {\n window.location.reload();\n }\n })\n .catch(err => {\n logger.error(\"logout():Auth.signOut() err:\", err);\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.confirmSignIn()\nexport function confirmLogin({ cognitoUser, code }, history) {\n return function(dispatch) {\n logger.info(\"confirmLogin(): cognitoUSer, code:\", {\n cognitoUser,\n code\n });\n\n // confirmSignIn (cognito)\n Auth.confirmSignIn(cognitoUser, code)\n .then(data => {\n logger.info(\"confirmLogin():Auth.confirmSignIn() data: \", data);\n\n // dispatch AUTH_USER\n dispatch({ type: AUTH_USER, cognitoUser });\n dispatch(getPortalDetails());\n\n // we have authenticated, lets navigate to /main route\n history.push(\"/\");\n })\n .catch(err => {\n logger.error(\"confirmLogin():Auth.confirmSignIn() err:\", err);\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.signUp()\nexport function register({ username, password, email, phone }, history) {\n return function(dispatch) {\n logger.info(\"register(): username, password, email, phone: \", {\n username,\n password,\n email,\n phone\n });\n\n // signUp (cognito)\n Auth.signUp(username, password, email, phone)\n .then(data => {\n logger.info(\"register():Auth.signUp() data:\", data);\n\n // MFA is required for user registration\n if (\n typeof data.userConfirmed != \"undefined\" &&\n data.userConfirmed === false\n ) {\n dispatch({ type: REGISTER_MFA, payload: data });\n } else {\n dispatch({ type: REGISTER_USER });\n\n // user registration successful, lets navigate to / route\n history.push(\"/\");\n }\n })\n .catch(err => {\n logger.error(\"register():Auth.signUp() err:\", err);\n\n // error -- invoke authError which dispatches REGISTER_USER_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.confirmSignUp()\nexport function confirmRegistration({ cognitoUser, code }, history) {\n return function(dispatch) {\n logger.info(\"confirmRegistration(): cognitoUSer, code:\", {\n cognitoUser,\n code\n });\n const { username } = cognitoUser.user;\n\n // confirmSignUp (cognito)\n Auth.confirmSignUp(username, code)\n .then(data => {\n logger.info(\"confirmRegistration():Auth.confirmSignUp() data: \", data);\n\n // A successful registration response doesnt contain idToken.\n // So we must redirect to login screen\n\n // dispatch REGISTER_USER_CONFIRM\n dispatch({ type: REGISTER_USER_CONFIRM });\n\n // we have authenticated, lets navigate to /main route\n history.push(\"/\");\n })\n .catch(err => {\n logger.error(\"confirmRegistration():Auth.confirmSignUp() err:\", err);\n\n // error -- invoke authError which dispatches AUTH_ERROR\n //dispatch(authError(err));\n dispatch({\n type: REGISTER_USER_ERROR,\n payload: err.message,\n cognitoUser\n });\n });\n };\n}\n\n// Cognito - Auth.resendSignUp()\nexport function resendConfirmationCode({ cognitoUser }, history) {\n return function(dispatch) {\n logger.info(\"resendConfirmationCode(): username: \", {\n cognitoUser\n });\n const { username } = cognitoUser.user;\n\n // resendSignUp (cognito)\n Auth.resendSignUp(username)\n .then(data => {\n logger.info(\"resendConfirmationCode():Auth.resendSignUp() data:\", data);\n\n dispatch({ type: REGISTER_MFA, payload: cognitoUser });\n })\n .catch(err => {\n logger.error(\n \"confirmForgotPassword():Auth.forgotPasswordSubmit() err:\",\n err\n );\n\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.forgotPassword()\nexport function forgotPassword({ username }, history) {\n return function(dispatch) {\n logger.info(\"forgotPassword(): username: \", { username });\n\n // forgotPassword (cognito)\n Auth.forgotPassword(username)\n .then(data => {\n logger.info(\"forgotPassword():Auth.forgotPassword() data:\", data);\n\n dispatch({ type: FORGOT_PASSWORD });\n })\n .catch(err => {\n logger.error(\"forgotPassword():Auth.forgotPassword() err:\", err);\n\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n// Cognito - Auth.forgotPasswordSubmit()\nexport function confirmForgotPassword(\n { username, code, newPassword },\n history\n) {\n return function(dispatch) {\n logger.info(\"confirmForgotPassword(): username, code, newPassword: \", {\n username,\n code,\n newPassword\n });\n\n // forgotPasswordSubmit (cognito)\n Auth.forgotPasswordSubmit(username, code, newPassword)\n .then(data => {\n logger.info(\n \"confirmForgotPassword():Auth.forgotPasswordSubmit() data:\",\n data\n );\n\n // TODO - User password changed successfully, do we need to login again?\n dispatch({ type: FORGOT_PASSWORD_CONFIRM });\n\n history.push(\"/\");\n })\n .catch(err => {\n logger.error(\n \"confirmForgotPassword():Auth.forgotPasswordSubmit() err:\",\n err\n );\n\n // error -- invoke authError which dispatches AUTH_ERROR\n dispatch(authError(err));\n });\n };\n}\n\n\nexport const createCheckout = (seatOption, creditOption, recaptchaValue) => {\n return async (dispatch) => {\n try {\n const checkoutResponse = await API.post(config.API_NAME, \"/createcheckout\", {\n body: {\n seat: seatOption,\n credits: creditOption,\n captcha: recaptchaValue\n }\n });\n if (checkoutResponse){\n if(checkoutResponse.success && checkoutResponse.session){\n return {url : checkoutResponse.session.url}\n }\n else if(checkoutResponse.error){\n return {error : checkoutResponse.session.url}\n }\n }\n } catch (e) {\n logger.error(\"createCheckout():\", e);\n }\n return {error : \"Unknown Error\"}\n }\n}","const prod = {\n env:\"prod\",\n AWS_REGION: \"eu-west-2\",\n AWS_COGNITO_IDENTITY_POOL_ID:\n \"eu-west-2:dc4a58d7-fcd8-4642-99c2-9d483fe55e4a\",\n AWS_COGNITO_USER_POOL_ID: \"eu-west-2_hW0LZOp18\",\n AWS_COGNITO_CLIENT_ID: \"6n9qd4lp66f4qb6o2e1hcvtlc1\",\n API_ENDPOINT: \"https://c56bs2hhug.execute-api.eu-west-2.amazonaws.com/prod\",\n API_NAME: \"StaffportalAPIPROD\",\n PORTAL_BUCKET: \"staffportal-storage-prod\",\n DEFAULT_CACHE_TIME: 300000, //ms = 5min\n DEFAULT_SESSIONCHECK_TIME: 300000, //ms = 5min\n currencySign: \"£\",\n currency: \"GBP\",\n distanceName: \"miles\",\n STORAGE_CLOUDFRONT_URL : \"https://db444pytybfjs.cloudfront.net\",\n signupURL: \"https://jobs.skillsminer.ai/signup\",\n};\n\nconst prodIE = {\n env:\"prod\",\n AWS_REGION: \"eu-west-1\",\n AWS_COGNITO_IDENTITY_POOL_ID:\n \"eu-west-1:dc3a1d77-0622-45a6-a84f-0416b6a19e2d\",\n AWS_COGNITO_USER_POOL_ID: \"eu-west-1_2VOQK9PvL\", //\n AWS_COGNITO_CLIENT_ID: \"2l4smddubq1jlpp79mca871l38\",\n API_ENDPOINT: \"https://fbu6ouj195.execute-api.eu-west-1.amazonaws.com/prod\",\n API_NAME: \"StaffportalAPIPROD\",\n PORTAL_BUCKET: \"staffportal-storage-prod-ireland\",\n DEFAULT_CACHE_TIME: 300000, //ms = 5min\n DEFAULT_SESSIONCHECK_TIME: 300000, //ms = 5min\n currencySign: \"€\",\n currency: \"EUR\",\n distanceName: \"km\",\n STORAGE_CLOUDFRONT_URL : \"https://d1kg6o071dnr8x.cloudfront.net\",\n};\n\nvar c = prod;\n\nif (process.env.REACT_APP_REGION === \"eu-west-1\") {\n c = prodIE;\n}\n\nexport default c;\n","import config from \"./config_test\";\nimport c from \"./config_prod\";\n\nexport default (process.env.REACT_APP_STAGE === \"prod\" ? c : config);\n","import { createContextualCan } from \"@casl/react\";\nimport React from \"react\";\n\nexport const AbilityContext = React.createContext();\nexport const Can = createContextualCan(AbilityContext.Consumer);\n\n","import test from \"./permissions_test\";\nimport prod from \"./permissions_prod\";\n\nexport default process.env.REACT_APP_STAGE === \"prod\" ? prod : test;\n","import { AbilityBuilder } from \"@casl/ability\";\n\nimport * as ROUTES from \"../constants/routes\";\n\nexport default function defineRulesFor(role, options) {\n const { can, rules, cannot } = AbilityBuilder.extract();\n\n switch (role) {\n case \"super-admin\":\n can(\"visit\", ROUTES.MAIN);\n can(\"visit\", ROUTES.PROFILE);\n can(\"visit\", ROUTES.SUPER_ADMIN);\n can(\"visit\", ROUTES.SUPER_ADMIN_BRANDING);\n can(\"visit\", ROUTES.SUPER_ADMIN_OAUSERS);\n can(\"visit\", ROUTES.SUPER_ADMIN_CONTRACTS);\n can(\"visit\", ROUTES.SUPER_ADMIN_PROVIDERS);\n can(\"visit\", ROUTES.SUPER_ADMIN_CASELOAD);\n can(\"visit\", ROUTES.SUPER_ADMIN_FEEDBACK);\n can(\"visit\", ROUTES.SUPER_ADMIN_FEEDBACK_SKILLS);\n can(\"visit\", ROUTES.SUPER_ADMIN_CREDITS);\n can(\"visit\", ROUTES.SUPER_ADMIN_COINS);\n can(\"visit\", ROUTES.FAQ);\n break;\n case \"flexible\":\n can(\"visit\", ROUTES.MAIN);\n cannot(\"visit\", ROUTES.SKILLZMINER);\n if (options && options.candidateCheckbox ) {\n can(\"visit\", ROUTES.CANDIDATES);\n }\n can(\"visit\", ROUTES.DASHBOARDS);\n can(\"visit\", ROUTES.PROFILE);\n can(\"visit\", ROUTES.INSIGHTS);\n if (options && options.caseloadCheckbox ) {\n can(\"visit\", ROUTES.CASELOADS);\n }\n\n //admin stuff\n can(\"visit\", ROUTES.ADMIN);\n can(\"visit\", ROUTES.ORGANISATION);\n // can(\"manage\", ROUTES.ORGANISATION);\n \n can(\"visit\", ROUTES.QUALIFICATIONS);\n can(\"manage\", ROUTES.QUALIFICATIONS);\n\n // can(\"visit\", ROUTES.MANAGE_USER);\n // can(\"visit\", ROUTES.NEW_USER);\n if (options && options.adminProviderCheckbox) {\n can(\"visit\", ROUTES.CONTRACTS);\n can(\"visit\", ROUTES.PROVIDERS);\n }\n // can(\"visit\", ROUTES.INTERVENTIONS);\n can(\"visit\", ROUTES.PRINT);\n can(\"see\", \"KEYWORKERS\");\n can(\"see\", \"ORGADMIN_CASELOAD\");\n can(\"set\", \"role\");\n cannot(\"do\", \"REASSESSMENT\");\n //USER TYPE MANAGEMENT\n // can(\"manage\", \"ORGADMINS\");\n can(\"visit\", ROUTES.FAQ);\n // eslint-disable-next-line \n if (options && options.vacancyCheckbox) {\n can(\"visit\", ROUTES.VACANCIES);\n can(\"do\", \"ADD_NEW_VACANCY\");\n can(\"do\", \"MANAGE_VACANCY\");\n }\n break;\n case \"org-admin\":\n can(\"visit\", ROUTES.MAIN);\n cannot(\"visit\", ROUTES.SKILLZMINER);\n can(\"visit\", ROUTES.CANDIDATES);\n can(\"visit\", ROUTES.DASHBOARDS);\n can(\"visit\", ROUTES.PROFILE);\n can(\"visit\", ROUTES.INSIGHTS);\n can(\"visit\", ROUTES.CASELOADS);\n //admin stuff\n can(\"visit\", ROUTES.ADMIN);\n can(\"visit\", ROUTES.ORGANISATION);\n can(\"manage\", ROUTES.ORGANISATION);\n\n can(\"visit\", ROUTES.QUALIFICATIONS);\n can(\"manage\", ROUTES.QUALIFICATIONS);\n\n can(\"visit\", ROUTES.BULK_INVITE);\n can(\"visit\", ROUTES.MANAGE_USER);\n can(\"visit\", ROUTES.NEW_USER);\n can(\"visit\", ROUTES.CONTRACTS);\n can(\"visit\", ROUTES.INTERVENTIONS);\n can(\"visit\", ROUTES.PROVIDERS);\n can(\"visit\", ROUTES.PRINT);\n can(\"see\", \"KEYWORKERS\");\n can(\"see\", \"ORGADMIN_CASELOAD\");\n can(\"set\", \"role\");\n cannot(\"do\", \"REASSESSMENT\");\n //USER TYPE MANAGEMENT\n can(\"manage\", \"ORGADMINS\");\n can(\"visit\", ROUTES.FAQ);\n can(\"visit\", ROUTES.VACANCIES);\n break;\n case \"partner\":\n can(\"visit\", ROUTES.MAIN);\n cannot(\"visit\", ROUTES.SKILLZMINER);\n can(\"visit\", ROUTES.CASELOADS);\n can(\"visit\", ROUTES.CANDIDATES);\n can(\"visit\", ROUTES.PRINT);\n can(\"visit\", ROUTES.DASHBOARDS);\n can(\"visit\", ROUTES.PROFILE);\n can(\"visit\", ROUTES.INSIGHTS);\n //admin stuff\n can(\"visit\", ROUTES.ADMIN);\n can(\"visit\", ROUTES.ORGANISATION);\n can(\"manage\", ROUTES.ORGANISATION);\n\n can(\"visit\", ROUTES.MANAGE_USER);\n can(\"visit\", ROUTES.NEW_USER);\n \n cannot(\"visit\", ROUTES.PROVIDERS);\n\n can(\"see\", \"KEYWORKERS\");\n cannot(\"see\", \"ORGADMIN_CASELOAD\");\n can(\"set\", \"role\");\n cannot(\"do\", \"REASSESSMENT\");\n can(\"visit\", ROUTES.FAQ);\n can(\"manage\", \"PARTNERS\");\n break;\n case \"team-leader\":\n can(\"visit\", ROUTES.MAIN);\n can(\"visit\", ROUTES.SKILLZMINER);\n can(\"visit\", ROUTES.CANDIDATES);\n can(\"visit\", ROUTES.PRINT);\n can(\"visit\", ROUTES.DASHBOARDS);\n can(\"visit\", ROUTES.PROFILE);\n //admin stuff\n can(\"visit\", ROUTES.ADMIN);\n can(\"visit\", ROUTES.ORGANISATION);\n\n can(\"visit\", ROUTES.MANAGE_USER);\n can(\"visit\", ROUTES.NEW_USER);\n can(\"visit\", ROUTES.FAQ);\n break;\n case \"keyworker\":\n can(\"visit\", ROUTES.MAIN);\n can(\"visit\", ROUTES.SKILLZMINER);\n cannot(\"visit\", ROUTES.VACANCIES);\n cannot(\"visit\", `${ROUTES.VACANCIES}/new`);\n can(\"visit\", ROUTES.SKILLZMINER_RESULTS);\n can(\"visit\", ROUTES.INSIGHTS);\n can(\"visit\", ROUTES.CASELOADS);\n can(\"visit\", ROUTES.CANDIDATES);\n can(\"visit\", ROUTES.PRINT);\n can(\"visit\", ROUTES.DASHBOARDS);\n can(\"visit\", ROUTES.PROFILE);\n\n //ADMIN STUFF\n can(\"visit\", ROUTES.ADMIN);\n //KEYWORKER CAN SEE ORG, CREATE NEW CANDIDATE, AND MANAGE ITS OWN CANDIDATES\n can(\"visit\", ROUTES.ORGANISATION);\n can(\"visit\", ROUTES.NEW_CANDIDATE);\n can(\"visit\", ROUTES.MANAGE_CANDIDATES);\n\n can(\"see\", \"CONTRACT_SWITCHER\");\n can(\"see\", \"KEYWORKER_CASELOAD\");\n can(\"do\", \"REASSESSMENT\");\n can(\"visit\", ROUTES.FAQ);\n break;\n case \"employer-engagement\":\n can(\"visit\", ROUTES.MAIN);\n\n can(\"visit\", ROUTES.VACANCIES);\n can(\"manage\", ROUTES.VACANCIES);\n can(\"visit\", ROUTES.FAQ);\n can(\"visit\", ROUTES.PROFILE);\n can(\"do\", \"ADD_NEW_VACANCY\");\n can(\"do\", \"MANAGE_VACANCY\");\n\n //ADMIN STUFF\n can(\"visit\", ROUTES.ADMIN);\n //CAN SEE ORG, CREATE NEW CANDIDATE, AND MANAGE ITS OWN CANDIDATES\n can(\"visit\", ROUTES.ORGANISATION);\n\n break;\n case \"hr-manager\":\n can(\"visit\", ROUTES.MAIN);\n can(\"visit\", ROUTES.NEW_USER);\n can(\"visit\", ROUTES.VACANCIES);\n can(\"manage\", ROUTES.VACANCIES);\n can(\"visit\", ROUTES.CANDIDATES);\n can(\"see\", \"LINEMANAGERS\");\n can(\"see\", \"DEPARTMENTS\");\n can(\"see\", \"LOCATIONS\");\n can(\"visit\", ROUTES.FAQ);\n can(\"visit\", ROUTES.PROFILE);\n can(\"do\", \"ADD_NEW_VACANCY\");\n can(\"do\", \"MANAGE_VACANCY\");\n can(\"set\", \"role\");\n //ADMIN STUFF\n can(\"visit\", ROUTES.ADMIN);\n //CAN SEE ORG, CREATE NEW CANDIDATE, AND MANAGE ITS OWN CANDIDATES\n can(\"visit\", ROUTES.ORGANISATION);\n can(\"manage\", ROUTES.ORGANISATION);\n can(\"visit\", ROUTES.ROLES);\n can(\"visit\", ROUTES.LOCATIONS);\n can(\"visit\", ROUTES.DEPARTMENTS);\n can(\"visit\", ROUTES.DEMOGRAPHICS);\n can(\"visit\", ROUTES.LINEMANAGERS);\n break;\n case \"line-manager\":\n can(\"visit\", ROUTES.MAIN);\n can(\"see\", \"DEPARTMENTS\");\n can(\"do\", \"REASSESSMENT\");\n can(\"see\", \"LOCATIONS\");\n can(\"visit\", ROUTES.VACANCIES);\n can(\"manage\", ROUTES.VACANCIES);\n can(\"visit\", ROUTES.FAQ);\n can(\"visit\", ROUTES.PROFILE);\n can(\"visit\", ROUTES.CANDIDATES);\n\n //ADMIN STUFF\n can(\"visit\", ROUTES.ADMIN);\n //CAN SEE ORG, CREATE NEW CANDIDATE, AND MANAGE ITS OWN CANDIDATES\n can(\"visit\", ROUTES.ORGANISATION);\n can(\"manage\", ROUTES.ORGANISATION);\n break;\n default:\n can(\"visit\", ROUTES.MAIN);\n can(\"visit\", ROUTES.FAQ);\n }\n\n return rules;\n}\n","export const getBrowserDetail = () => {\n var ua = navigator.userAgent,\n tem,\n M =\n ua.match(\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\n ) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return \"IE \" + (tem[1] || \"\");\n }\n if (M[1] === \"Chrome\") {\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem != null)\n return tem\n .slice(1)\n .join(\" \")\n .replace(\"OPR\", \"Opera\");\n }\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, \"-?\"];\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\n return M.join(\" \");\n};\n","import React, { Component } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport CardMedia from \"@material-ui/core/CardMedia\";\n\nconst styles = theme => ({\n logo: {\n height: 128,\n width: 128,\n marginTop: 60,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n },\n main: {\n marginLeft: \"auto\",\n marginRight: \"auto\",\n width: 300\n }\n});\n\nclass Header extends Component {\n componentDidMount() {}\n\n render() {\n const { classes } = this.props;\n return (\n <div className={classes.main}>\n <CardMedia\n className={classes.logo}\n image=\"/images/logo_gray.png\"\n title=\"Skillzminer\"\n />\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Header);\n","import { Grid } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport Link from \"@material-ui/core/Link\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport classNames from \"classnames\";\nimport React, { Component } from \"react\";\nimport { Storage } from \"aws-amplify\";\nimport { connect } from \"react-redux\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport {\n confirmLogin as confirmLoginAction,\n login as loginAction,\n setNewPassword as setPasswordAction,\n} from \"../../actions/auth_actions\";\nimport { AUTH_ERROR_CLEAR } from \"../../actions/types\";\nimport * as ROUTES from \"../../constants/routes\";\nimport { getBrowserDetail } from \"../Common/utils\";\nimport Header from \"./Header\";\n\nconst unSupportedMessage = `WARNING: We're very sorry, but the browser you are using is no longer supported. We recommend only using the latest versions of Chrome, Edge, Firefox and Safari before trying to use the Skillsminer Portal.`;\nconst versionsBehindMessage = `WARNING: The browser you are using is more than 2 versions behind the current version. We always recommend and can only support the latest browser version(s).`;\n\nconst styles = (theme) => ({\n root: {},\n margin: {\n margin: 20,\n },\n textField: {\n width: 360,\n },\n main: {\n marginTop: 30,\n width: 400,\n margin: \"auto\",\n paddingTop: 20,\n paddingBottom: 20,\n },\n button: {\n width: 360,\n },\n progress: {\n //height: 2\n },\n progressCont: {\n height: 5,\n },\n marginLabel: {\n margin: 20,\n marginBottom: 0,\n marginTop: 10,\n },\n snack: {\n marginTop: 10,\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n version: {\n fontSize: 9,\n color: \"#bbb\",\n textAlign: \"right\",\n marginRight: 10,\n },\n});\n\nclass Login extends Component {\n state = {\n email: \"\",\n password: \"\",\n npassword: \"\",\n showPassword: false,\n open: false,\n vertical: \"top\",\n horizontal: \"center\",\n error: \"\",\n loading: false,\n version:\n (process.env.REACT_APP_REGION === \"eu-west-2\" ? \"uk.\" : \"ireland.\") +\n process.env.REACT_APP_STAGE +\n \"@\" +\n process.env.REACT_APP_VERSION +\n (process.env.REACT_APP_BUILD\n ? \".\" + parseInt(process.env.REACT_APP_BUILD, 10)\n : \"\"),\n manualURL: \"\",\n };\n\n constructor(props) {\n super(props);\n this.login = this.login.bind(this);\n this.changePass = this.changePass.bind(this);\n }\n handleClose = () => {\n this.setState({ open: false });\n this.props.dispatch({ type: AUTH_ERROR_CLEAR });\n };\n handleForceClose = () => {\n this.setState({ open: false, forceClose: true});\n }\n async componentDidMount() {\n //Auth.currentCredentials();\n //global.AWS.config.credentials = await Auth.currentCredentials();\n\n Storage.get(\"manuals/portalmanual.pdf\")\n .then((result) =>\n this.setState({\n manualURL: result,\n })\n )\n .catch((error) => {\n console.error(error);\n });\n\n const [browser, version] = getBrowserDetail().split(\" \");\n switch (browser.toLowerCase()) {\n case \"ie\" || \"opera\":\n this.setState({ browserErrorText: unSupportedMessage });\n return;\n case \"chrome\":\n if (parseInt(version) < 76) {\n this.setState({ browserErrorText: versionsBehindMessage });\n }\n return;\n case \"edge\":\n if (parseInt(version) < 15) {\n this.setState({ browserErrorText: versionsBehindMessage });\n }\n return;\n case \"safari\":\n if (parseInt(version) < 11) {\n this.setState({ browserErrorText: versionsBehindMessage });\n }\n return;\n case \"firefox\":\n if (parseInt(version) < 69) {\n this.setState({ browserErrorText: versionsBehindMessage });\n }\n return;\n default:\n return;\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.errorMessage !== prevProps.errorMessage &&\n this.props.errorMessage !== \"\"\n ) {\n //temporary fix bypassing Auth.completeNewPassword device key error\n if (this.props.errorMessage && this.props.errorMessage ===\"Invalid device key given.\"){\n window.location.reload();\n }\n else{\n this.setState({\n open: true,\n error: this.props.errorMessage,\n loading: false,\n });\n }\n }\n if (this.props.changePassword !== prevProps.changePassword) {\n this.setState({\n loading: false,\n });\n }\n }\n\n handleChange = (prop) => (event) => {\n this.setState({ [prop]: event.target.value });\n };\n\n handleClickShowPassword = () => {\n this.setState((state) => ({ showPassword: !state.showPassword }));\n };\n\n login(e) {\n e.preventDefault();\n\n let username = this.state.email.trim();\n let password = this.state.password.trim();\n\n this.setState({\n loading: true,\n error: \"\",\n open: false,\n });\n\n this.props.loginAction({ username, password }, this.props.history);\n }\n\n changePass(e) {\n e.preventDefault();\n\n this.setState({\n loading: true,\n error: \"\",\n open: false,\n });\n\n this.props.setPasswordAction(\n this.props.currentAuthUser,\n this.state.npassword,\n this.props.history\n );\n }\n\n render() {\n let {open,error} = this.state;\n const {\n horizontal,\n vertical,\n loading,\n version,\n forceClose,\n browserErrorText,\n } = this.state;\n const { classes, changePassword } = this.props;\n\n let queryDict = {};\n window.location.search.substr(1).split(\"&\").forEach(function(item) {queryDict[item.split(\"=\")[0]] = item.split(\"=\")[1]})\n let duration = 3000;\n\n if (queryDict.message === \"inactivity\" && !error && !forceClose){\n duration = false;\n open = true;\n error = \"Sorry you have been logged out due to inactivity of 60 minutes, please sign in again.\";\n }\n\n let {password,email} = this.state;\n\n if (queryDict.email && queryDict.pass && !this.state.queryParamsLoaded){\n password = decodeURIComponent(queryDict.pass);\n email = queryDict.email;\n this.setState({\n password: password,\n email: email,\n queryParamsLoaded: true\n });\n }\n\n return (\n <div className={classes.root}>\n <div className={classes.progressCont}>\n {loading && <LinearProgress className={classes.progress} />}\n </div>\n <Header />\n {!!browserErrorText ? (\n <Grid\n container\n justify=\"center\"\n alignContent=\"center\"\n alignItems=\"center\"\n style={{ paddingTop: \"1em\" }}\n >\n <Grid item xs=\"4\" style={{ color: \"red\", textAlign: \"center\" }}>\n <div>\n WARNING: We're very sorry, but the browser you are using is no\n longer supported. We recommend only using the latest versions of\n Chrome, Edge, Firefox and Safari before trying to use the\n Skillsminer portal.\n </div>\n </Grid>\n </Grid>\n ) : null}\n\n <Paper className={classes.main}>\n {!changePassword && (\n <form className={classes.container} onSubmit={this.login}>\n <TextField\n id=\"outlined-email-input\"\n label=\"Email\"\n className={classNames(classes.margin, classes.textField)}\n type=\"email\"\n name=\"email\"\n autoComplete=\"email\"\n margin=\"normal\"\n variant=\"outlined\"\n autoFocus\n required\n defaultValue={email}\n onChange={this.handleChange(\"email\")}\n />\n <TextField\n id=\"password\"\n className={classNames(classes.margin, classes.textField)}\n variant=\"outlined\"\n type={this.state.showPassword ? \"text\" : \"password\"}\n label=\"Password\"\n autocomplete=\"current-password\"\n onChange={this.handleChange(\"password\")}\n defaultValue={password}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"Toggle password visibility\"\n onClick={this.handleClickShowPassword}\n >\n {this.state.showPassword ? (\n <VisibilityOff />\n ) : (\n <Visibility />\n )}\n </IconButton>\n </InputAdornment>\n ),\n }}\n required\n />\n <Button\n variant=\"contained\"\n className={classNames(classes.margin, classes.button)}\n size=\"large\"\n color=\"primary\"\n type=\"submit\"\n >\n Login\n </Button>\n <Typography variant=\"body2\" className={classes.marginLabel}>\n Forgot password?{\" \"}\n <Link component={RouterLink} to={ROUTES.FORGET}>\n Reset here\n </Link>\n </Typography>\n {this.state.manualURL && (\n <Typography variant=\"body2\" className={classes.marginLabel}>\n <Link\n href={this.state.manualURL}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n Download\n </Link>{\" \"}\n Portal User Manual\n </Typography>\n )}\n <Typography variant=\"body2\" className={classes.marginLabel}>\n <Link id=\"youtube-link\" href=\"https://www.youtube.com/watch?v=avXHHVsvvZQ&list=PLaqkddI5TjYUZdQTDb69OSKDadsnpvIx5\" target=\"_blank\" rel=\"noopener noreferrer\">\n Visit\n </Link>\n {\" \"} our YouTube Channel for Training Videos\n </Typography>\n </form>\n )}\n\n {changePassword && (\n <form className={classes.container} onSubmit={this.changePass}>\n <Typography variant=\"subtitle2\" className={classes.marginLabel}>\n Please set a new password!\n </Typography>\n <TextField\n id=\"npassword\"\n className={classNames(classes.margin, classes.textField)}\n variant=\"outlined\"\n type={this.state.showPassword ? \"text\" : \"password\"}\n label=\"New Password\"\n autocomplete=\"new-password\"\n value={this.state.npassword}\n onChange={this.handleChange(\"npassword\")}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"Toggle password visibility\"\n onClick={this.handleClickShowPassword}\n >\n {this.state.showPassword ? (\n <VisibilityOff />\n ) : (\n <Visibility />\n )}\n </IconButton>\n </InputAdornment>\n ),\n }}\n required\n />\n <Button\n variant=\"contained\"\n className={classNames(classes.margin, classes.button)}\n size=\"large\"\n color=\"primary\"\n type=\"submit\"\n >\n Change password\n </Button>\n </form>\n )}\n <div className={classes.version}>{getBrowserDetail()}</div>\n <div className={classes.version}>{version}</div>\n </Paper>\n\n <Snackbar\n anchorOrigin={{ vertical, horizontal }}\n open={!!open}\n className={classes.snack}\n onClose={this.handleClose}\n onClick={this.handleForceClose}\n autoHideDuration={duration}\n ContentProps={{\n \"aria-describedby\": \"message-id\",\n }}\n >\n <SnackbarContent\n className={classNames(classes.error)}\n aria-describedby=\"client-snackbar\"\n message={<span id=\"message-id\">{error}</span>}\n />\n </Snackbar>\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n errorMessage: state.auth.error,\n mfaRequired: state.auth.mfa,\n changePassword: state.auth.changePassword,\n currentAuthUser: state.auth.currentAuthUser,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n loginAction,\n confirmLoginAction,\n setPasswordAction,\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nLogin = connect(mapStateToProps, mapDispatchToProps)(Login);\n\nexport default withStyles(styles)(Login);\n","import React, { Component } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Header from \"./Header\";\nimport classNames from \"classnames\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Button from \"@material-ui/core/Button\";\nimport { bindActionCreators } from \"redux\";\nimport { connect } from \"react-redux\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport Typography from \"@material-ui/core/Typography\";\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\n\nimport {\n forgotPassword as forgotPasswordAction,\n confirmForgotPassword as confirmForgotPasswordAction\n} from \"../../actions/auth_actions\";\n\n\n\nconst styles = theme => ({\n root: {},\n margin: {\n margin: 20\n },\n textField: {\n width: 360\n },\n main: {\n marginTop: 60,\n width: 400,\n margin: \"auto\",\n paddingTop: 20,\n paddingBottom: 20\n },\n button: {\n width: 360\n },\n progress: {\n //height: 2\n },\n progressCont: {\n height: 5\n },\n marginLabel: {\n margin: 20,\n marginBottom: 0,\n marginTop: 10\n },\n snack: {\n marginTop: 10\n },\n error: {\n backgroundColor: theme.palette.error.dark\n }\n});\n\nclass Forget extends Component {\n state = {\n email: \"\",\n code : \"\",\n password: \"\",\n passwordcon: \"\",\n open: false,\n vertical: \"top\",\n horizontal: \"center\",\n error: \"\",\n loading: false,\n forgotPasswordCode: \"\"\n };\n\n constructor(props) {\n super(props);\n this.reset = this.reset.bind(this);\n }\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n componentDidMount() {}\n componentDidUpdate(prevProps) {\n if (\n this.props.errorMessage !== prevProps.errorMessage &&\n this.props.errorMessage !== \"\"\n ) {\n this.setState({\n open: true,\n error: this.props.errorMessage,\n loading: false\n });\n }\n }\n handleChange = prop => event => {\n this.setState({ [prop]: event.target.value });\n };\n\n reset(e) {\n e.preventDefault();\n const { forgotPasswordCode, history } = this.props;\n\n let username = this.state.email.trim();\n let code = this.state.code.trim();\n let newPassword = this.state.password;\n if (\n typeof forgotPasswordCode == \"undefined\" ||\n forgotPasswordCode === false\n ) {\n this.props.forgotPasswordAction({ username }, history);\n } else {\n if (this.state.password === this.state.passwordcon){\n this.props.confirmForgotPasswordAction({username, code, newPassword}, history);\n } else {\n alert(\"Passwords should match!\")\n }\n \n }\n }\n\n render() {\n const { horizontal, vertical, open, error, loading } = this.state;\n const { classes, forgotPasswordCode } = this.props;\n\n return (\n <div className={classes.root}>\n <div className={classes.progressCont}>\n {loading && <LinearProgress className={classes.progress} />}\n </div>\n <Header />\n <Paper className={classes.main}>\n <Typography variant=\"h6\" className={classes.marginLabel}>\n Reset your password\n </Typography>\n {!forgotPasswordCode && (\n <form className={classes.container} onSubmit={this.reset}>\n <TextField\n id=\"outlined-email-input\"\n label=\"Email\"\n className={classNames(classes.margin, classes.textField)}\n type=\"email\"\n name=\"email\"\n autoComplete=\"email\"\n margin=\"normal\"\n variant=\"outlined\"\n autoFocus\n required\n onChange={this.handleChange(\"email\")}\n />\n\n <Button\n variant=\"contained\"\n className={classNames(classes.margin, classes.button)}\n size=\"large\"\n color=\"primary\"\n type=\"submit\"\n >\n Reset\n </Button>\n </form>\n )}\n {forgotPasswordCode && (\n <form className={classes.container} onSubmit={this.reset}>\n <TextField\n id=\"outlined-code-input\"\n label=\"Verification Code\"\n className={classNames(classes.margin, classes.textField)}\n type=\"text\"\n name=\"code\"\n autoComplete=\"code\"\n margin=\"normal\"\n variant=\"outlined\"\n autoFocus\n required\n onChange={this.handleChange(\"code\")}\n />\n <TextField\n id=\"password\"\n className={classNames(classes.margin, classes.textField)}\n variant=\"outlined\"\n autocomplete=\"new-password\"\n type= \"password\"\n label=\"New Password\"\n value={this.state.password}\n onChange={this.handleChange(\"password\")}\n \n required\n />\n <TextField\n id=\"passwordcon\"\n className={classNames(classes.margin, classes.textField)}\n variant=\"outlined\"\n type=\"password\"\n autocomplete=\"new-password\"\n label=\"Confirm Password\"\n value={this.state.passwordcon}\n onChange={this.handleChange(\"passwordcon\")} \n required\n />\n\n\n <Button\n variant=\"contained\"\n className={classNames(classes.margin, classes.button)}\n size=\"large\"\n color=\"primary\"\n type=\"submit\"\n >\n Send\n </Button>\n </form>\n )}\n </Paper>\n <Snackbar\n anchorOrigin={{ vertical, horizontal }}\n open={!!open}\n className={classes.snack}\n onClose={this.handleClose}\n autoHideDuration={3000}\n ContentProps={{\n \"aria-describedby\": \"message-id\"\n }}\n >\n <SnackbarContent\n className={classNames(classes.error)}\n aria-describedby=\"client-snackbar\"\n message={<span id=\"message-id\">{error}</span>}\n />\n </Snackbar>\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n authenticated: state.auth.authenticated,\n forgotPasswordCode: state.auth.forgotPasswordCode,\n errorMessage: state.auth.error\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n { forgotPasswordAction, confirmForgotPasswordAction },\n dispatch\n ),\n dispatch\n };\n}\n\nForget = connect(\n mapStateToProps,\n mapDispatchToProps\n)(Forget);\n\nexport default withStyles(styles)(Forget);\n","import React from \"react\";\nimport { Grid, CircularProgress } from \"@material-ui/core\";\nexport const LoadingProgress = ({ text = \"Loading...\" }) => (\n <Grid>\n <Grid container justify=\"center\" item xs>\n <CircularProgress size={25} thickness={4} />\n <span style={{ paddingLeft: \"1em\" }}>{text}</span>\n </Grid>\n </Grid>\n);\n","import { Button, Menu, MenuItem } from \"@material-ui/core\";\nimport ArrowDropDownRoundedIcon from \"@material-ui/icons/ArrowDropDownRounded\";\nimport React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { selectContract } from \"../../actions/portal_actions\";\nimport { LoadingProgress } from \"../Common/LoadingProgress\";\n\nexport const ContractSwitcherMenuComponent = ({\n portaldetails,\n selectContract,\n onChange = () => {},\n textColor = \"white\"\n}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n\n if (!portaldetails || !portaldetails.orgcontracts) {\n return <LoadingProgress text=\"Loading Contracts...\" />;\n }\n\n const {\n user: { role, contracts: userContracts = [] },\n contracts = [],\n orgcontracts: organizationContracts = []\n } = portaldetails;\n\n const availableUserContracts =\n role === \"keyworker\" ? userContracts : contracts;\n\n const contractOptions = availableUserContracts.map(keyworkerContractId => ({\n label: portaldetails.orgcontracts.find(\n ({ contractID }) => contractID === keyworkerContractId\n ).name,\n value: keyworkerContractId\n }));\n\n let currentContract = \"Select Contract\";\n if (portaldetails.selectedContract && portaldetails.selectedContract.contractID){\n currentContract = portaldetails.selectedContract\n ? contractOptions.find(\n ({ value }) => value === portaldetails.selectedContract.contractID\n ).label\n : \"Select Contract\";\n }\n\n return (\n <>\n <Button\n disabled={availableUserContracts.length <= 0}\n aria-controls=\"simple-menu\"\n aria-haspopup=\"true\"\n onClick={({ currentTarget }) => setAnchorEl(currentTarget)}\n style={{ color: textColor, textTransform: \"none\" }}\n >\n {currentContract}\n <ArrowDropDownRoundedIcon />\n </Button>\n <Menu\n id=\"simple-menu\"\n anchorEl={anchorEl}\n keepMounted\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n >\n {contractOptions.map(({ label, value }) => (\n <MenuItem\n key={value}\n onClick={() => {\n selectContract(\n organizationContracts.find(\n ({ contractID }) => contractID === value\n )\n );\n onChange(value);\n setAnchorEl(null);\n }}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n};\n\nfunction mapStateToProps(state) {\n return {\n portaldetails: state.portaldetails\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n selectContract\n },\n dispatch\n ),\n dispatch\n };\n}\n\nexport const ContractSwitcherMenu = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ContractSwitcherMenuComponent);\n","import AppBar from \"@material-ui/core/AppBar\";\nimport Button from \"@material-ui/core/Button\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Badge from \"@material-ui/core/Badge\";\nimport AccountCircle from \"@material-ui/icons/AccountCircle\";\nimport NotificationsIcon from \"@material-ui/icons/Notifications\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport { logout } from \"../../actions/auth_actions\";\nimport { fetchCandidates } from \"../../actions/candidates_actions\";\nimport { getBillingConsole } from \"../../actions/portal_actions\"\nimport * as ROUTES from \"../../constants/routes\";\nimport { Can } from \"../Abilities/\";\nimport { ContractSwitcherMenu } from \"./ContractSwitcherMenu\";\nimport config from \"../../config\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n grow: {\n flexGrow: 1,\n display: \"flex\",\n },\n appbarColor: {\n backgroundColor: \"#333\",\n },\n logo: {\n //backgroundColor :\"#000000\",\n height: 28,\n padding: 3,\n },\n layout: {},\n name: {\n textDecoration: \"none\",\n },\n button: {\n marginLeft: 10,\n marginRight: 10,\n paddingLeft: 10,\n paddingRight: 10,\n color: \"white\",\n \"&:hover\": {\n //background: theme.palette.primary.main\n },\n },\n badge:\n {\n color: \"white\",\n backgroundColor: \"red\"\n },\n progress: {},\n ltext: {},\n logoholder: {},\n logok: {},\n progressCont: {},\n loadernobg: {},\n loader: {},\n});\n\nclass Navigation extends Component {\n constructor(props) {\n super(props);\n this.logout = this.logout.bind(this);\n }\n\n state = {\n anchorEl: null,\n openContractAnchor: null,\n version:\n process.env.REACT_APP_STAGE +\n \"@\" +\n process.env.REACT_APP_VERSION +\n (process.env.REACT_APP_BUILD\n ? \".\" + parseInt(process.env.REACT_APP_BUILD, 10)\n : \"\"),\n };\n\n logout() {\n this.props.logout(null, this.props.history);\n }\n\n handleMenu = (event) => {\n this.setState({ anchorEl: event.currentTarget });\n };\n handleMenuContract = (event) => {\n this.setState({ openContractAnchor: event.currentTarget });\n };\n handleCloseContract = () => {\n this.setState({ openContractAnchor: null });\n };\n\n handleClose = () => {\n this.setState({ anchorEl: null });\n };\n\n componentDidMount = async () => {\n //await this.props.fetchCandidates();\n };\n\n getVariant(route) {\n if (this.props.location.pathname.indexOf(route) === 0) {\n return \"contained\";\n } else {\n return \"text\";\n }\n }\n\n getColor(route) {\n if (\n this.props.location.pathname.indexOf(ROUTES.PROFILE) === 0 ||\n this.props.location.pathname.indexOf(ROUTES.ADMIN) === 0\n ) {\n return \"primary\";\n } else {\n return \"inherit\";\n }\n }\n\n render() {\n const { classes, portaldetails = {}, portalusers={}, vacancies={} } = this.props;\n const { orgdetails = {}, user = {}, unverifiedRolesLength = 0, unverifiedDepartmentsLength = 0, unverifiedLineManagersLength = 0 } = portaldetails;\n const { snackBarText } = vacancies;\n const { anchorEl, version } = this.state;\n const totalNotifcaitons = unverifiedRolesLength + unverifiedDepartmentsLength + unverifiedLineManagersLength\n const open = Boolean(anchorEl);\n const isInternalMobility = user.role === \"hr-manager\" || user.role === \"line-manager\";\n const { isCustomer=false } = portalusers;\n const disabledNav = snackBarText ? true : false; //for preventing nav while search is going\n return ( \n <div className={classes.root}>\n <AppBar\n position=\"static\"\n classes={{\n colorPrimary: classes.appbarColor,\n }}\n >\n <Toolbar>\n <Link to=\"/\">\n <Button>\n <img\n //src={\"/images/logo_gray.png\"}\n src={\n config.STORAGE_CLOUDFRONT_URL +\n (orgdetails.navLogoURL\n ? orgdetails.navLogoURL + \"?\"\n : \"/logos/default_portal_nav_logo.png?\") +\n Date.now()\n }\n className={classes.logo}\n alt={version}\n title={version}\n />\n </Button>\n </Link>\n <div className={classes.grow}>\n {/* <Can I=\"visit\" this={ROUTES.SKILLZMINER}>\n <Button\n className={classes.button}\n color=\"primary\"\n variant={this.getVariant(ROUTES.SKILLZMINER)}\n size=\"small\"\n component={Link}\n to={ROUTES.SKILLZMINER}\n >\n Skillzminer\n </Button>\n </Can> */}\n <Can I=\"visit\" this={ROUTES.VACANCIES}>\n <Button\n className={classes.button}\n color=\"primary\"\n variant={this.getVariant(ROUTES.VACANCIES)}\n size=\"small\"\n component={Link}\n to={ROUTES.VACANCIES}\n disabled={disabledNav}\n >\n {isInternalMobility ? \"Vacancies & Resource Matching\" : \"Vacancies\"}\n </Button>\n </Can>\n <Can I=\"visit\" this={ROUTES.CASELOADS}>\n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n component={Link}\n variant={this.getVariant(ROUTES.CASELOADS)}\n to={ROUTES.CASELOADS}\n disabled={disabledNav}\n >\n Caseloads\n </Button>\n </Can>\n <Can I=\"visit\" this={ROUTES.CANDIDATES}>\n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n component={Link}\n variant={this.getVariant(ROUTES.CANDIDATES)}\n to={ROUTES.CANDIDATES}\n disabled={disabledNav}\n >\n {isInternalMobility ? \"Employees\" : \"Candidates\"}\n </Button>\n </Can>\n <Can I=\"visit\" this={ROUTES.DASHBOARDS}>\n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n component={Link}\n variant={this.getVariant(ROUTES.DASHBOARDS)}\n to={ROUTES.DASHBOARDS}\n disabled={disabledNav}\n >\n Dashboards\n </Button>\n </Can>\n <Can I=\"visit\" this={ROUTES.SUPER_ADMIN_FEEDBACK}>\n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n component={Link}\n variant={this.getVariant(ROUTES.SUPER_ADMIN_FEEDBACK)}\n to={ROUTES.SUPER_ADMIN_FEEDBACK}\n disabled={disabledNav}\n >\n Feedback\n </Button>\n </Can>\n <Can I=\"visit\" this={ROUTES.SUPER_ADMIN_FEEDBACK_SKILLS}>\n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n component={Link}\n variant={this.getVariant(ROUTES.SUPER_ADMIN_FEEDBACK_SKILLS)}\n to={ROUTES.SUPER_ADMIN_FEEDBACK_SKILLS}\n disabled={disabledNav}\n >\n Skills Assessment Feedback\n </Button>\n </Can>\n {isInternalMobility && (\n <>\n <Tooltip title={\"Coming Soon\"}> \n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n disabled={disabledNav}\n >\n Organisational Chart\n </Button>\n </Tooltip>\n <Tooltip title={\"Coming Soon\"}> \n <Button\n className={classes.button}\n color=\"primary\"\n size=\"small\"\n disabled={disabledNav}\n >\n Dashboard & Leaderboards\n </Button>\n </Tooltip>\n </>\n )}\n \n </div>\n <Can I=\"see\" this={\"CONTRACT_SWITCHER\"}>\n <div style={{ paddingRight: \"1em\" }}>\n <ContractSwitcherMenu />\n </div>\n </Can>\n <Typography\n variant=\"body2\"\n color=\"inherit\"\n className={classes.name}\n onClick={this.handleMenu}\n >\n <Badge badgeContent={totalNotifcaitons} classes={{badge : classes.badge}} style={{margin:10}}>\n <NotificationsIcon color=\"white\"/>\n </Badge>\n {this.props.auth.currentAuthUser &&\n this.props.auth.currentAuthUser.attributes &&\n (this.props.auth.currentAuthUser.attributes.given_name\n ? this.props.auth.currentAuthUser.attributes.given_name\n : this.props.auth.currentAuthUser.attributes.email)}\n </Typography>\n <div>\n <IconButton\n aria-owns={open ? \"menu-appbar\" : undefined}\n aria-haspopup=\"true\"\n onClick={this.handleMenu}\n color={this.getColor()}\n >\n <AccountCircle />\n </IconButton>\n <Menu\n id=\"menu-appbar\"\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n open={open}\n onClose={this.handleClose}\n >\n {this.props.auth.currentAuthUser && (\n <MenuItem disabled>\n {this.props.auth.currentAuthUser.attributes.email}\n </MenuItem>\n )}\n\n <Divider light />\n <Can I=\"visit\" this={ROUTES.PROFILE}>\n <MenuItem\n onClick={this.handleClose}\n component={Link}\n to={ROUTES.PROFILE}\n disabled={disabledNav}\n >\n Account\n </MenuItem>\n </Can>\n <Can I=\"visit\" this={ROUTES.FAQ}>\n <MenuItem\n onClick={this.handleClose}\n component={Link}\n to={ROUTES.FAQ}\n disabled={disabledNav}\n >\n FAQ's\n </MenuItem>\n </Can>\n {isCustomer && (\n <MenuItem\n onClick={async () => {\n const portal = await this.props.getBillingConsole()\n if(portal && portal.url){\n window.location.replace(portal.url)\n }\n }}\n disabled={disabledNav}\n >\n Manage Billing\n </MenuItem>\n )}\n <Can I=\"visit\" this={ROUTES.ORGANISATION}>\n <MenuItem\n style={{display:\"flex\", justifyContent:\"space-between\"}}\n onClick={this.handleClose}\n component={Link}\n to={ROUTES.ORGANISATION}\n disabled={disabledNav}\n >\n Admin\n <Badge badgeContent={totalNotifcaitons} classes={{badge : classes.badge}} style={{margin:10}}/>\n </MenuItem>\n </Can>\n\n <Divider light />\n <MenuItem onClick={this.logout}>Logout</MenuItem>\n </Menu>\n </div>\n </Toolbar>\n </AppBar>\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n ...state,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n logout,\n fetchCandidates,\n getBillingConsole\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(Navigation));\n","import { Grid, Typography } from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { Cache } from \"aws-amplify\";\nimport React, { Component, lazy, Suspense } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Route, Switch, withRouter } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport { logout } from \"../../actions/auth_actions\";\nimport * as ROUTES from \"../../constants/routes\";\nimport config from \"../../config\";\n// import Skillzminer from \"../Skillzminer\";\n\nimport Navigation from \"./Navigation\";\n\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Zoom from \"@material-ui/core/Zoom\";\nimport Fade from \"@material-ui/core/Fade\";\nimport Avatar from \"@material-ui/core/Avatar\";\n\n\nconst Default = lazy(() => import(\"./Default\"));\nconst MainDashboard = lazy(() => import(\"./MainDashboard\"));\n\nconst Dashboards = lazy(() => import(\"../Dashboards\"));\nconst Insights = lazy(() => import(\"../Insights\"));\nconst Caseloads = lazy(() => import(\"../Caseload\"));\nconst Admin = lazy(() => import(\"../Admin\"));\nconst Candidates = lazy(() => import(\"../Candidates\"));\nconst Profile = lazy(() => import(\"../Main/Profile\"));\nconst Faq = lazy(() => import(\"../Main/Faq\"));\nconst BlankPage = lazy(() => import(\"../Main/Blank\"));\nconst Vacancies = lazy(() => import(\"../Vacancies\"));\n\nconst SuperAdmin = lazy(() => import(\"../SuperAdmin\"));\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n loader: {\n backgroundColor: \"#efefef\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n zIndex: 9999,\n },\n loadernobg: {\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n zIndex: 9999,\n },\n progressCont: {\n backgroundColor: \"#efefef\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n zIndex: 9999,\n },\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1200 + theme.spacing(3 * 2))]: {\n width: 1200,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n logok: {\n width: 150,\n height: 150,\n marginLeft: 75,\n },\n logoholder: {\n width: 300,\n height: 200,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginLeft: -150,\n marginTop: -200,\n },\n ltext: {\n marginTop: 15,\n textAlign: \"center\",\n },\n progress: {\n marginLeft: 137,\n marginTop: 15,\n },\n});\n\nclass Main extends Component {\n constructor(props) {\n super(props);\n this.logout = this.logout.bind(this);\n }\n state = {\n topLoading: false,\n loading: false,\n bg: false,\n init: false\n };\n\n componentDidUpdate(prevProps) {\n //TODO: refactor this into a separate component\n if (this.props.globalloading !== prevProps.globalloading) {\n if (this.props.globalloading) {\n this.setState({\n topLoading: true,\n bg: true,\n loading: true,\n });\n } else {\n setTimeout(() => {\n this.setState({\n topLoading: false,\n bg: false,\n });\n }, 1000);\n\n setTimeout(() => {\n this.setState({\n loading: false,\n });\n }, 1500);\n }\n }\n }\n\n componentDidMount() {\n if (this.props.role === \"keyworker\" && !this.props.missions) {\n this.setState({\n topLoading: true,\n bg: true,\n loading: true,\n });\n }\n if(!this.state.init && this.props.location.pathname && this.props.location.pathname === ROUTES.MAIN){\n this.setState({init: true})\n let defaultRoute;\n if (this.props.role === \"super-admin\") {\n defaultRoute = ROUTES.SUPER_ADMIN;\n }\n else if (this.props.role === \"hr-manager\" || this.props.role === \"line-manager\" || this.props.role === \"employer-engagement\") {\n defaultRoute = ROUTES.VACANCIES;\n } else {\n defaultRoute = ROUTES.DASHBOARDS;\n }\n if (this.props.role === \"flexible\" && this.props.portaldetails && this.props.portaldetails.user && this.props.portaldetails.user.viewPermissions) {\n if (this.props.portaldetails.user.viewPermissions.dashboardCheckboxGlobal || this.props.portaldetails.user.viewPermissions.dashboardCheckbox){\n defaultRoute = ROUTES.DASHBOARDS;\n } else if (this.props.portaldetails.user.viewPermissions.vacancyCheckbox){\n defaultRoute = ROUTES.VACANCIES;\n } else if (this.props.portaldetails.user.viewPermissions.candidateCheckbox){\n defaultRoute = ROUTES.CANDIDATES;\n } else if (this.props.portaldetails.user.viewPermissions.caseloadCheckbox){\n defaultRoute = ROUTES.CASELOADS;\n }\n }\n if(defaultRoute){\n this.props.history.push(defaultRoute);\n }\n \n }\n }\n\n logout() {\n this.props.logout(null, this.props.history);\n }\n render = () => {\n this.props.history.listen((location) => {\n // location is an object like window.location\n Cache.setItem(\"lastpath\", location.pathname);\n });\n\n const { classes, orgdetails } = this.props;\n const componentKey = this.props.location.key\n return (\n <>\n <div className={classes.root}>\n {this.state.loading && (\n <div\n className={this.state.bg ? classes.loader : classes.loadernobg}\n >\n <Fade in={this.state.topLoading}>\n <div className={classes.progressCont}>\n <LinearProgress />\n\n <Zoom in={true}>\n <div className={classes.logoholder}>\n <Avatar\n variant=\"square\"\n src={\n config.STORAGE_CLOUDFRONT_URL +\n (orgdetails.orgLogoURL\n ? orgdetails.orgLogoURL + \"?\"\n : \"/logos/default_portal_org_logo.png?\") +\n Date.now()\n }\n className={classes.logok}\n />\n {\n <CircularProgress\n className={classes.progress}\n size={26}\n />\n }\n <Typography\n variant=\"subtitle1\"\n gutterBottom\n justify=\"center\"\n className={classes.ltext}\n >\n Loading... {this.props.contractName}\n </Typography>\n </div>\n </Zoom>\n </div>\n </Fade>\n </div>\n )}\n <Grid>\n <Grid item xs>\n <Navigation {...this.props} />\n </Grid>\n </Grid>\n\n {this.props.contract && (\n <Suspense fallback={<LinearProgress />}>\n <Switch>\n <Route path={ROUTES.INSIGHTS} component={Insights} key={componentKey}/>\n <Route path={ROUTES.VACANCIES} component={Vacancies} key={componentKey}/>\n <Route path={ROUTES.DASHBOARDS} component={MainDashboard} key={componentKey}/>\n <Route path={ROUTES.ADMIN} component={Admin} key={componentKey}/>\n <Route path={ROUTES.CASELOADS} component={Caseloads} key={componentKey}/>\n <Route path={ROUTES.SUPER_ADMIN} component={SuperAdmin} key={componentKey}/>\n <Route exact path={ROUTES.PROFILE} component={Profile} key={componentKey}/>\n <Route exact path={ROUTES.FAQ} component={Faq} key={componentKey}/>\n <Route exact path={ROUTES.CANDIDATES} component={Candidates} key={componentKey}/>\n </Switch>\n </Suspense>\n )}\n </div>\n </>\n );\n };\n}\n\nfunction mapStateToProps(state) {\n const {\n candidates,\n portaldetails: { selectedContract = {}, missions, orgdetails = {} },\n } = state;\n\n var contr = false;\n var globalloading = false;\n var contractName = \"\";\n\n if (state.auth.role === \"keyworker\") {\n if (selectedContract && selectedContract.contractID) {\n contr = selectedContract.contractID;\n }\n if (candidates && !candidates.candidates && !missions) {\n globalloading = true;\n } else {\n globalloading = false;\n }\n if (selectedContract && selectedContract.name){\n contractName = selectedContract.name;\n }\n } else {\n contr = true;\n }\n\n return {\n contract: contr,\n authenticated: state.auth.authenticated,\n role: state.auth.role,\n globalloading: globalloading,\n contractName: contractName,\n missions: missions,\n orgdetails,\n portaldetails: state.portaldetails\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n logout,\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(Main)));\n","import { Avatar, Button, Grid } from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport _ from \"lodash\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Redirect, withRouter } from \"react-router-dom\";\nimport ReactToPrint from \"react-to-print\";\nimport { bindActionCreators } from \"redux\";\nimport { fetchCandidateDetails } from \"../../actions/candidates_actions\";\nimport { CandidateHeader } from \"../Candidates/CandidateSimpleDetails\";\nimport { CandidateEngagement } from \"../Candidates/CandidateSimpleDetails/CandidateEngagement\";\nimport { CandidateSummaryView } from \"../Candidates/CandidateSimpleDetails/CandidateSummaryView\";\nimport { OtherAssessments } from \"../Candidates/CandidateSimpleDetails/OtherAssessments\";\n\nconst styles = theme => ({\n root: {\n flexGrow: 1\n }\n});\n\nclass Print extends Component {\n componentDidMount = async () => {\n //await this.props.fetchCandidates();\n };\n\n componentDidUpdate = prevProps => {};\n render() {\n const {\n classes,\n candidates: { selectedCandidateData },\n portaldetails: { missions }\n } = this.props;\n if (!selectedCandidateData) {\n return <Redirect to=\"/portal/candidates\" />;\n }\n\n let sortedmissions = [];\n _.each(missions, item => {\n //GET SCORES\n\n var newItem = {\n ...item\n };\n\n newItem.score =\n selectedCandidateData.latestAssessmentResult.results[\n item.dimension\n ].percentage;\n\n //GET STATUS\n if (selectedCandidateData.missionsAnalytics) {\n _.each(selectedCandidateData.missionsAnalytics, mission => {\n if (mission.missionId === item.id) {\n if (\n newItem.status !== \"Completed\" &&\n mission.event_type === \"missionStart\"\n ) {\n newItem.status = \"Started\";\n }\n\n if (mission.event_type === \"missionAssumedComplete\") {\n newItem.status = \"Completed\";\n }\n }\n });\n }\n sortedmissions.push(newItem);\n });\n\n sortedmissions = _.sortBy(sortedmissions, [\"score\"]);\n return (\n <>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => this.props.history.goBack()}\n >\n Back\n </Button>\n <ReactToPrint\n onBeforeGetContent={() =>\n new Promise(resolve => {\n this.setState({ isOnPrintMode: true });\n setTimeout(() => {\n resolve();\n }, 2000);\n })\n }\n onAfterPrint={() => this.setState({ isOnPrintMode: false })}\n content={() => this.componentRef}\n trigger={() => (\n <Button\n color=\"primary\"\n variant=\"contained\"\n style={{ margin: \"1em\" }}\n >\n Print\n </Button>\n )}\n />\n\n <div className={classes.root} ref={el => (this.componentRef = el)}>\n <Grid container direction=\"column\">\n <Grid item xs>\n <Avatar src={\"/images/logo_gray.png\"} className=\"show-on-print\" />\n </Grid>\n <Grid item xs>\n <CandidateHeader\n candidate={selectedCandidateData}\n user={selectedCandidateData}\n triggerReassessment={() => null}\n />\n </Grid>\n <Grid item xs>\n <CandidateSummaryView\n isOnPrintMode\n candidate={selectedCandidateData}\n user={selectedCandidateData}\n triggerReassessment={() => null}\n groupSkillsBackpack\n rewards={this.props.rewards}\n />\n </Grid>\n <Grid item xs>\n <CandidateEngagement\n missions={sortedmissions}\n candidate={selectedCandidateData}\n keyworkerId={\n this.props.auth.role === \"org-admin\"\n ? this.props.portaldetails.currentKeyWorker\n : this.props.portaldetails.user.userID\n }\n />\n </Grid>\n <Grid item xs>\n <OtherAssessments isOnPrintMode />\n </Grid>\n </Grid>\n </div>\n </>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators({ fetchCandidateDetails }, dispatch),\n dispatch\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(Print)));\n","var _defs;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgChatavatar = function SvgChatavatar(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"circle\", {\n style: {\n fill: \"rgb(255, 106, 20)\"\n },\n cx: 12,\n cy: 12,\n r: 12\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n style: {\n fill: \"rgba(0, 0, 0, 0)\"\n }\n }), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.034279, 0, 0, 0.03531, 2.914762, 1.101826)\",\n style: {}\n }, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"SVGID_1_\",\n width: 595.3,\n height: 595.3\n }))), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"SVGID_2_\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 595.3,\n height: 595.3,\n transform: \"matrix(1, 0, 0, 1, 0, 0)\",\n style: {\n overflow: \"visible\"\n }\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M160.5,410.8c-50.9,0-92.2,41.3-92.2,92.2c0,50.9,41.3,92.2,92.2,92.2c50.9,0,92.2-41.3,92.2-92.2 c0-13.2-2.8-25.7-7.8-37.1l139.3-117.9c14.5,9.5,31.9,15.1,50.5,15.1c50.9,0,92.2-41.3,92.2-92.2c0-50.9-41.3-92.2-92.2-92.2 c-18.6,0-36,5.5-50.5,15.1l-76.2-64.5c5-11.3,7.8-23.9,7.8-37.1c0-50.9-41.3-92.2-92.2-92.2c-50.9,0-92.2,41.3-92.2,92.2 c0,50.9,41.3,92.2,92.2,92.2c18.6,0,36-5.5,50.5-15.1l76.2,64.4c-5,11.4-7.8,23.9-7.8,37.1c0,13.2,2.8,25.8,7.8,37.1L211,425.9 C196.5,416.4,179.1,410.8,160.5,410.8\",\n style: {\n clipPath: \"url(#SVGID_2_)\",\n clipRule: \"evenodd\",\n fill: \"rgb(255, 255, 255)\",\n fillRule: \"evenodd\"\n }\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgChatavatar, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/chatavatar.99f60e75.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useEffect} from \"react\";\nimport { useLocation} from \"react-router-dom\";\nimport {makeStyles, Paper, Avatar, Chip, Grid, Typography, IconButton, Divider, Button, Accordion, AccordionSummary, AccordionDetails} from \"@material-ui/core\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport { ReactComponent as AvatarIcon } from \"./chatavatar.svg\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nconst useStyles = makeStyles((theme) => ({\n anchorSmall: {\n zIndex: 99999,\n position: 'fixed',\n bottom: \"0px\",\n right: \"0px\",\n margin: \"10px\",\n backgroundColor:\"#fff\",\n padding:\"10px\",\n },\n anchor :{\n zIndex: 99999,\n position: 'fixed',\n bottom: \"0px\",\n right: \"0px\",\n margin: \"10px\",\n backgroundColor:\"#fff\",\n padding:\"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n height: \"100%\",\n margin: \"0px\",\n },\n [theme.breakpoints.down(\"md\")]: {\n width: \"100%\",\n },\n [theme.breakpoints.up(\"md\")]: {\n width: \"35%\",\n }\n },\n header:{\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n avatar:{\n backgroundColor:\"#fff\"\n },\n text:{\n paddingBlock:\"10px\"\n }\n}));\n\nexport default function Help({isAuthenticated, getHelpVideos}){\n const classes = useStyles();\n const location = useLocation();\n const [open, isOpen] = useState(false)\n const [expanded, setExpanded] = React.useState(0);\n const [currentPath, setCurrentPath] = useState(undefined);\n const [helpObject, setHelpObject] = React.useState(false);\n\n useEffect(() => {\n async function pathChange(){\n if(location.pathname !== currentPath || !helpObject){\n setCurrentPath(location.pathname);\n setHelpObject(await getHelpVideos(location.pathname))\n }\n }\n pathChange()\n }, [location, isAuthenticated]);\n\n if(helpObject && helpObject.videos){\n if(open){\n return (\n <Paper \n elevation={3}\n className={classes.anchor}\n >\n <Grid container direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" style={{width: \"100%\"}}>\n <Grid item xs>\n <Typography style={{display:\"flex\", alignItems:\"center\"}} variant=\"h6\"> \n <Avatar className={classes.avatar}>\n <AvatarIcon />\n </Avatar>\n Need Help?\n </Typography>\n </Grid>\n <Grid item>\n <IconButton onClick={() => isOpen(!open)}>\n <CloseIcon/>\n </IconButton>\n </Grid>\n </Grid>\n <Divider/>\n <Typography className={classes.text}>\n Some of these videos might help you get up to speed with this page\n </Typography>\n {helpObject.videos.map((item, index) => {\n const videoURL = \"https://embed.app.guidde.com/playbooks/\" + item.id\n return (\n <Accordion expanded={expanded === index} onChange={() => setExpanded(index)}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1-content\"\n id=\"panel1-header\"\n >\n {item.title}\n </AccordionSummary>\n <AccordionDetails>\n <iframe width=\"100%\" height=\"250px\" src={videoURL} title={item.title} frameborder=\"0\" referrerpolicy=\"unsafe-url\" allowfullscreen=\"true\" allow=\"clipboard-write\" sandbox=\"allow-popups allow-popups-to-escape-sandbox allow-scripts allow-forms allow-same-origin allow-presentation\"/>\n </AccordionDetails>\n </Accordion>\n )\n })}\n </Paper>\n )\n }\n else{\n return (\n <Chip\n className={classes.anchorSmall}\n onClick={() => isOpen(!open)}\n avatar={<Avatar><AvatarIcon /></Avatar>}\n label=\"Need Help?\"\n variant=\"outlined\"\n color=\"primary\"\n />\n )\n }\n }\n else{\n return <></>\n }\n}"," /*eslint-disable */\nimport React, { useState } from 'react';\n /*eslint-enable */\nimport { logout } from \"../../actions/auth_actions\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\n\nfunction AutoLogout(props){\n\n const [warnTimeout, setWarnTimeout] = useState(0);\n let logoutcb;\n\n if (warnTimeout === 0){\n let mouseEvents = [\n // \"load\",\n \"mousemove\",\n \"mousedown\",\n \"click\",\n \"scroll\",\n \"keypress\"\n ];\n\n\n let logoutCallback = () => {\n let dispatch = logout(null, [\"/login\"], \"inactivity\");\n dispatch(props.dispatch);\n };\n\n let clearTimeoutCheck = () => {\n if (logoutcb) clearTimeout(logoutcb);\n }\n \n let setTimeoutCheck = () => {\n logoutcb = setTimeout(logoutCallback, 60 * 60 * 1000);\n }\n \n let resetTimeout = () => {\n clearTimeoutCheck();\n setTimeoutCheck();\n }\n\n for (var i in mouseEvents) {\n window.addEventListener(mouseEvents[i], () => {\n resetTimeout();\n });\n }\n setTimeoutCheck();\n setWarnTimeout(1);\n\n }\n \n \n return \"\";\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n logout,\n },\n dispatch\n ),\n dispatch,\n };\n }\n\nexport default connect(\n mapDispatchToProps\n )(AutoLogout);","import React, { Component, useState } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { Grid, Button, CardContent, CardActions, Card, Typography, Backdrop, CircularProgress, Snackbar, SnackbarContent, Paper, Checkbox} from \"@material-ui/core\";\nimport { createCheckout } from \"../../actions/auth_actions\";\nimport { ReactComponent as SmLogo } from \"../Common/Logo/smLogo.svg\";\nimport { bindActionCreators } from \"redux\";\nimport { connect } from \"react-redux\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport { Link } from \"react-router-dom\";\n\nconst seatOptions = [\n {\n id: \"seat1\",\n title: \"1 Seat\",\n price: \"£50\",\n annualPrice: \"£600\"\n },\n {\n id: \"seat3\",\n title: \"3 Seats\",\n price: \"£100\",\n annualPrice: \"£1200\",\n },\n {\n id: \"seat10\",\n title: \"10 Seats\",\n price: \"£200\",\n annualPrice: \"£2400\"\n }\n]\n\nconst creditOptions = [\n {\n id: \"bundle250\",\n title: \"250 Credits\",\n price: \"£500\"\n },\n {\n id: \"bundle500\",\n title: \"500 Credits\",\n price: \"£800\"\n },\n {\n id: \"bundle1000\",\n title: \"1,000 Credits\",\n price: \"£1,500\"\n },\n {\n id: \"bundle3000\",\n title: \"3,000 Credits\",\n price: \"£4,000\"\n },\n {\n id: \"bundle5000\",\n title: \"5,000 Credits\",\n price: \"£5,000\"\n },\n {\n id: \"bundle10000\",\n title: \"10,000 Credits\",\n price: \"£6,000\"\n }\n]\n\nconst styles = theme => ({\n main: {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n grid:{\n maxWidth: \"800px\", \n },\n gridEmbeded:{\n maxWidth: \"100%\",\n },\n itemSpace:{\n margin:5\n },\n product:{\n \"&:hover\": {\n backgroundColor: \"#ffb780\",\n cursor: \"pointer\"\n }\n },\n selectedProduct: {\n background: \"#F5F5F7\",\n border: \"0.1em solid #FF9800\",\n \"&:hover\": {\n backgroundColor: \"#ffb780\",\n cursor: \"pointer\"\n }\n },\n unSelectdProduct: {\n background: \"#ff6a1405\",\n \"&:hover\": {\n backgroundColor: \"#ffb780\",\n cursor: \"pointer\"\n }\n },\n titleText: {\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"28px\",\n textTransform: \"uppercase\",\n fontWeight: 500\n },\n subtitleText:{\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"22px\",\n fontWeight: 500\n },\n bodyText:{\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n fontWeight: 500\n },\n subText:{\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"12px\",\n fontWeight: 500\n },\n largeText: {\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"48px\",\n textTransform: \"uppercase\",\n fontWeight: 700\n },\n midText: {\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"20px\",\n textTransform: \"uppercase\",\n fontWeight: 700\n },\n smallText: {\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"16px\",\n textTransform: \"lowercase\",\n fontWeight: 500\n },\n buttonText:{\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"16px\",\n fontWeight: 700,\n textTransform:\"capitalize\"\n },\n snack: {\n marginTop: 10,\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n paper: {\n maxWidth:800,\n padding:20\n },\n logo: {\n width: \"100%\",\n marginBottom: theme.spacing(2),\n maxHeight: 160,\n cursor: \"pointer\"\n },\n paperTitle:{\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"48px\",\n fontWeight: 700\n },\n paperText:{\n padding:10,\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"20px\",\n fontWeight: 700\n },\n smallPaperText:{\n padding:10,\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"14px\",\n fontWeight: 500,\n textAlign:\"center\"\n },\n});\n\nconst SeatProduct = ({classes, seat, selectedSeat, setSelectedSeat}) => {\n const {id, title, price} = seat;\n return (\n <Grid item className={classes.itemSpace} onClick={() => {\n if(selectedSeat && selectedSeat.id === id){\n setSelectedSeat(undefined)\n }\n else{\n setSelectedSeat(seat)\n }\n }}>\n <Card className={selectedSeat ? selectedSeat.id === id ? classes.selectedProduct : classes.unSelectdProduct : classes.product}>\n <CardContent>\n <Typography className={classes.midText}>{title}</Typography>\n <Typography style={{display:\"flex\", alignItems:\"baseline\"}} className={classes.largeText}>\n {price}<Typography className={classes.smallText}>{\"/month\"}</Typography>\n </Typography>\n </CardContent>\n <CardActions>\n </CardActions>\n </Card>\n </Grid>\n )\n}\n\nconst CreditProduct = ({classes, credits, selectedCredits, setSelectedCredits}) => {\n const {id, title, price} = credits;\n return (\n <Grid item className={classes.itemSpace} onClick={() => {\n setSelectedCredits(credits)\n if(selectedCredits && selectedCredits.id === id){\n setSelectedCredits(undefined)\n }\n else{\n setSelectedCredits(credits)\n }\n }}>\n <Card className={selectedCredits ? selectedCredits.id === id ? classes.selectedProduct : classes.unSelectdProduct : classes.product}>\n <CardContent style={{display:\"flex\", flexDirection:\"column\", justifyContent:\"center\", alignItems:\"center\"}}>\n <Typography className={classes.midText}>{title}</Typography>\n <Typography style={{display:\"flex\", alignItems:\"baseline\"}} className={classes.largeText}>\n {price}\n </Typography>\n </CardContent>\n <CardActions>\n </CardActions>\n </Card>\n </Grid>\n )\n}\n\nconst SuccessPopUp = ({isEmbeded, classes}) => {\n return (\n <Paper elevation={1} className={classes.paper}>\n {isEmbeded && (\n <SmLogo className={classes.logo} onClick={() => window.top.location.href = \"https://www.skillsminer.ai\"}/>\n )}\n <Typography className={classes.paperTitle}>\n Payment Successful\n </Typography>\n <Typography className={classes.paperText}>\n You should receive an email receipt shortly.\n </Typography>\n <Typography className={classes.paperText}>\n Once your order has been processed\n We will contact you via email within the next 48 hours with your credentials to login.\n </Typography>\n <Typography className={classes.paperText}>\n If you have any questions, please contact us at <Link\n to='#'\n onClick={(e) => {\n window.location.href = \"enquiries@skillsminer.ai\"\n e.preventDefault();\n }}\n >\n {\"enquiries@skillsminer.ai\"}\n </Link>\n </Typography>\n {!isEmbeded && (\n <Typography className={classes.smallPaperText}>\n Click <Link to={{ pathname: \"https://www.skillsminer.ai\"}} target=\"_blank\">{\"here\"}</Link> to return to our website \n </Typography>\n )}\n </Paper>\n )\n}\n\nconst ConfirmPopup = ({isEmbeded, classes, onSubmit}) => {\n const [terms, setTerms] = useState(false);\n return (\n <Paper elevation={1} className={classes.paper}>\n <SmLogo className={classes.logo} onClick={() => window.top.location.href = \"https://www.skillsminer.ai\"}/>\n <Typography className={classes.paperTitle}>\n Continue to Secure Checkout\n </Typography>\n <Typography className={classes.paperText}>\n To complete your purchase, you will be redirected to Stripe, our secure payment processor. Stripe handles all payment information according to industry-leading security standards.\n </Typography>\n <Typography className={classes.paperText}>\n To use and access Skillsminer, you must agree to our the terms of our <Link to={{ pathname: \"https://www.skillsminer.ai/privacy-policy/\"}} target=\"_blank\">{\"Privacy Policy\"}</Link> and our <Link to={{ pathname: \"https://www.skillsminer.ai/terms-of-use/\"}} target=\"_blank\">{\"Terms Of Use\"}</Link>.\n </Typography>\n <Typography className={classes.paperText}>\n I accept the terms of the privacy policy and terms of use.\n <Checkbox checked={terms} onChange={() => setTerms(!terms)}/>\n </Typography>\n <Button\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={!terms}\n onClick={async () => await onSubmit()}\n >\n <Typography className={classes.buttonText}>Continue to payment</Typography>\n </Button>\n <Typography className={classes.smallPaperText}>\n If you have any questions, please contact us at <Link\n to='#'\n onClick={(e) => {\n window.location.href = \"enquiries@skillsminer.ai\"\n e.preventDefault();\n }}\n >\n {\"enquiries@skillsminer.ai\"}\n </Link>\n </Typography>\n </Paper>\n )\n}\n\nclass PricingTable extends Component {\n constructor(props) {\n super(props);\n this.recaptchaRef = React.createRef();\n }\n\n state={\n urlString: window.location.search,\n successEvent: false,\n selectedSeat:undefined,\n selectedCredits:undefined,\n loading: false,\n errorMessage: false,\n isEmbeded: false,\n confirmPopup: false\n }\n\n componentDidMount() {\n if (window.location !== window.top.location) {\n document.body.style.background = \"transparent\"\n this.setState({isEmbeded: true})\n }\n\n let queryDict = {}\n this.state.urlString.substr(1).split(\"&\").forEach(function(item) {queryDict[item.split(\"=\")[0]] = item.split(\"=\")[1]})\n if(queryDict && queryDict.stripesuccess){\n this.setState({successEvent: true})\n }\n }\n\n async submit() {\n let recaptchaValue = this.recaptchaRef && this.recaptchaRef.current ? this.recaptchaRef.current.getValue(): false;\n\n this.setState({loading:true})\n if(!recaptchaValue){\n this.setState({loading:false, errorMessage: \"Please complete the captcha\"})\n }\n else{\n const checkoutURL = await this.props.createCheckout(this.state.selectedSeat, this.state.selectedCredits, recaptchaValue);\n if(checkoutURL.url){\n this.setState({loading:false, confirmPopup: false})\n window.top.location.href = checkoutURL.url\n }\n else{\n this.setState({loading:false, errorMessage: checkoutURL.error})\n }\n }\n }\n\n render() {\n const { classes } = this.props;\n const {selectedSeat, selectedCredits, loading, errorMessage, successEvent, isEmbeded, confirmPopup} = this.state;\n return (\n <div className={classes.main}>\n {loading && (\n <Backdrop style={{zIndex:9000}} open={true}> \n <CircularProgress size={28} />\n </Backdrop>\n )}\n {successEvent && (\n <Backdrop style={{zIndex:8001}} open={true}> \n <SuccessPopUp isEmbeded={isEmbeded} classes={classes}/>\n </Backdrop>\n )}\n {confirmPopup && (\n <Backdrop style={{zIndex:8000}} open={true}> \n <ConfirmPopup isEmbeded={isEmbeded} classes={classes} onSubmit={async () => await this.submit()}/>\n </Backdrop>\n )}\n <Snackbar\n className={classes.snack}\n anchorOrigin={{ vertical:\"top\", horizontal:\"center\" }}\n open={errorMessage ? true : false}\n onClose={() => this.setState({ errorMessage: false })}\n autoHideDuration={3000}\n ContentProps={{\n \"aria-describedby\": \"message-id\",\n }}\n >\n <SnackbarContent\n className={classes.error}\n aria-describedby=\"client-snackbar\"\n message={<span id=\"message-id\">{errorMessage}</span>}\n />\n </Snackbar>\n <Grid\n className={isEmbeded ? classes.gridEmbeded : classes.grid}\n container\n direction=\"column\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n spacing={0}\n >\n {!isEmbeded && (\n <SmLogo className={classes.logo} style={{marginTop:20}} onClick={() => window.top.location.href = \"https://www.skillsminer.ai\"}/>\n )}\n <Grid item className={classes.itemSpace}>\n <Typography className={classes.titleText}>\n Mine, Match and Mobilise Hidden Talent\n </Typography>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Typography className={classes.subtitleText}>\n In just a few clicks you can access the power of Skillsminer and find the talent you need\n </Typography>\n </Grid> \n <Grid item className={classes.itemSpace}>\n <Typography className={classes.bodyText}>\n Each Account gives one member of your team access to Skillsminer's ProAct portal. Then they can mine for matches with your vacant roles. You’ll be able to mine your own talent pool and our exclusive Skillsminer talent pool. You can create vacancies and personalise your own virtual assistant to contact your matches for you.\n </Typography>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"center\"\n alignItems=\"center\"\n spacing={0}\n >\n {seatOptions.map((item) => (\n <SeatProduct\n classes={classes}\n seat={item}\n selectedSeat={selectedSeat}\n setSelectedSeat={(value) => this.setState({selectedSeat: value})}\n />\n ))}\n </Grid>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Typography className={classes.subText}>\n Seat prices are billed annually, providing access for the entire year.\n </Typography>\n </Grid>\n \n <Grid item className={classes.itemSpace}>\n <Typography className={classes.bodyText}>\n If you want to mine from an even bigger pool you can buy Credits. This lets you mine and match from an even larger pool of over 3 million talented people from throughout the UK.\n </Typography>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Typography className={classes.bodyText}>\n One Credit allows you to download one additional CV and contact details for one, unique matched individual.\n </Typography>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"center\"\n alignItems=\"center\"\n spacing={0}\n style={{margin:20}}\n >\n {creditOptions.map((item) => (\n <CreditProduct\n classes={classes}\n credits={item}\n selectedCredits={selectedCredits}\n setSelectedCredits={(value) => this.setState({selectedCredits: value})}\n />\n ))}\n </Grid>\n </Grid>\n <Grid item className={classes.itemSpace}>\n <ReCAPTCHA\n style={{marginTop: 15}}\n ref={this.recaptchaRef}\n sitekey=\"6LfkUdoaAAAAACWTV3biAMmcp8JLPQpsuWzrFDMa\"\n />\n </Grid>\n <Grid item className={classes.itemSpace}>\n <Button\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={!selectedSeat}\n onClick={() => this.setState({confirmPopup: true})}\n >\n <Typography className={classes.buttonText}>Buy Now</Typography>\n </Button>\n </Grid>\n </Grid>\n </div>\n );\n }\n}\n\n\nfunction mapStateToProps(state) {\n return {};\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n createCheckout\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nPricingTable = connect(mapStateToProps, mapDispatchToProps)(PricingTable);\n\nexport default withStyles(styles)(PricingTable);\n","import React from \"react\";\nimport \"./App.css\";\nimport PropTypes from \"prop-types\";\nimport { bindActionCreators } from \"redux\";\nimport { connect } from \"react-redux\";\nimport {\n BrowserRouter as Router,\n Route,\n Redirect,\n Switch\n} from \"react-router-dom\";\n\nimport * as ROUTES from \"./constants/routes\";\nimport { validateUserSession as validateUserAction } from \"./actions/auth_actions\";\nimport { getHelpVideos } from \"./actions/portal_actions\";\nimport { Cache, Logger } from \"aws-amplify\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\n\nimport config from \"./config/\";\n\nimport defineRulesFor from \"./config/permissions\";\n//componenets\nimport Login from \"./components/Auth/Login\";\nimport Forget from \"./components/Auth/Forget\";\nimport Main from \"./components/Main\";\nimport Print from \"./components/Print\";\nimport Help from \"./components/Help\";\nimport AutoLogout from './components/AutoLogout';\nimport PricingTable from './components/Auth/PricingTable';\nimport { StylesProvider, createGenerateClassName } from \"@material-ui/styles\";\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: \"sm\",\n seed: \"sm\"\n});\n\nLogger.LOG_LEVEL = process.env.REACT_APP_STAGE === \"prod\" ? \"ERROR\" : \"INFO\";\n\nconst logger = new Logger(\"MAIN\", \"INFO\");\n\nconst NotFoundRedirect = () => <Redirect to=\"/\" />;\n\nconst PublicRoute = ({ component: ReactComponent, authStatus, ...rest }) => {\n // logger.info(\"App.PublicRoute() authStatus:\", authStatus);\n\n return (\n\n <Route\n {...rest}\n render={props =>\n authStatus === true ? (\n <Redirect\n to={\n Cache.getItem(\"lastpath\")\n ? Cache.getItem(\"lastpath\")\n : ROUTES.MAIN\n }\n {...props}\n />\n ) : authStatus === false ? (\n <ReactComponent {...props} />\n ) : (\n <LinearProgress />\n )\n }\n />\n );\n};\n\nconst PrivateRoute = ({ component: ReactComponent, init, authStatus, ...rest }) => {\n var x = { ...rest };\n let path = x.location.pathname;\n\n // logger.info(\n // \"App.PrivateRoute() authStatus:\",\n // authStatus,\n // path,\n // init,\n // window.ability.can(\"visit\", path)\n // );\n var t = path.split(\"/\");\n t.pop();\n let newpath = t.join(\"/\");\n \n return (\n <div>\n <AutoLogout />\n <Route\n {...rest}\n render={props =>\n authStatus === true && init === true ? (\n //VERY IMPORTANT! IF USER CANT VISIT A PATH, IT WILL BE REDIRECTED TO PARENT PATH\n window.ability.can(\"visit\", path) ? (\n <ReactComponent {...props} />\n ) : (\n <Redirect to={newpath} />\n )\n ) : authStatus === false ? (\n <Redirect to={ROUTES.LOGIN} />\n ) : (\n <LinearProgress />\n )\n }\n />\n </div>\n );\n};\n\nconst DefaultRoute = ({ authStatus,init, ...rest }) => {\n // logger.info(\"App.DefaultRoute() authStatus:\", authStatus);\n\n Cache.removeItem(\"lastpath\");\n return (\n <Route\n {...rest}\n render={props =>\n authStatus === true && init === true ? (\n <Redirect to={ROUTES.MAIN} {...props} />\n ) : authStatus === false ? (\n <Redirect to={ROUTES.LOGIN} />\n ) : (\n <LinearProgress />\n )\n }\n />\n );\n};\n\nclass App extends React.Component {\n constructor(props) {\n super(props);\n this.handleWindowClose = this.handleWindowClose.bind(this);\n }\n\n state = {\n role: \"\",\n init: false\n };\n componentDidMount() {\n // logger.info(\"App.componentDidMount() props: \", this.props);\n // if session contains valid\n this.setState({\n role: this.props.role\n });\n this.validateUser();\n //window.addEventListener(\"beforeunload\", this.handleWindowClose);\n\n this.interval = setInterval(() => {\n this.validateUser();\n }, config.DEFAULT_SESSIONCHECK_TIME);\n //session check in every 5 mins\n\n\n }\n\n componentWillUnmount() {\n clearInterval(this.interval);\n //window.removeEventListener(\"beforeunload\", this.handleWindowClose);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.role !== prevProps.role) {\n this.setState({\n role: this.props.role\n });\n }\n }\n\n handleWindowClose = async e => {\n e.preventDefault();\n };\n\n validateUser() {\n if (this.props.authenticated !== false) {\n this.props.validateUserAction();\n }\n }\n\n render() {\n // logger.info(\"App.render() props: \", this.props);\n if (this.state.role !== this.props.role && this.props.role !== \"flexible\") {\n const rules = defineRulesFor(this.props.role);\n this.props.ability.update(rules);\n }\n \n if (this.state.role === \"flexible\" && this.state.init === false) {\n\n if (this.props.portalDetails && this.props.portalDetails.user && this.props.portalDetails.user.viewPermissions) {\n let optional_rules = defineRulesFor(this.props.role, this.props.portalDetails.user.viewPermissions);\n this.props.ability.update(optional_rules);\n this.setState({\n init: true\n });\n }\n } else if (this.state.role !== \"\" && this.state.init === false && this.props.portalDetails && this.props.portalDetails.user ) {\n this.setState({init: true});\n };\n\n\n return (\n <div>\n <StylesProvider generateClassName={generateClassName}>\n <Router>\n <Help isAuthenticated={this.props.authenticated} getHelpVideos={this.props.getHelpVideos}/>\n <Switch>\n <DefaultRoute\n exact\n path=\"/\"\n authStatus={this.props.authenticated}\n init={this.state.init}\n />\n <PrivateRoute\n path={ROUTES.PRINT}\n component={Print}\n authStatus={this.props.authenticated}\n init={this.state.init}\n\n />\n <PrivateRoute\n path={ROUTES.MAIN}\n component={Main}\n authStatus={this.props.authenticated}\n init={this.state.init}\n\n />\n \n <PublicRoute\n exact\n path={ROUTES.LOGIN}\n component={Login}\n authStatus={this.props.authenticated}\n init={this.state.init}\n\n />\n <PublicRoute\n exact\n path={ROUTES.FORGET}\n component={Forget}\n authStatus={this.props.authenticated}\n init={this.state.init}\n\n />\n <PublicRoute\n exact\n path={ROUTES.PRICING}\n component={PricingTable}\n authStatus={this.props.authenticated}\n init={this.state.init}\n\n />\n\n <Route component={NotFoundRedirect} />\n </Switch>\n </Router>\n </StylesProvider>\n </div>\n );\n }\n}\n\n// Runtime type checking for React props\nApp.propTypes = {\n validateUser: PropTypes.func,\n history: PropTypes.object,\n errorMessage: PropTypes.string\n};\n\nfunction mapStateToProps(state) {\n\n return {\n authenticated: state.auth.authenticated,\n role: state.auth.role,\n portalDetails: state.portaldetails\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n validateUserAction,\n getHelpVideos\n },\n dispatch\n ),\n dispatch\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle\n} from \"@material-ui/core\";\nimport React from \"react\";\n//import * as Sentry from \"@sentry/browser\";\n\nexport class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, eventId: null, };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: true };\n }\n\n /*\n componentDidCatch(error, errorInfo) {\n Sentry.withScope(scope => {\n scope.setExtras(errorInfo);\n const eventId = Sentry.captureException(error);\n this.setState({ eventId });\n });\n }\n*/\n render() {\n if (this.state.hasError) {\n return (\n <Dialog\n open={this.state.hasError}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">Oops!</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n We're sorry, something went wrong and we couldn't show the page\n you were looking for.\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n {/*<Button\n color=\"primary\"\n autoFocus\n onClick={() =>\n Sentry.showReportDialog({ eventId: this.state.eventId })\n }\n >\n Report feedback\n </Button>*/}\n <Button\n color=\"primary\"\n autoFocus\n onClick={() => (window.location.href = \"/\")}\n >\n Take me Home\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n return this.props.children;\n }\n}\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.1/8 is 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 .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.then(registration => {\n registration.unregister();\n });\n }\n}\n","import {\n AUTH_USER,\n AUTH_MFA,\n AUTH_NEW_PASSWORD_REQUIRED,\n UNAUTH_USER,\n REGISTER_USER,\n REGISTER_USER_CONFIRM,\n REGISTER_MFA,\n REGISTER_USER_ERROR,\n FORGOT_PASSWORD,\n FORGOT_PASSWORD_CONFIRM,\n AUTH_ERROR,\n AUTH_ERROR_CLEAR\n} from \"../actions/types\";\n\nimport { Logger } from \"aws-amplify\";\nconst logger = new Logger(\"AUTH.REDUCER\", \"DEBUG\");\n\nexport default function(state = {}, action) {\n switch (action.type) {\n case AUTH_USER: {\n const returnProps = {\n ...state,\n error: \"\",\n authenticated: true,\n mfa: false,\n currentAuthUser: action.currentAuthUser,\n role:\n action.currentAuthUser &&\n action.currentAuthUser.signInUserSession.idToken.payload[\n \"cognito:groups\"\n ]\n ? action.currentAuthUser.signInUserSession.idToken.payload[\n \"cognito:groups\"\n ][0]\n : \"default\"\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case AUTH_MFA: {\n const returnProps = {\n ...state,\n error: \"\",\n authenticated: false,\n mfa: true,\n changePassword: false,\n currentAuthUser: action.payload\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case AUTH_NEW_PASSWORD_REQUIRED: {\n const returnProps = {\n ...state,\n error: \"\",\n authenticated: false,\n mfa: false,\n changePassword: true,\n currentAuthUser: action.payload\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case UNAUTH_USER: {\n const returnProps = {\n error: \"\",\n authenticated: false,\n currentAuthUser: {},\n role: \"\"\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case REGISTER_USER: {\n const returnProps = {\n ...state,\n error: \"\",\n authenticated: false,\n register: true\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case REGISTER_USER_CONFIRM: {\n const returnProps = {\n ...state,\n error: \"\",\n authenticated: false,\n register: true,\n mfa: false,\n resendCode: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case REGISTER_MFA: {\n const returnProps = {\n ...state,\n error: \"\",\n mfa: true,\n resendCode: false,\n currentAuthUser: action.payload\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case REGISTER_USER_ERROR: {\n const returnProps = {\n ...state,\n error: action.payload,\n mfa: true,\n resendCode: true,\n currentAuthUser: action.currentAuthUser\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case AUTH_ERROR: {\n const returnProps = {\n ...state,\n error: action.payload,\n authenticated: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case FORGOT_PASSWORD: {\n const returnProps = {\n ...state,\n error: \"\",\n forgotPasswordCode: true,\n authenticated: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case FORGOT_PASSWORD_CONFIRM: {\n const returnProps = {\n ...state,\n error: \"\",\n forgotPasswordCode: false,\n authenticated: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case AUTH_ERROR_CLEAR: {\n const returnProps = { ...state, error: \"\", authenticated: false };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n default:\n return state;\n }\n}\n","import { Logger } from \"aws-amplify\";\nimport {\n EMPTY_CANDIDATES,\n EMPTY_CANDIDATE_DETAILS,\n FETCH_CANDIDATES,\n FETCH_CANDIDATE_BACKPACK,\n FETCH_CANDIDATE_DETAILS,\n FETCH_CANDIDATE_ENGAGEMENTS,\n FETCH_CANDIDATE_JOB_MATCHES,\n FETCH_CANDIDATE_MATCHES,\n FETCH_CANDIDATE_SKILLS_INFO,\n FETCH_ALL_OCCUPATIONS,\n SET_NEW_SKILLS,\n FETCH_VALIDATION_REQUESTS\n} from \"../actions/types\";\n\nconst logger = new Logger(\"CANDIDATES.REDUCER\", \"INFO\");\nconst _ = require(\"lodash\");\n\nexport default function (state = {}, action) {\n switch (action.type) {\n case FETCH_CANDIDATES: {\n var candidates = [];\n var candidatesAll = [];\n\n if (!action.candidates) {\n return {\n ...state,\n candidates: null,\n };\n }\n action.candidates.forEach((item) => {\n // we need this for admin\n item.UserStatus = item.Cognito_UserStatus;\n item.Enabled = item.Cognito_Enabled;\n item.Username = item.UserID;\n item.formattedInviteDate = (item.createdAt.toString().length === 13 ) ? new Date(item.createdAt).toLocaleDateString() : new Date(item.createdAt * 1000).toLocaleDateString();\n item.formattedAccessedDate = item.lastAccessedAt ? new Date(item.lastAccessedAt).toLocaleDateString() : \"N/A\" ;\n item.formattedCompletedDate = item.latestAssessmentCreatedAt ? new Date(item.latestAssessmentCreatedAt).toLocaleDateString() : \"N/A\";\n item.flag = item.UserStatus !== \"CONFIRMED\" ? \"Not Logged In\" : (!item.assessmentCompleted || !item.assessmentVersion) ? \"Assessments/Re-assessments not completed\" : \"Assessments completed\"\n candidatesAll.push(item);\n\n if (!item.isDisabled) {\n //filtered by status\n candidates.push(item);\n }\n });\n\n const sortOrder = [\"Assessments completed\", \"Assessments/Re-assessments not completed\", \"Not Logged In\"]\n const returnProps = {\n ...state,\n candidates: candidates.sort((a, b) =>\n b.createdAt - a.createdAt\n ).sort((a, b) =>\n sortOrder.indexOf(a.flag) - sortOrder.indexOf(b.flag)\n ),\n candidatesAll: candidatesAll.sort((a, b) =>\n b.createdAt - a.createdAt\n ).sort((a, b) =>\n sortOrder.indexOf(a.flag) - sortOrder.indexOf(b.flag)\n )\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case EMPTY_CANDIDATES: {\n const returnProps = {\n ...state,\n candidates: action.candidates,\n candidatesAll: [],\n selectedCandidateData: null,\n };\n //delete returnProps.selectedCandidateData\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case EMPTY_CANDIDATE_DETAILS: {\n const returnProps = {\n ...state,\n selectedCandidateData: action.selectedCandidate,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case FETCH_CANDIDATE_DETAILS: {\n var selectedCandidate = [];\n if (action.selectedCandidate) {\n selectedCandidate = action.selectedCandidate;\n } else {\n const returnProps = {\n ...state,\n };\n // return with an empty one\n delete returnProps.selectedCandidateData;\n return returnProps;\n }\n try {\n var item = selectedCandidate.latestAssessmentResult.results;\n\n var latest = selectedCandidate.latestAssessmentResult.results;\n\n if (selectedCandidate.assessmentVersion > 1) {\n item = selectedCandidate.assessmentResult.results;\n }\n\n selectedCandidate.radarData = [\n {\n name: \"Commitment\",\n latest: latest.COMM.percentage,\n first: item.COMM.percentage,\n },\n {\n name: \"Responsiveness\",\n latest: latest.RTF.percentage,\n first: item.RTF.percentage,\n },\n {\n name: \"Adaptability\",\n latest: latest.ADY.percentage,\n first: item.ADY.percentage,\n },\n {\n name: \"Complexity\",\n latest: latest.SPC.percentage,\n first: item.SPC.percentage,\n },\n {\n name: \"Learning\",\n latest: latest.RLS.percentage,\n first: latest.RLS.percentage,\n },\n {\n name: \"Speed\",\n latest: latest.DMA.percentage,\n first: item.DMA.percentage,\n },\n {\n name: \"Confidence\",\n latest: latest.CONF.percentage,\n first: item.CONF.percentage,\n },\n {\n name: \"Control\",\n latest: latest.CONT.percentage,\n first: item.CONT.percentage,\n },\n {\n name: \"Accuracy\",\n latest: latest.PSA.percentage,\n first: item.PSA.percentage,\n },\n ];\n selectedCandidate.ACdata = [\n {\n name: \"Complexity\",\n latest: latest.SPC.percentage,\n first: item.SPC.percentage,\n },\n {\n name: \"Speed\",\n latest: latest.DMA.percentage,\n first: item.DMA.percentage,\n },\n {\n name: \"Accuracy\",\n latest: latest.PSA.percentage,\n first: item.PSA.percentage,\n },\n ];\n selectedCandidate.LAdata = [\n {\n name: \"Responsiveness\",\n latest: latest.RTF.percentage,\n first: item.RTF.percentage,\n },\n {\n name: \"Adaptability\",\n latest: latest.ADY.percentage,\n first: item.ADY.percentage,\n },\n {\n name: \"Learning\",\n latest: latest.RLS.percentage,\n first: item.RLS.percentage,\n },\n ];\n selectedCandidate.REdata = [\n {\n name: \"Control\",\n latest: latest.CONT.percentage,\n first: item.CONT.percentage,\n },\n {\n name: \"Commitment\",\n latest: latest.COMM.percentage,\n first: item.COMM.percentage,\n },\n {\n name: \"Confidence\",\n latest: latest.CONF.percentage,\n first: item.CONF.percentage,\n },\n ];\n } catch (e) {}\n\n Object.values(selectedCandidate.interventions || {}).forEach(\n (intervention) => {\n intervention.type = !intervention.type ? 2 : intervention.type;\n }\n );\n let newSkills_names = []\n\n if (selectedCandidate.occupationSkills){\n selectedCandidate.occupationSkills.forEach((mainSkill, i) => {\n mainSkill.skills.forEach((s) => {\n newSkills_names.push(s.name.toLowerCase())\n })\n });\n selectedCandidate.skills_names = [...new Set(newSkills_names)]\n } else {\n selectedCandidate.skills_names = false;\n }\n if (!selectedCandidate.occupationBlacklist){\n selectedCandidate.occupationBlacklist = []\n }\n\n selectedCandidate.candidateStatus = \"Status not entered\"\n if (selectedCandidate.candidate_status_history && selectedCandidate.candidate_status_history.length > 0){\n selectedCandidate.candidateStatus = selectedCandidate.candidate_status_history[selectedCandidate.candidate_status_history.length -1].status\n }\n \n const returnProps = {\n ...state,\n selectedCandidateData: selectedCandidate,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case FETCH_CANDIDATE_BACKPACK: {\n const selectedCandidateData = state.selectedCandidateData;\n selectedCandidateData.bestBackpack = action.bestBackpack;\n return { ...state, selectedCandidateData };\n }\n case FETCH_CANDIDATE_MATCHES: {\n const selectedCandidateData = state.selectedCandidateData;\n const { type, matches } = action.payload;\n selectedCandidateData[`${type}_matches`] = matches;\n return { ...state, selectedCandidateData };\n }\n case FETCH_CANDIDATE_SKILLS_INFO: {\n const selectedCandidateData = state.selectedCandidateData;\n selectedCandidateData.skillsInfo = action.skillsInfo;\n return { ...state, selectedCandidateData };\n }\n case FETCH_CANDIDATE_ENGAGEMENTS: {\n const selectedCandidateData = state.selectedCandidateData;\n\n selectedCandidateData.engagements = action.engagements;\n \n // need to filter out resources that dont have a title or a link.\n let resources = [];\n _.each(action.resourceViewed, (resource) => {\n if (resource.link && resource.title) {\n resources.push(resource);\n }\n });\n\n selectedCandidateData.resourceViewed = resources;\n selectedCandidateData.coursesViewed = action.coursesViewed\n\n selectedCandidateData.jobsSaved = action.jobsSaved;\n selectedCandidateData.jobsApplied = action.jobsApplied;\n selectedCandidateData.jobsViewed = action.jobsViewed;\n\n selectedCandidateData.qualsSaved = action.qualsSaved;\n selectedCandidateData.qualsApplied = action.qualsApplied;\n selectedCandidateData.qualsViewed = action.qualsViewed;\n\n return { ...state, selectedCandidateData };\n }\n case FETCH_CANDIDATE_JOB_MATCHES: {\n const selectedCandidateData = state.selectedCandidateData;\n const { normalJobMatches, techJobMatches } = action.payload;\n selectedCandidateData.normalJobMatches = normalJobMatches;\n selectedCandidateData.techJobMatches = techJobMatches;\n return { ...state, selectedCandidateData };\n }\n case FETCH_ALL_OCCUPATIONS: {\n let jobcat = action.new_jobs_cats;\n let payload = {};\n if (jobcat.jobs){\n let { desired_occupations,\n interest_occupations,\n past_occupations,\n skills_backpack_occupations,\n styles_occupations\n } = jobcat.jobs;\n payload = {\n desired_occupations,\n interest_occupations,\n past_occupations,\n skills_backpack_occupations,\n styles_occupations\n }\n }\n\n return {...state, ...payload}\n \n }\n case SET_NEW_SKILLS: {\n return { \n ...state,\n occupationSkills: action.newOccupationSkills,\n selectedCandidateData: {\n ...state.selectedCandidateData, \n occupationSkills: action.newOccupationSkills\n }\n };\n }\n case FETCH_VALIDATION_REQUESTS:{\n return {\n ...state,\n skilValidationRequests: action.data\n } \n }\n \n default:\n return state;\n }\n}\n","import _ from \"lodash\";\nimport {\n PORTAL_CASELOAD,\n PORTAL_CASELOAD_ENDDATE,\n PORTAL_DETAILS,\n FETCH_MISSIONS,\n PORTAL_LIST_CONTRACTS,\n PORTAL_ORGADMIN_CASELOAD,\n PORTAL_ORGADMIN_CASELOAD_ENDDATE,\n PORTAL_ORGADMIN_CASELOAD_GLOBAL,\n PORTAL_SUPPLY_DATA,\n PORTAL_SELECT_CONTRACT,\n PORTAL_SELECT_KEYWORKER,\n PORTAL_SELECT_KEYWORKERS,\n PORTAL_DESELECT_KEYWORKER,\n PORTAL_SELECT_PROVIDER,\n PORTAL_DESELECT_LINEMANAGER,\n PORTAL_SELECT_LINEMANAGER,\n FETCH_INTERVENTIONS,\n EMPTY_CANDIDATES_SELECTION,\n PORTAL_DASHBOARD_CASELOAD,\n SET_RECENTLY_VIEWED,\n PORTAL_SUPPLY_LOW,\n PORTAL_LOCATION_LIST,\n PORTAL_ADZUNA_CATEGORY,\n PORTAL_ADZUNA_HISTOGRAM_CATEGORY,\n PORTAL_ADZUNA_HISTORICAL_CATEGORY,\n PORTAL_ADZUNA_REGION_DATA,\n UPDATE_BULK_UPLOAD_PROGRESS,\n SET_BULK_EMAIL_TEMPLATE,\n SET_ROLES,\n SET_LOCATIONS,\n SET_DEPARTMENTS,\n SET_DEMOGRAPHICS,\n SET_LINEMANAGERS,\n SET_UNVERIFIED,\n SET_HELP_VIDEOS,\n PORTAL_DESELECT_DEPARTMENT,\n PORTAL_SELECT_DEPARTMENT\n} from \"../actions/types\";\n\nimport { Logger } from \"aws-amplify\";\nconst logger = new Logger(\"PORTAL DETAILS.REDUCER\", \"DEBUG\");\n\nfunction mergeObjectsWithDivision(obj, obj1){\n return _.mergeWith(obj, obj1, (objValue, srcValue, key) => {\n \n if (_.isNumber(objValue)) {\n return ((objValue + srcValue ).toFixed(1) / 2)\n };\n \n });\n};\nfunction mergeObjectsWithSum(obj, obj1){\n return _.mergeWith(obj, obj1, (objValue, srcValue, key) => {\n \n if (_.isNumber(objValue)) {\n if (key === \"value\"){\n return objValue + srcValue;\n } else {\n return objValue + srcValue;\n }\n };\n \n });\n};\n\n\n//this takes the main caseload/insights object(plus engagement data in some bits?) and reformats it for the graphs on the dashboard\nfunction caseLoads(caseload, state) {\n if (caseload) { \n var caseloaddata = []; //this is for the \"Overall Caseload\" graph\n caseloaddata.push({\n name: \"Invited\",\n value: caseload.all.invited,\n fill: \"#84dc20\",\n });\n\n caseloaddata.push({\n name: \"Accessed\",\n value: caseload.all.accessed,\n fill: \"#ff6505\",\n });\n caseloaddata.push({\n name: \"Initial Assessment Complete\",\n value: caseload.all.iaCompleted,\n fill: \"#4fc3f7\",\n });\n caseloaddata.push({\n name: \"Reassessment Issued\",\n value: caseload.all.reassessmentIssued,\n fill: \"#fdd835\",\n });\n caseloaddata.push({\n name: \"Reassessment Completed\",\n value: caseload.all.reassessmentCompleted,\n fill: \"#c2185b\",\n });\n caseloaddata = caseloaddata.reverse();\n } else {\n if (state.caseload && state.caseload.orgadminCaseload)\n return {\n ...state,\n caseload: {\n orgadminCaseload: state.caseload.orgadminCaseload,\n },\n dashboard: {},\n };\n else {\n return {\n ...state,\n caseload: {},\n dashboard: {},\n };\n }\n }\n\n var dashboard = {\n caseload: caseloaddata, //\"Overall Caseload\" graph\n };\n\n if (caseload && caseload.aggregated) {\n dashboard.aggregatedGraphData = [ //aggregatedGraphData is for three graphs: Average Work Styles Initial vs. Latest Assessments (%) + Average Work Style Distance Travelled (%) + Average Initial Work Styles\n {\n name: \"Commitment\",\n id: \"COMM\",\n },\n {\n name: \"Responsibility\",\n id: \"RTF\",\n },\n {\n name: \"Adaptability\",\n id: \"ADY\",\n },\n {\n name: \"Complexity\",\n id: \"SPC\",\n },\n {\n name: \"Learning\",\n id: \"RLS\",\n },\n {\n name: \"Speed\",\n id: \"DMA\",\n },\n {\n name: \"Confidence\",\n id: \"CONF\",\n },\n {\n name: \"Control\",\n id: \"CONT\",\n },\n {\n name: \"Accuracy\",\n id: \"PSA\",\n },\n ];\n\n dashboard.interestGraphData = [\n {\n name: \"Crafter\",\n id: \"crafter\",\n },\n {\n name: \"Creator\",\n id: \"creator\",\n },\n {\n name: \"Doer\",\n id: \"doer\",\n },\n {\n name: \"Driver\",\n id: \"driver\",\n },\n {\n name: \"Facilitator\",\n id: \"facilitator\",\n },\n {\n name: \"Investigator\",\n id: \"investigator\",\n },\n ];\n\n dashboard.aggregatedGraphData.forEach((item) => { // main bit for Average Work Styles Initial vs. Latest Assessments (%) and Average Initial Work Styles\n item._latest =\n Math.round(\n parseFloat(caseload.aggregated.latestAssessment[item.id]) * 100 + //Initial vs. Latest\n Number.EPSILON\n ) / 100;\n\n item._initial =\n Math.round(\n parseFloat(caseload.aggregated.initialAssessment[item.id]) * 100 + //Initial vs. Latest\n Number.EPSILON\n ) / 100;\n\n item._onlyInitial = //Average Initial Work Styles\n Math.round(\n parseFloat(caseload.aggregated.onlyInitialAssessment[item.id]) *\n 100 +\n Number.EPSILON\n ) / 100;\n\n if (\n caseload.aggregated.latestAssessment[item.id] &&\n caseload.aggregated.initialAssessment[item.id]\n ) {\n item._dt = // this bit for Average Work Style Distance Travelled (%)\n Math.round(\n ((caseload.aggregated.latestAssessment[item.id] /\n caseload.aggregated.initialAssessment[item.id]) *\n 100 -\n 100) *\n 100 +\n Number.EPSILON\n ) / 100;\n } else {\n item._dt = 0;\n }\n });\n if (\n caseload.aggregated.latestAssessment.count === 0 &&\n caseload.aggregated.initialAssessment.count === 0 &&\n caseload.aggregated.onlyInitialAssessment.count === 0\n ) {\n dashboard.aggregatedGraphData = [];\n }\n\n var sum = 0;\n\n dashboard.interestGraphData.forEach((item) => { // for Average Interests (%)\n sum += parseFloat(caseload.aggregated.interests[item.id]);\n });\n\n var nullInterests = false;\n dashboard.interestGraphData.forEach((item) => {\n var n =\n (parseFloat(caseload.aggregated.interests[item.id]) / sum) * 100;\n item.value = Math.round(n * 10 + Number.EPSILON) / 10;\n if (\n !_.isNumber(item.value) ||\n _.isNaN(item.value) ||\n _.isNull(item.value)\n ) {\n nullInterests = true;\n }\n });\n\n if (nullInterests) {\n dashboard.interestGraphData = [];\n }\n\n if (Object.keys(caseload.aggregated.locations).length) { // pretty simple for Top 15 Candidate Locations, where does this come from though??\n dashboard.locationGraph = [];\n for (let [key, value] of Object.entries(\n caseload.aggregated.locations\n )) {\n dashboard.locationGraph.push({\n name: key,\n value: value,\n });\n }\n dashboard.locationGraph = dashboard.locationGraph.sort(function (\n a,\n b\n ) {\n if (a.value > b.value) return 1;\n if (a.value < b.value) return -1;\n return 0;\n });\n dashboard.locationGraph = dashboard.locationGraph.slice(-15);\n } else {\n dashboard.locationGraph = [];\n }\n\n\n //jobs and quals here are simple counts, but where do they come from???\n\n //jobs\n dashboard.tierGraph = [];\n dashboard.occupationGraph = [];\n dashboard.jobsData = {};\n dashboard.occupationGraphAppliedJobs = [];\n dashboard.tierGraphAppliedJobs = [];\n dashboard.occupationGraphAppliedQuals = [];\n dashboard.tierGraphAppliedQuals = [];\n dashboard.occupationGraphSavedJobs = [];\n dashboard.tierGraphSavedJobs = [];\n dashboard.occupationGraphSavedQuals = [];\n dashboard.tierGraphSavedQuals = [];\n dashboard.engagementData = {};\n dashboard.previous_experience = false;\n dashboard.previous_experience_low = false;\n dashboard.previous_experience_high = false;\n dashboard.qualsData = {};\n dashboard.qualsOccupationGraph = [];\n dashboard.qualsTierGraph = [];\n //jobs\n if (Object.keys(caseload.aggregated.jobs).length) {\n const {\n jobsApplied = null,\n jobsViewed = null,\n jobsSaved = null,\n } = caseload.aggregated.jobs;\n\n dashboard.jobsData = {\n jobsApplied,\n jobsViewed,\n jobsSaved,\n };\n\n for (let [key, value] of Object.entries(caseload.aggregated.jobs)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.occupationGraph.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.tierGraph.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n }\n\n if (caseload.aggregated.jobs_applied && Object.keys(caseload.aggregated.jobs_applied).length) {\n \n caseload.aggregated.jobs_applied = _.omit(caseload.aggregated.jobs_applied, [\"occ_undefined\" ,\"tier_Other\"]);\n for (let [key, value] of Object.entries(caseload.aggregated.jobs_applied)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.occupationGraphAppliedJobs.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.tierGraphAppliedJobs.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n } else {\n dashboard.occupationGraphAppliedJobs = false;\n dashboard.tierGraphAppliedJobs = false;\n }\n\n if (caseload.aggregated.jobs_saved && Object.keys(caseload.aggregated.jobs_saved).length) {\n \n caseload.aggregated.jobs_saved = _.omit(caseload.aggregated.jobs_saved, [\"occ_undefined\" ,\"tier_Other\"]);\n for (let [key, value] of Object.entries(caseload.aggregated.jobs_saved)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.occupationGraphSavedJobs.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.tierGraphSavedJobs.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n } else {\n dashboard.tierGraphSavedJobs = false;\n dashboard.occupationGraphSavedJobs = false;\n }\n\n if (caseload.aggregated.quals_applied && Object.keys(caseload.aggregated.quals_applied).length) {\n \n caseload.aggregated.quals_applied = _.omit(caseload.aggregated.quals_applied, [\"occ_undefined\" ,\"tier_Other\"]);\n for (let [key, value] of Object.entries(caseload.aggregated.quals_applied)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.occupationGraphAppliedQuals.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.tierGraphAppliedQuals.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n } else {\n dashboard.tierGraphAppliedQuals = false;\n dashboard.occupationGraphAppliedQuals = false;\n }\n\n if (caseload.aggregated.quals_saved && Object.keys(caseload.aggregated.quals_saved).length) {\n \n caseload.aggregated.quals_saved = _.omit(caseload.aggregated.quals_saved, [\"occ_undefined\" ,\"tier_Other\"]);\n for (let [key, value] of Object.entries(caseload.aggregated.quals_saved)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.occupationGraphSavedQuals.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.tierGraphSavedQuals.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n } else {\n dashboard.tierGraphSavedQuals = false;\n dashboard.occupationGraphSavedQuals = false;\n }\n \n if (caseload.aggregated.previous_experience) {\n dashboard.previous_experience = caseload.aggregated.previous_experience;\n }\n\n if (caseload.aggregated.previous_experience_low) {\n dashboard.previous_experience_low = caseload.aggregated.previous_experience_low;\n }\n if (caseload.aggregated.previous_experience_high) {\n dashboard.previous_experience_high = caseload.aggregated.previous_experience_high;\n }\n\n //quals\n if (caseload.aggregated && caseload.aggregated.quals && Object.keys(caseload.aggregated.quals).length) {\n const {\n jobsApplied = null,\n jobsViewed = null,\n jobsSaved = null,\n } = caseload.aggregated.quals;\n\n dashboard.qualsData = {\n jobsApplied,\n jobsViewed,\n jobsSaved,\n };\n\n for (let [key, value] of Object.entries(caseload.aggregated.quals)) {\n if (key.startsWith(\"occ_\")) {\n dashboard.qualsOccupationGraph.push({\n name: key.split(\"occ_\")[1],\n value: value,\n });\n }\n if (key.startsWith(\"tier_\")) {\n dashboard.qualsTierGraph.push({\n name: key.split(\"tier_\")[1],\n value: value,\n });\n }\n }\n }\n\n\n dashboard.occupationGraph = dashboard.occupationGraph.sort(function (\n a,\n b\n ) {\n if (a.value > b.value) return 1;\n if (a.value < b.value) return -1;\n return 0;\n });\n\n dashboard.qualsOccupationGraph = dashboard.qualsOccupationGraph.sort(\n function (a, b) {\n if (a.value > b.value) return 1;\n if (a.value < b.value) return -1;\n return 0;\n }\n );\n\n if (Object.keys(caseload.aggregated.engagement).length) {\n const {\n numberOfSessions = null,\n totalMinutes = null,\n } = caseload.aggregated.engagement;\n\n dashboard.engagementData = {\n numberOfSessions,\n totalMinutes,\n };\n }\n }\n return {\n ...state,\n dashboard: dashboard,\n };\n}\n\n\nexport default function (state = {}, action) {\n switch (action.type) {\n case PORTAL_DETAILS: {\n //console.error(state);\n\n var selectedContract = null;\n\n if (state.selectedContract) {\n selectedContract = state.selectedContract;\n }\n\n var _orgcontracts = [];\n var _providers = [];\n\n var {\n portaldetails: { data = {}, orgdetails = {}, orgcontracts, providers },\n } = action;\n \n\n const { contracts } = data;\n if (data && orgcontracts) {\n let userdata = data;\n\n if (contracts && contracts.length && !selectedContract) {\n contracts.sort();\n var first = contracts[0];\n selectedContract = _.find(orgcontracts, {\n contractID: first,\n });\n }\n\n if (userdata.role === \"keyworker\") {\n //remove the contracts what i dont have\n _.each(contracts, (item) => {\n let x = _.find(orgcontracts, {\n contractID: item,\n });\n if (x) {\n _orgcontracts.push(x);\n }\n });\n } else {\n _orgcontracts = orgcontracts;\n _providers = providers;\n }\n }\n\n const returnProps = {\n ...state,\n user: data,\n orgcontracts: _orgcontracts,\n selectedContract: selectedContract,\n providers: _providers,\n orgdetails: orgdetails\n };\n\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case FETCH_INTERVENTIONS: {\n var only = [];\n action.interventions.forEach((item) => {\n if (item.type === 2) {\n only.push(item);\n }\n });\n\n const returnProps = {\n ...state,\n interventions: action.interventions,\n onlyInterventions: only,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case PORTAL_LIST_CONTRACTS: {\n return {\n ...state,\n contracts: action.contracts,\n };\n }\n\n case PORTAL_SELECT_CONTRACT: {\n const returnProps = {\n ...state,\n selectedContract: action.contract,\n missions: null,\n interventions: null,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case PORTAL_DESELECT_KEYWORKER: {\n return {\n ...state,\n currentKeyWorker: null,\n };\n }\n case PORTAL_SELECT_KEYWORKER: {\n return {\n ...state,\n currentKeyWorker: action.keyworker,\n };\n }\n case PORTAL_SELECT_KEYWORKERS: {\n return {\n ...state,\n currentKeyWorker: action.keyworker,\n };\n }\n case PORTAL_DESELECT_LINEMANAGER: {\n return {\n ...state,\n currentLineManager: null,\n };\n }\n case PORTAL_SELECT_LINEMANAGER: {\n return {\n ...state,\n currentLineManager: action.lineManager,\n };\n }\n case PORTAL_DESELECT_DEPARTMENT: {\n return {\n ...state,\n currentDepartment: null,\n };\n }\n case PORTAL_SELECT_DEPARTMENT: {\n return {\n ...state,\n currentDepartment: action.department,\n };\n }\n case PORTAL_SELECT_PROVIDER:{\n return {\n ...state,\n selectedProvider: action.provider,\n };\n }\n case FETCH_MISSIONS: {\n _.each(action.missions, (item) => {\n if (item.dimension === \"COMM\") {\n item.dimensionText = \"Commitment\";\n }\n if (item.dimension === \"RTF\") {\n item.dimensionText = \"Responsiveness\";\n }\n if (item.dimension === \"ADY\") {\n item.dimensionText = \"Adaptibility\";\n }\n if (item.dimension === \"SPC\") {\n item.dimensionText = \"Complexity\";\n }\n if (item.dimension === \"RLS\") {\n item.dimensionText = \"Learning\";\n }\n if (item.dimension === \"DMA\") {\n item.dimensionText = \"Speed\";\n }\n if (item.dimension === \"CONF\") {\n item.dimensionText = \"Confidence\";\n }\n if (item.dimension === \"CONT\") {\n item.dimensionText = \"Control\";\n }\n if (item.dimension === \"PSA\") {\n item.dimensionText = \"Accuracy\";\n }\n });\n\n const returnProps = {\n ...state,\n missions: _.sortBy(action.missions, [\"dimension\", \"id\"]),\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case PORTAL_CASELOAD: {\n const {\n payload: { contractId, keyworkerId, ...caseloadData },\n } = action;\n\n const { caseload = {} } = state;\n\n const existingCaseloads = caseload[keyworkerId] || {};\n const newCaseload = Object.assign({}, existingCaseloads, {\n [contractId]: caseloadData,\n });\n\n return {\n ...state,\n caseload: { ...caseload, [keyworkerId]: newCaseload },\n };\n }\n case PORTAL_CASELOAD_ENDDATE: {\n return {\n ...state,\n keyWorkerEndDateCaseload: action.payload,\n };\n }\n case PORTAL_ORGADMIN_CASELOAD: {\n const { caseload: orgadminCaseload = { dashboard: {} } } = action;\n\n const { caseload = {} } = state;\n\n return {\n ...state,\n caseload: { ...caseload, orgadminCaseload },\n };\n }\n case PORTAL_ORGADMIN_CASELOAD_ENDDATE: {\n const { caseload: orgadminCaseload = { dashboard: {} } } = action;\n\n const { caseload = {} } = state;\n\n return {\n ...state,\n endDateCaseload: { ...caseload, orgadminCaseload },\n };\n }\n\n case PORTAL_ORGADMIN_CASELOAD_GLOBAL: {\n const data = action.data;\n let dashboard = caseLoads(data);\n return {\n ...state,\n globalDashboard: dashboard.dashboard\n }\n }\n\n case PORTAL_LOCATION_LIST: {\n const data = action.data;\n return {\n ...state,\n locationList: data\n }\n }\n\n case PORTAL_SUPPLY_DATA : {\n const data = action.data;\n return {\n ...state,\n supplyData: data\n }\n };\n\n case PORTAL_SUPPLY_LOW : {\n const data = action.data;\n return {\n ...state,\n supplyDataLowLevel: data\n }\n };\n case PORTAL_ADZUNA_CATEGORY : {\n const data = action.data;\n let newCategory = {}\n data.forEach((item) => {\n newCategory[item.label] = item.tag\n })\n return {\n ...state,\n adzunaCategory: newCategory,\n // cityList: data.cityList\n }\n }\n case PORTAL_ADZUNA_REGION_DATA : {\n const data = action.data;\n return {\n ...state,\n adzunaRegional: data\n }\n };\n case PORTAL_ADZUNA_HISTOGRAM_CATEGORY : {\n const data = action.data;\n return {\n ...state,\n adzunaHistogram: data\n }\n };\n case PORTAL_ADZUNA_HISTORICAL_CATEGORY : {\n const data = action.data;\n return {\n ...state,\n adzunaHistorical: data\n }\n };\n\n case PORTAL_DASHBOARD_CASELOAD: {\n const { caseload } = action;\n //caseload is an obj not array wtf?\n if (_.isArray(caseload)){\n let dashboards = [];\n\n let combinedObject = {caseload: {}};\n if (caseload.length > 1){\n _.each(caseload, (index) =>{\n let {dashboard} = caseLoads(index.data, state);\n dashboards.push(dashboard);\n // since all propertys can either be a sum total or a sum average we need to manually merge each property\n let caseLoad = {caseload: dashboard.caseload};\n let aggregatedGraphData = {aggregatedGraphData: dashboard.aggregatedGraphData};\n let engagementData = {engagementData: dashboard.engagementData};\n let locationGraph = {locationGraph: dashboard.locationGraph};\n let interestGraphData = {interestGraphData: dashboard.interestGraphData};\n let occupationGraph = {occupationGraph: dashboard.occupationGraph};\n let qualsTierGraph = {qualsTierGraph: dashboard.qualsTierGraph};\n let tierGraph = { tierGraph: dashboard.tierGraph};\n let qualsData = {qualsData: dashboard.qualsData};\n let jobsData = {jobsData: dashboard.jobsData};\n let qualsOccupationGraph = {qualsOccupationGraph: dashboard.qualsOccupationGraph};\n\n combinedObject = mergeObjectsWithSum(combinedObject, caseLoad);\n combinedObject = mergeObjectsWithDivision(combinedObject, aggregatedGraphData);\n combinedObject = mergeObjectsWithSum(combinedObject, engagementData);\n combinedObject = mergeObjectsWithSum(combinedObject, locationGraph);\n combinedObject = mergeObjectsWithDivision(combinedObject, interestGraphData);\n combinedObject = mergeObjectsWithSum(combinedObject, occupationGraph);\n combinedObject = mergeObjectsWithSum(combinedObject, qualsTierGraph);\n combinedObject = mergeObjectsWithSum(combinedObject, tierGraph);\n combinedObject = mergeObjectsWithSum(combinedObject, qualsData);\n combinedObject = mergeObjectsWithSum(combinedObject, jobsData);\n combinedObject = mergeObjectsWithSum(combinedObject, qualsOccupationGraph);\n })\n } else { \n _.each(caseload, (index) =>{\n \n let {dashboard} = caseLoads(index.data, state);\n combinedObject = dashboard;\n });\n }\n return {\n ...state,\n dashboard: combinedObject,\n };\n \n } else {\n let {dashboard} = caseLoads(caseload, state);\n return {\n ...state,\n dashboard: dashboard,\n };\n }\n\n \n }\n\n case EMPTY_CANDIDATES_SELECTION: {\n return {\n ...state,\n selectedContract: null,\n currentKeyWorker: null,\n };\n }\n\n case SET_RECENTLY_VIEWED: {\n let d = action.data;\n if (d && d.Item && d.Item.users) {\n d = d.Item.users;\n } else {\n d = [];\n }\n return {\n ...state,\n recentlyViewedUsers: d\n }\n }\n\n case UPDATE_BULK_UPLOAD_PROGRESS:{\n return {\n ...state,\n bulkUploadProgressText: action.data\n }\n }\n\n case SET_BULK_EMAIL_TEMPLATE:{\n return {\n ...state,\n defaultBulkTemplate: action.data\n }\n }\n case SET_ROLES:{\n return {\n ...state,\n internalRoles: action.data ? action.data : [],\n unverifiedRoles: action.unverifiedRoles ? action.unverifiedRoles : [],\n unverifiedRolesLength: action.unverifiedRoles ? action.unverifiedRoles.length : 0\n }\n }\n case SET_DEPARTMENTS:{\n return {\n ...state,\n internalDepartments: action.data ? action.data : [],\n unverifiedDepartments: action.unverifiedDepartments ? action.unverifiedDepartments : [],\n unverifiedDepartmentsLength: action.unverifiedDepartments ? action.unverifiedDepartments.length : 0\n }\n }\n case SET_LOCATIONS:{\n return {\n ...state,\n internalLocations: action.data ? action.data : [],\n unverifiedLocations: action.unverifiedLocations ? action.unverifiedLocations : [],\n unverifiedLocationsLength: action.unverifiedLocations ? action.unverifiedLocations.length : 0\n }\n }\n case SET_LINEMANAGERS:{\n return {\n ...state,\n internalLineManagers: action.data ? action.data : [],\n unverifiedLineManagers: action.unverifiedLineManagers ? action.unverifiedLineManagers : [],\n unverifiedLineManagersLength: action.unverifiedLineManagers ? action.unverifiedLineManagers.length : 0\n }\n }\n case SET_UNVERIFIED:{\n return {\n ...state,\n unverifiedRolesLength: action.data.unverifiedRolesLength ? action.data.unverifiedRolesLength : 0,\n unverifiedDepartmentsLength: action.data.unverifiedDepartmentsLength ? action.data.unverifiedDepartmentsLength : 0,\n unverifiedLineManagersLength: action.data.unverifiedLineManagersLength ? action.data.unverifiedLineManagersLength : 0\n }\n }\n case SET_DEMOGRAPHICS:{\n return {\n ...state,\n demographicsQuestions: action.data ? action.data : []\n }\n }\n case SET_HELP_VIDEOS:{\n return {\n ...state, \n authenticatedVideos: action.data\n }\n }\n default:\n return state;\n }\n}\n","import {\n OPEN_KEYWORKER_DIALOG,\n CLOSE_KEYWORKER_DIALOG,\n ADD_KEYWORKER_CONTRACT,\n FETCH_PORTAL_USERS,\n CUSTOMER_CHECK\n} from \"../actions/types\";\n\nimport { Logger } from \"aws-amplify\";\nconst logger = new Logger(\"PORTAL USERS.REDUCER\", \"DEBUG\");\n\nexport default function(state = {}, action) {\n switch (action.type) {\n case OPEN_KEYWORKER_DIALOG: {\n const returnProps = {\n ...state,\n keyworkerData: action.keyworker,\n open: true,\n loading: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case CLOSE_KEYWORKER_DIALOG: {\n const returnProps = {\n ...state,\n keyworkerData: {},\n open: false,\n loading: false\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case ADD_KEYWORKER_CONTRACT: {\n const returnProps = {\n ...state,\n loading: true\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case FETCH_PORTAL_USERS: {\n const keyworkers = action.data.keyworkers.Users.sort((a, b) => {\n const firstKeyWorkerLastname = a.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n const secondKeyWorkerLastname = b.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n return firstKeyWorkerLastname.localeCompare(secondKeyWorkerLastname);\n }).map(item => {\n const itemName = item.Attributes.find(({ Name }) => Name === \"name\")\n .Value;\n return { ...item, name: itemName };\n });\n\n const orgadmins = action.data.orgadmins.Users.sort((a, b) => {\n const firstKeyWorkerLastname = a.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n const secondKeyWorkerLastname = b.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n return firstKeyWorkerLastname.localeCompare(secondKeyWorkerLastname);\n }).map(item => {\n const itemName = item.Attributes.find(({ Name }) => Name === \"name\")\n .Value;\n return { ...item, name: itemName };\n });\n\n const partners = action.data.partners.Users.sort((a, b) => {\n const firstKeyWorkerLastname = a.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n const secondKeyWorkerLastname = b.Attributes.find(\n ({ Name }) => Name === \"family_name\"\n ).Value;\n return firstKeyWorkerLastname.localeCompare(secondKeyWorkerLastname);\n }).map(item => {\n const itemName = item.Attributes.find(({ Name }) => Name === \"name\")\n .Value;\n return { ...item, name: itemName };\n });\n\n //do partners and orgadmins too\n\n return {\n ...state,\n keyworkers: keyworkers,\n orgadmins: orgadmins,\n partners: partners,\n allProviders: action.data.providers,\n allContracts: action.data.contracts\n };\n }\n case CUSTOMER_CHECK:{\n return {\n ...state,\n isCustomer: true\n }\n }\n default:\n return state;\n }\n}\n","import { Logger } from \"aws-amplify\";\nimport moment from \"moment\";\nimport { SET_VACANCY_BY_ID, ADD_VACANCY, EDIT_VACANCY, FETCH_VACANCIES, FETCH_VACANCIES_CANDIDATES, FIND_VACANCIES_STATUSES, SET_CANDIDATE_DETAILS, UPDATE_CANDIDATE_INFO, ADD_SEARCH, FETCH_SEARCHES, REMOVE_SEARCH, EDIT_SEARCH, FETCH_SEARCH_CANDIDATES, FETCH_SEARCH_SHORTLIST, UPDATE_SEARCH_SHORTLIST, FILTER_SEARCH_CANDIDATES, FETCH_BOT_TEMPLATE, ADD_TEMPLATE, EDIT_TEMPLATE, REMOVE_TEMPLATE, UPDATE_VIEWED_CANDIDATES, FETCH_HIDDEN_TALENT, REMOVE_VACANCY, UPDATE_SNACKBAR, FETCH_VACANCIES_CANDIDATES_MONSTER, REMOVE_VACANCIES_CANDIDATES, GET_VIEW_PREFS} from \"../actions/types\";\nimport _ from \"lodash\";\nconst logger = new Logger(\"PORTAL DETAILS.REDUCER\", \"DEBUG\");\n\n//for search score stacked progress bars\nconst occColour = \"#ff6505\"\nconst skillColours =[\"#53D28E\",\"#ffc107\",\"#537dd2\"]\n\nfunction toTitleCase(str) {\n return str.replace(\n /\\w\\S*/g,\n function(txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n }\n );\n}\n\nexport default function(state = {}, action) {\n switch (action.type) {\n case FETCH_VACANCIES: {\n const returnProps = {\n ...state,\n vacancies: action.data\n .map(vacancy => ({\n ...vacancy,\n salary_min: vacancy.hourly_salary_min || vacancy.annual_salary_min,\n salary_max: vacancy.hourly_salary_max || vacancy.annual_salary_max,\n salary_config: vacancy.hasOwnProperty(\"hourly_salary_min\")\n ? \"hourly\"\n : \"annually\",\n status: vacancy.status || \"open\"\n }))\n .sort((a, b) => moment(b.updatedAt) - moment(a.updatedAt))\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case ADD_VACANCY: {\n const returnProps = {\n ...state,\n vacancies: state.vacancies.concat(action.data)\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case REMOVE_VACANCY: {\n const returnProps = {\n ...state,\n vacancies: state.vacancies.filter((item) => item.sort !== action.data.sort)\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n \n\n case EDIT_VACANCY: {\n const { sort: vacancy_id } = action.data;\n\n const returnProps = {\n ...state,\n vacancies: state.vacancies.map(vacancy => {\n if (vacancy.sort === vacancy_id) {\n return action.data;\n }\n return vacancy;\n })\n };\n\n return returnProps;\n }\n\n case FIND_VACANCIES_STATUSES: {\n let newProfileUrls = state.profileUrls || {}\n newProfileUrls = {...newProfileUrls, ...action.profileUrls}\n\n let candidatesStatuses = action.shortList ? action.shortList.map(user => {\n return {\n name: user.firstName + \" \" + user.lastName,\n initals: user.initals.replace(\" \", \"\"),\n userID: user.searchCandidate ? user.sort : user.id,\n firstName: user.firstName,\n lastName: user.lastName,\n email: user.email,\n phoneNumber: user.telephone,\n invited: user.invited || false,\n hired: user.hired || false,\n removed: user.removed || false,\n favourited: user.favourited || false,\n applied: user.applied || false,\n isUnlocked: user.isUnlocked || false,\n data: user.data || false,\n script_status: user.script_status || false,\n script_results: user.script_results || false,\n contactedAt: user.contactedAt || false,\n profileUrl: newProfileUrls[user.searchCandidate ? user.sort : user.id]\n\n }\n }) : [];\n let candidatesToRemove = action.removedUsers ? action.removedUsers : []\n\n if (candidatesToRemove && candidatesToRemove.length > 0){\n candidatesStatuses = candidatesStatuses.filter(user => !candidatesToRemove.includes(user.userID))\n }\n\n return {\n ...state,\n candidatesStatus: candidatesStatuses,\n globalUnlocked: action.globalUnlocked ? action.globalUnlocked : [], //reset it every time it runs to catch updates\n profileUrls: newProfileUrls\n }\n }\n case FETCH_VACANCIES_CANDIDATES: {\n if(!action.data){\n return {\n ...state,\n vacancyCandidates: [],\n allOccs: [],\n allSkills: []\n }\n }\n let organisation = action.organisation;\n let newVacancyCandidates = action.data;\n let candidatesToRemove = action.removedUsers ? action.removedUsers : []\n let jobID = action.jobID\n let newVacancies = state.vacancies;\n let candidatesStatus = state.candidatesStatus;\n let current_vac = newVacancies.find(item => jobID === item.job_id || jobID === item.sort)\n let allOccs = []\n let allSkills = []\n let newProfileUrls = state.profileUrls || {}\n newProfileUrls = {...newProfileUrls, ...action.profileUrls}\n \n if (newVacancyCandidates){\n newVacancyCandidates = newVacancyCandidates.map(user => {\n try{\n let lastAccessedMoment = undefined\n let lastAccessedDays = \"Unknown\"\n if(user.free_resume){ \n const salInt = 0\n if (user.identity && user.identity.resumeModifiedDate){\n lastAccessedMoment = moment(user.identity.resumeModifiedDate);\n lastAccessedDays = Math.round((moment().startOf('day') - lastAccessedMoment) / 86400000);\n }\n let occName = \"No occupations listed\"\n if(user.relevance && user.relevance.experience && user.relevance.experience.title && (user.relevance.experience.title.matched || user.relevance.experience.title.name)){\n occName = user.relevance.experience.title.matched ? user.relevance.experience.title.matched : user.relevance.experience.title.name\n }\n allOccs.push(\"Free Candidate\")\n const getPhonenumber = () => {\n let numObj\n if (user.phoneNumbers){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Primary\")\n if (!numObj){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Secondary\")\n }\n }\n return numObj && numObj.phoneNumberValue ? numObj.phoneNumberValue : \"No phone number provided\"\n }\n const skillsMatched = user.relevance.skills ? user.relevance.skills.map((skill) => skill.name) : [];\n allSkills.push(...skillsMatched)\n let titleName = toTitleCase(user.identity.name);\n let splitName = titleName.split(\" \", 2); \n return {\n userID: user.identity.id,\n free_resume: true,\n sort: user.identity.md5EmailAddress, \n name: titleName,\n email: user.identity.emailAddress,\n phoneNumber: getPhonenumber(),\n firstName: splitName[0],\n lastName: splitName[1],\n score: 0,\n location: user.location.city,\n range: user.location.distance,\n distance: user.location.distance,\n salary: \"Unknown\",\n salaryAsInt: isNaN(salInt) ? 0 : salInt,\n lastAccessed: lastAccessedMoment ? lastAccessedMoment.format('DD-MM-YYYY'): \"Unknown\", //Is better?\n lastAccessedDays: lastAccessedDays,\n qualification: user.degree ? user.degree : \"No qualification mentioned\", //TODO\n qualificationLevel: 1, //TODO mapping\n rightToWork: user.location.workAuthorizations && user.location.workAuthorizations.find((item) => [\"UK\", \"United Kingdom\", \"uk\"].includes(item.country) && item.authorization) ? \"Yes\" : \"Unknown\",\n willRelocate: user.location.willRelocate == null ? \"Unknown\" : user.location.willRelocate ? \"Yes\" : \"No\",\n yearsOfExperience: user.yearsOfExperience ? user.yearsOfExperience : \"Unknown\",\n occupationMatched: occName,\n skillsMatched: skillsMatched,\n relevanceObject: user.relevance,\n locationObject: user.location,\n additionalReqMatch: false,\n requiredSkillMatch : false,\n rawUser: user,\n viewed: false,\n viewedCount: 0,\n unlockedCount: 0,\n chartList: [],\n queryKey: \"Free Candidate\",\n travel_distance_flag: \"Unknown\",\n contract: \"Unknown\",\n status: \"Unknown\",\n jobTypes: [],\n skills: 0, \n styles: 0,\n interests: 0,\n lookingForWork: \"Looking for work\",\n isUnlocked: true,\n talentType: \"Community CV's\"\n }\n }\n if (user.lastAccessedAt){\n lastAccessedMoment = moment(user.lastAccessedAt);\n lastAccessedDays = Math.round((moment().startOf('day') - lastAccessedMoment) / 86400000);\n }\n let salInt = parseInt(user.latestAssessmentResult.interests.salary[0].substring(1).split(\",\").join(\"\"))\n if (user.latestAssessmentResult.interests.salary[0].includes(\"hour\")){\n salInt = salInt * 2080\n }\n let missing_skills = []\n missing_skills = current_vac.skills_required.filter(x => !user.score_bp_skills_matched.includes(x.toLowerCase()));\n let status = \"Unknown\"\n if (user.candidate_status_history && user.candidate_status_history.length > 0){\n const setStatus = user.candidate_status_history[user.candidate_status_history.length - 1].status\n if (setStatus !== \"Not entered\"){\n status = setStatus\n }\n }\n let talentType = \"Skillsminer Profiles\"\n if(user.internalMobilityProvider){\n talentType = \"Employee Profiles\"\n }\n else if(user.provider === organisation){\n talentType = \"Community Profiles\"\n }\n\n let occupationList = []\n user.desiredOccupations.forEach((value, index) => {\n if(value){\n occupationList.push(user.desiredOccupations[index])\n }\n })\n if(user.occupations && user.occupations.length > 0){\n occupationList.push(...user.occupations)\n }\n allOccs.push(...occupationList)\n allSkills.push(...user.user_all_skills)\n return {\n name: user.fullName,\n skills: user.score_bp,\n styles: user.score_styles,\n interests: user.score_interest,\n location: user.latestAssessmentResult.interests.locationOriginal[0],\n contract: user.latestAssessmentResult.interests.contract[0],\n jobTypes: user.latestAssessmentResult.interests.jobTypes ? user.latestAssessmentResult.interests.jobTypes : [],\n radius: user.latestAssessmentResult.interests.locationRadius[0],\n salary: user.latestAssessmentResult.interests.salary[0],\n salaryAsInt: isNaN(salInt) ? 0 : salInt,\n occupations: user.desiredOccupations,\n occupationExtended: user.desiredOccupationsExtended[0],\n previousOccupations: user.occupations,\n previousOccupationsExtended: user.occupationsExtended,\n desiredExp: user.desiredExp,\n qualifications: user.qualifications ? user.qualifications :[],\n userID: user.userID,\n email: user.email,\n phoneNumber: user.phoneNumber,\n similar_skills: user.score_bp_skills_matched,\n missing_skills: missing_skills,\n skills_list: user.user_all_skills,\n travel_distance_flag: user.travel_distance_flag ? \"Yes\" : \"No\",\n distance: user.distance,\n status: status,\n lookingForWork: user.allow_reverse_mine === undefined ? \"Looking for work\" : user.allow_reverse_mine ? \"Looking for work\" : \"Not looking for work\", \n rightToWork: user.rightTooWork ? ((user.rightTooWork === \"Yes\" || user.rightTooWork === \"No\") ? user.rightTooWork : \"Unknown\") : \"Unknown\",\n lastAccessed: lastAccessedMoment ? lastAccessedMoment.format('DD-MM-YYYY'): \"Unknown\",\n lastAccessedDays: lastAccessedDays,\n organisation: user.provider,\n internalMobilityProvider: user.internalMobilityProvider,\n talentType: talentType,\n occupationList: occupationList,\n profileUrl: newProfileUrls[user.userID]\n }\n } catch (e) {\n // console.log(e)\n return false\n }\n }).filter(Boolean);\n }\n else{\n newVacancyCandidates = []\n }\n let shortlistedCans = candidatesStatus.map((item) => item.data).filter(Boolean);\n newVacancyCandidates = _.uniqBy([...shortlistedCans, ...newVacancyCandidates], 'userID');\n\n if (candidatesToRemove && candidatesToRemove.length > 0){\n newVacancyCandidates = newVacancyCandidates.filter((user) => !candidatesToRemove.includes(user.identity ? user.identity.id : user.userID));\n }\n\n newVacancies = newVacancies.map(item => {\n if(jobID === item.job_id){\n item.hasRemovedCandidates = candidatesToRemove.length > 0 ? true : false;\n }\n return item\n })\n\n const returnProps = {\n ...state,\n vacancyCandidates: newVacancyCandidates,\n vacancies: newVacancies,\n allOccs: [...new Set(allOccs)],\n allSkills: [...new Set(allSkills)],\n profileUrls: newProfileUrls\n }\n return returnProps;\n }\n case FETCH_VACANCIES_CANDIDATES_MONSTER:{\n let organisation = action.organisation;\n let newSearchCandidates = state.vacancyCandidates;\n let candidatesToRemove = action.removedUsers ? action.removedUsers : []\n let globalUnlocked = state.globalUnlocked;\n let jobID = action.jobID\n let newVacancies = state.vacancies;\n let current_vac = newVacancies.find(item => jobID === item.job_id)\n let allOccs = state.allOccs ? state.allOccs : []\n let allSkills = state.allSkills ? state.allSkills : []\n \n for (const [key, value] of Object.entries(action.data)) {\n if(key !== \"occupations_skills\" && key !== \"order_dict\"){\n newSearchCandidates = newSearchCandidates.concat(value.map(user => {\n const unlockedVersion = globalUnlocked.find((item) => item.sort === user.identity.textResumeID)\n const salInt = 0\n let lastAccessedMoment = undefined\n let lastAccessedDays = \"Unknown\"\n if (user.identity && user.identity.resumeModifiedDate){\n lastAccessedMoment = moment(user.identity.resumeModifiedDate);\n lastAccessedDays = Math.round((moment().startOf('day') - lastAccessedMoment) / 86400000);\n }\n let occName = \"No occupations listed\"\n let hasOccMatch = false\n if(user.relevance && user.relevance.experience && user.relevance.experience.title && (user.relevance.experience.title.matched || user.relevance.experience.title.name)){\n if(user.relevance.experience.title.matched){\n occName = user.relevance.experience.title.matched\n hasOccMatch = true\n }\n else{\n occName = user.relevance.experience.title.name\n }\n }\n const getPhonenumber = () => {\n let numObj\n if (user.phoneNumbers){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Primary\")\n if (!numObj){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Secondary\")\n }\n }\n return numObj && numObj.phoneNumberValue ? numObj.phoneNumberValue : \"No phone number provided\"\n }\n let titleName = unlockedVersion ? unlockedVersion.data.name: toTitleCase(user.identity.name);\n let splitName = titleName.split(\" \", 2); \n let occScore = Math.round(user.relevance.score * 10) || 0;\n let userSkills = user.relevance.skills ? user.relevance.skills.map((skill) => skill.matched === \"\" ? false : skill.name).filter(Boolean) : []\n let matchesLen = hasOccMatch ? userSkills.length + 1 : userSkills.length\n let chartList = [hasOccMatch ? {colour: occColour, value: Math.round((user.relevance.score * 10) / matchesLen) || 0, key: occName.charAt(0).toUpperCase() + occName.slice(1)} : false]\n chartList = [...chartList, ...userSkills.map((key, index) => {\n return {colour: skillColours[index], value: Math.round((user.relevance.score * 10) / matchesLen) || 0, key: key}\n })]\n\n const calculatedScore = _.sum(chartList.map((item) => item.value)) || 0\n let queryKey = key;\n if(user.free_resume){\n queryKey = \"Free Candidate\" \n }\n else if(key === \"skills_based_search\"){\n if(occName === \"No occupations listed\"){\n queryKey = \"Skills Candidate\" \n }\n else{\n queryKey = occName\n }\n }\n else if(key === \"monster_local_candidates\"){\n queryKey = \"Local Candidiate\"\n }\n \n const skillsMatched = user.relevance.skills ? user.relevance.skills.map((skill) => skill.name) : [];\n allOccs.push(queryKey)\n allSkills.push(...skillsMatched)\n return {\n userID: user.identity.textResumeID, \n name: titleName,\n email: unlockedVersion ? unlockedVersion.email : user.identity.emailAddress,\n phoneNumber: unlockedVersion ? unlockedVersion.telephone : getPhonenumber(),\n firstName: splitName[0],\n lastName: splitName[1],\n score: calculatedScore,\n location: user.location.city,\n range: user.location.distance,\n distance: user.location.distance,\n salary: \"Unknown\",\n salaryAsInt: isNaN(salInt) ? 0 : salInt,\n lastAccessed: lastAccessedMoment ? lastAccessedMoment.format('DD-MM-YYYY'): \"Unknown\", //Is better?\n lastAccessedDays: lastAccessedDays,\n qualification: user.degree ? user.degree : \"No qualification mentioned\", //TODO\n qualificationLevel: 1, //TODO mapping\n rightToWork: user.location.workAuthorizations && user.location.workAuthorizations.find((item) => [\"UK\", \"United Kingdom\", \"uk\"].includes(item.country) && item.authorization) ? \"Yes\" : \"Unknown\",\n willRelocate: user.location.willRelocate == null ? \"Unknown\" : user.location.willRelocate ? \"Yes\" : \"No\",\n yearsOfExperience: user.yearsOfExperience ? user.yearsOfExperience : \"Unknown\",\n occupationMatched: occName,\n skillsMatched: skillsMatched,\n relevanceObject: user.relevance,\n locationObject: user.location,\n additionalReqMatch: false,\n requiredSkillMatch : false,\n rawUser: user,\n viewed: false,\n viewedCount: 0,\n unlockedCount: 0,\n chartList: [],\n queryKey: queryKey,\n travel_distance_flag: \"Unknown\",\n contract: \"Unknown\",\n status: \"Unknown\",\n jobTypes: [],\n skills: occScore, \n styles: 0,\n interests: 0,\n lookingForWork: \"Looking for work\",\n free_resume: user.free_resume ? true : false,\n isUnlocked: user.free_resume || unlockedVersion ? true : false,\n talentType: user.free_resume ? \"Community CV's\" : \"Premium External Profiles\",\n chartList: chartList,\n }\n }))\n }\n }\n newVacancies = newVacancies.map(item => {\n if(jobID === item.job_id){\n item.hasRemovedCandidates = candidatesToRemove.length > 0 ? true : false;\n }\n return item\n })\n \n newSearchCandidates = _.uniqBy(newSearchCandidates, 'userID');\n\n const returnProps = {\n ...state,\n vacancyCandidates: newSearchCandidates,\n vacancies: newVacancies,\n allOccs: [...new Set(allOccs)],\n allSkills: [...new Set(allSkills)]\n }\n return returnProps;\n }\n case REMOVE_VACANCIES_CANDIDATES:{\n let updatedList = []\n if (action.isPotential){\n updatedList = state.candidatesStatus\n }\n else{\n updatedList = state.vacancyCandidates\n }\n\n updatedList = updatedList.filter((item) => !action.candidatesToRemove.includes(item.userID));\n\n let returnProps = {}\n if (action.isPotential){\n returnProps = {\n ...state,\n candidatesStatus: updatedList}\n }\n else{\n returnProps = {\n ...state,\n vacancyCandidates: updatedList}\n }\n return returnProps;\n }\n case SET_CANDIDATE_DETAILS: {\n const isPotential = action.isPotential\n const selectedCandidate = action.data;\n const selectedVacancy = action.selectedVacancy;\n let globalUnlocked = state.globalUnlocked;\n\n let updatedList = []\n if (isPotential){\n updatedList = state.candidatesStatus\n }\n else{\n updatedList = state.vacancyCandidates\n }\n\n updatedList = updatedList.map(user => {\n if (user.userID === selectedCandidate.userID){\n let userStatus = state.candidatesStatus.find(element => element.userID === user.userID) || {}\n if(selectedCandidate.free_resume){\n return {\n ...user,\n ...selectedCandidate,\n invited: userStatus.invited || false,\n hired: userStatus.hired || false,\n removed: userStatus.removed || false,\n favourited: userStatus.favourited || false,\n isUnlocked: true,\n script_status: user.script_status || false,\n script_results: user.script_results || false,\n contactedAt: user.contactedAt || false,\n }\n }\n if(selectedCandidate.talentType === \"Premium External Profiles\"){\n let userStatus = state.candidatesStatus.find(element => element.userID === user.userID) || {}\n const unlockedVersion = globalUnlocked.find((item) => item.sort === user.userID)\n let cand = {\n ...user,\n ...userStatus.data,\n invited: userStatus.invited || false,\n hired: userStatus.hired || false,\n removed: userStatus.removed || false,\n favourited: userStatus.favourited || false,\n isUnlocked: userStatus.isUnlocked || false,\n script_status: userStatus.script_status || false,\n script_results: userStatus.script_results || false,\n contactedAt: userStatus.contactedAt || false\n }\n if(unlockedVersion){\n cand = {\n ...cand,\n name: unlockedVersion.data.name,\n email: unlockedVersion.email,\n phoneNumber: unlockedVersion.telephone,\n isUnlocked: true\n }\n }\n return cand\n // }\n }\n let initials = selectedCandidate.firstName.charAt(0).toUpperCase() + selectedCandidate.lastName.charAt(0).toUpperCase()\n let candidateInterestsData=[]\n let sum = 0;\n \n Object.keys(selectedCandidate.latestAssessmentResult.interests.interestsOriginal).forEach(function(key) {\n sum += selectedCandidate.latestAssessmentResult.interests.interestsOriginal[key];\n });\n \n Object.keys(selectedCandidate.latestAssessmentResult.interests.interestsOriginal).forEach(function(key) {\n let upperType = key.charAt(0).toUpperCase() + key.slice(1);\n candidateInterestsData.push({\n id: upperType,\n label: upperType,\n value: parseFloat(((selectedCandidate.latestAssessmentResult.interests.interestsOriginal[key] / sum) * 100).toFixed(2))\n })\n });\n let similar_skills = []\n let missing_skills = []\n let other_skills = []\n selectedCandidate.occupationSkills.forEach((occSkill) => {\n occSkill.skills.forEach((individual_skill) => {\n if (selectedVacancy.skills_required.includes(individual_skill.name)){\n similar_skills.push(individual_skill.name)\n }\n else{\n other_skills.push(individual_skill.name)\n }\n })\n })\n similar_skills = [...new Set(similar_skills)]\n missing_skills = selectedVacancy.skills_required.filter(x => !similar_skills.includes(x));\n other_skills = [...new Set(other_skills)]\n\n let status = \"Unknown\"\n if(selectedCandidate.candidate_status_history && selectedCandidate.candidate_status_history.length > 0){\n const setStatus = selectedCandidate.candidate_status_history[selectedCandidate.candidate_status_history.length -1].status\n if(setStatus !== \"Not entered\"){\n status = setStatus\n }\n }\n \n\n if (isPotential){\n let skills_score = 0\n skills_score = parseInt((similar_skills.length / selectedVacancy.skills_required.length) * 100)\n return {\n ...user,\n initials: initials,\n // name: selectedCandidate.fullName,\n skills: skills_score,\n styles: 0,\n interests: 0,\n location: selectedCandidate.latestAssessmentResult.interests.locationOriginal[0],\n radius: selectedCandidate.latestAssessmentResult.interests.locationRadius[0],\n contract: selectedCandidate.latestAssessmentResult.interests.contract[0],\n salary: selectedCandidate.latestAssessmentResult.interests.salary[0],\n occupations:selectedCandidate.desiredOccupations,\n desiredExp: selectedCandidate.desiredExp,\n previousOccupations :selectedCandidate.occupations,\n occupationSkills : selectedCandidate.occupationSkills,\n qualifications: selectedCandidate.qualifications ? selectedCandidate.qualifications :[],\n similar_skills: similar_skills,\n missing_skills: missing_skills,\n other_skills: other_skills,\n candidateInterestsData : candidateInterestsData,\n candidateStylesData : selectedCandidate.latestAssessmentResult.results,\n key_worker_name: selectedCandidate.key_worker_name,\n status: status,\n lookingForWork: selectedCandidate.allow_reverse_mine === undefined ? \"Looking for work\" : selectedCandidate.allow_reverse_mine ? \"Looking for work\" : \"Not looking for work\", \n rightToWork: selectedCandidate.rightTooWork ? ((selectedCandidate.rightTooWork === \"Yes\" || selectedCandidate.rightTooWork === \"No\") ? selectedCandidate.rightTooWork : \"Unknown\") : \"Unknown\",\n lastAccessed: selectedCandidate.lastAccessedAt ? moment(selectedCandidate.lastAccessedAt).format(\"DD/MM/YYYY\") : \"Unknown\",\n organisation: selectedCandidate.provider,\n internalMobilityResponses: user.internalMobilityProvider ? selectedCandidate.internalMobilityResponses : false, \n }\n }\n else{\n let userStatus = state.candidatesStatus.find(element => element.userID === user.userID) || {}\n return {\n ...user,\n initials: initials,\n location: selectedCandidate.latestAssessmentResult.interests.locationOriginal[0],\n radius: selectedCandidate.latestAssessmentResult.interests.locationRadius[0],\n contract: selectedCandidate.latestAssessmentResult.interests.contract[0],\n salary: selectedCandidate.latestAssessmentResult.interests.salary[0],\n occupations:selectedCandidate.desiredOccupations,\n desiredExp: selectedCandidate.desiredExp,\n previousOccupations :selectedCandidate.occupations,\n occupationSkills : selectedCandidate.occupationSkills,\n qualifications: selectedCandidate.qualifications ? selectedCandidate.qualifications :[],\n similar_skills: similar_skills,\n missing_skills: missing_skills,\n other_skills: other_skills,\n candidateInterestsData : candidateInterestsData,\n candidateStylesData : selectedCandidate.latestAssessmentResult.results,\n invited: userStatus.invited || false,\n hired: userStatus.hired || false,\n removed: userStatus.removed || false,\n favourited: userStatus.favourited || false,\n script_status: userStatus.script_status || false,\n script_results: userStatus.script_results || false,\n contactedAt: userStatus.contactedAt || false,\n status: status,\n key_worker_name: selectedCandidate.key_worker_name,\n lookingForWork: selectedCandidate.allow_reverse_mine === undefined ? \"Looking for work\" : selectedCandidate.allow_reverse_mine ? \"Looking for work\" : \"Not looking for work\", \n rightToWork: selectedCandidate.rightTooWork ? ((selectedCandidate.rightTooWork === \"Yes\" || selectedCandidate.rightTooWork === \"No\") ? selectedCandidate.rightTooWork : \"Unknown\") : \"Unknown\",\n lastAccessed: selectedCandidate.lastAccessedAt ? moment(selectedCandidate.lastAccessedAt).format(\"DD/MM/YYYY\") : \"Unknown\",\n organisation: selectedCandidate.provider,\n internalMobilityResponses: user.internalMobilityProvider ? selectedCandidate.internalMobilityResponses : false, \n }\n }\n }\n else{\n return {...user}\n }\n })\n let returnProps = {}\n if (isPotential){\n returnProps = {\n ...state,\n candidatesStatus: updatedList}\n }\n else{\n returnProps = {\n ...state,\n vacancyCandidates: updatedList}\n }\n return returnProps;\n }\n case UPDATE_CANDIDATE_INFO: {\n const body = action.data;\n const status = action.status\n\n let newVacancyCandidates = state.vacancyCandidates\n newVacancyCandidates = newVacancyCandidates.map(user => {\n if (body.userID === user.userId){\n user[status] = body[status]\n }\n return user\n })\n const returnProps = {\n ...state,\n vacancyCandidates: newVacancyCandidates\n }\n return returnProps;\n }\n case SET_VACANCY_BY_ID: {\n if (action.data.pass){\n const returnProps = {\n ...state,\n selectedVacancy: action.data.data,\n vacancies: [action.data.data]\n }\n return returnProps;\n } else {\n return {\n ...state\n }\n }\n }\n case FETCH_SEARCHES: {\n const returnProps = {\n ...state,\n searches: action.data.sort((a, b) => moment(b.updatedAt) - moment(a.updatedAt))\n };\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case ADD_SEARCH:{\n let newSearches = (state.searches ? state.searches : [])\n newSearches.unshift(action.data);\n return {\n ...state,\n searches: newSearches\n }\n }\n case REMOVE_SEARCH:{\n let newSearches = state.searches\n newSearches.splice(newSearches.indexOf(action.data), 1)\n return {\n ...state,\n searches: newSearches\n }\n }\n case EDIT_SEARCH:{\n const oldSearch = state.searches.find(search => search.sort === action.data.sort);\n let newSearches = (state.searches ? state.searches : [])\n newSearches.splice(newSearches.indexOf(oldSearch), 1);\n newSearches.unshift(action.data);\n return {\n ...state,\n searches: newSearches\n }\n }\n case FETCH_SEARCH_CANDIDATES:{\n const viewedCandidates = state.viewedCandidates ? state.viewedCandidates : []\n const globalViewedCandidates = state.globalViewedCandidates ? state.globalViewedCandidates : {}\n const globalUnlockedCandidates = state.globalUnlockedCandidates ? state.globalUnlockedCandidates : {}\n let newSearchCandidates = [...(action.searchShortlist ? action.searchShortlist : [])]\n\n if (action.data.hidden_talent){\n newSearchCandidates = newSearchCandidates.map((cand) => {\n if (action.data.hidden_talent.find((newCands) => cand.sort === newCands.identity.md5EmailAddress)){\n return cand\n }\n }).filter(Boolean)\n }\n\n let allOccs = []\n let allSkills = []\n let allQuals = []\n let allRadius = [] \n let newallOccs = []\n let hasExtraRequirementsResults = false\n let hasRequiredSkillsResults = false\n\n for (const user of newSearchCandidates) {\n allOccs.push(user.occupationMatched)\n allQuals.push(user.qualification)\n if(user.queryKey === \"skills_based_search\"){\n allSkills = allSkills.concat(user.skillsMatched)\n }\n if(user.queryKey === \"hidden_talent\"){\n allSkills = allSkills.concat(user.skillsMatched)\n newallOccs.push(user.occupationMatched)\n }\n }\n const sourceRequirements = action.extraRequirements ? action.extraRequirements : []\n const today = moment().startOf('day'); \n if (action.data){\n for (const [key, value] of Object.entries(action.data)) {\n if (key === \"order_dict\"){\n for (const orderItem of value) {\n const dictValue = Object.values(orderItem)[0]\n if (dictValue instanceof Array){\n newallOccs.push(...dictValue)\n }\n else{\n newallOccs.push(dictValue)\n }\n }\n }\n else if (key !== \"occupations_skills\") {\n newSearchCandidates = newSearchCandidates.concat(value.map(user => {\n const salInt = 0 // user.desiredSalary ? parseInt(user.desiredSalary.min.substring(1).split(\",\").join(\"\")) : 0\n let lastAccessedMoment = undefined\n let lastAccessedDays = \"Unknown\"\n if (user.identity && user.identity.resumeModifiedDate){\n lastAccessedMoment = moment(user.identity.resumeModifiedDate);\n lastAccessedDays = Math.round((today - lastAccessedMoment) / 86400000);\n }\n\n let isAdditionalMatch = false\n let isRequiredSkillMatch = false\n\n if (key === \"additional_requirements\"){\n isAdditionalMatch = true\n hasExtraRequirementsResults = true\n }\n else if(key === \"required_skills\"){\n isRequiredSkillMatch = true\n hasRequiredSkillsResults = true\n }\n\n let userSkills = []\n if (isAdditionalMatch || isRequiredSkillMatch){\n userSkills = user.searched_string.split(\"#\").map((value) => {\n if (value.length > 1){\n return value\n }\n }).filter(Boolean)\n }\n else{\n userSkills = user.relevance.skills ? user.relevance.skills.map((skill) => {\n if (key === \"skills_based_search\" || key === \"hidden_talent\" || key === \"monster_local_candidates\"){\n allSkills.push(skill.name)\n }\n return skill.name\n }) : []\n } \n \n \n let occName = \"No occupations listed\"\n if(key !== \"skills_based_search\" && !isAdditionalMatch && !isRequiredSkillMatch){\n if (key === \"hidden_talent\" || key === \"monster_local_candidates\"){\n if(user.relevance && user.relevance.experience && user.relevance.experience.title && (user.relevance.experience.title.matched || user.relevance.experience.title.name)){\n occName = user.relevance.experience.title.matched ? user.relevance.experience.title.matched : user.relevance.experience.title.name\n }\n newallOccs.push(occName)\n }\n else{\n occName = key\n }\n allOccs.push(occName) \n }\n\n const qualName = user.degree ? user.degree : \"No qualification mentioned\"\n allQuals.push(qualName)\n if (Number.isInteger(user.location.distance)){\n allRadius.push(user.location.distance)\n } \n\n let chartList = []\n if(key !== \"monster_local_candidates\"){\n if (!user.relevance.chart_data || isRequiredSkillMatch || isAdditionalMatch ){ \n chartList = userSkills.map((key, index) => {\n return {colour: skillColours[index], value: Math.round((user.relevance.score * 10) / userSkills.length) || 0, key: key}\n })\n }\n else{\n chartList = Object.keys(user.relevance.chart_data).filter((key) => key !== \"occupation\").map((key, index) => { \n if (user.relevance.chart_data[key] > 0){\n return {colour: skillColours[index], value: user.relevance.chart_data[key] * 10 , key: key}\n } \n }).filter(Boolean)\n \n const occScore = (user.relevance.score * 10) - (chartList.reduce((a, b) => a + b.value, 0))\n chartList.splice(0, 0, {colour: occColour, value: occScore, key: occName.charAt(0).toUpperCase() + occName.slice(1)});\n }\n }\n\n const calculatedScore = _.sum(chartList.map((item) => item.value)) || 0\n\n const viewedCount = globalViewedCandidates[user.identity.md5EmailAddress]\n const unlockedCount = globalUnlockedCandidates[user.identity.md5EmailAddress]\n\n const getPhonenumber = () => {\n let numObj\n if (user.phoneNumbers){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Primary\")\n if (!numObj){\n numObj = user.phoneNumbers.find((el) => el.priority === \"Secondary\")\n }\n }\n return numObj && numObj.phoneNumberValue ? numObj.phoneNumberValue : \"No phone number provided\"\n }\n return {\n sort: user.identity.md5EmailAddress, \n email: user.free_resume ? user.identity.emailAddress : false,\n phoneNumber: user.free_resume ? getPhonenumber() : false,\n userID: user.identity.id,\n name: user.free_resume ? toTitleCase(user.identity.name) : user.identity.name,\n score: calculatedScore,\n location: user.location.city,\n range: user.location.distance,\n salary: \"Salary not mentioned\",\n salaryAsInt: isNaN(salInt) ? 0 : salInt,\n lastAccessed: lastAccessedMoment ? lastAccessedMoment.format('DD-MM-YYYY'): \"Unknown\", //Is better?\n lastAccessedDays: lastAccessedDays,\n qualification: qualName, //TODO\n qualificationLevel: 1, //TODO mapping\n rightToWork: user.location.workAuthorizations && user.location.workAuthorizations.find((item) => [\"UK\", \"United Kingdom\", \"uk\"].includes(item.country) && item.authorization) ? \"Yes\" : \"Unknown\",\n willRelocate: user.location.willRelocate == null ? \"Unknown\" : user.location.willRelocate ? \"Yes\" : \"No\",\n yearsOfExperience: user.yearsOfExperience ? user.yearsOfExperience : \"Unknown\",\n occupationMatched: occName,\n skillsMatched: userSkills,\n relevanceObject: user.relevance,\n locationObject: user.location,\n additionalReqMatch: isAdditionalMatch,\n requiredSkillMatch : isRequiredSkillMatch,\n rawUser: user,\n viewed: viewedCandidates.includes(user.identity.md5EmailAddress),\n viewedCount: viewedCount ? viewedCount : 0,\n unlockedCount: user.free_resume ? 1 : unlockedCount ? unlockedCount : 0,\n chartList: chartList,\n queryKey: key,\n free_resume: user.free_resume ? true : false,\n isUnlocked: user.free_resume ? true : false\n }\n }))\n }\n }\n let sotredSkills = [...new Set(allSkills)].sort((a,b) => a - b)\n if(hasExtraRequirementsResults){\n sotredSkills.unshift(\"Additional Requirements match\")\n }\n if (hasRequiredSkillsResults){\n sotredSkills.unshift(\"Required Skills match\")\n }\n return{\n ...state,\n searchCandidates: _.uniqBy(newSearchCandidates, \"sort\"),\n searchFilterOptions: {\n allSearchableOccs: [...new Set(newallOccs.filter((value) => allOccs.includes(value)))],\n allSearchableSkills: sotredSkills,\n allSearchableQuals: [...new Set(allQuals)].sort((a,b) => a - b),\n allAdditionalReqs: sourceRequirements,\n maxRadius: Math.max(...allRadius)\n }\n }\n }\n else {\n return {\n ...state,\n searchCandidates: false,\n searchFilterOptions:{},\n filteredSearchCandidates: [],\n searchFilter:{}\n }\n }\n }\n case FETCH_SEARCH_SHORTLIST:{\n const newSearchShortlist = action.data.map((cand) => {\n const viewedCount = action.globalViewedCandidates[cand.sort]\n const unlockedCount = action.globalUnlockedCandidates[cand.sort]\n return {\n ...cand,\n viewed: action.viewed.includes(cand.sort),\n viewedCount: viewedCount ? viewedCount : 0,\n unlockedCount: unlockedCount ? unlockedCount : 0,\n }\n }\n )\n \n return{\n ...state,\n searchShortlist: newSearchShortlist,\n viewedCandidates: action.viewed,\n globalViewedCandidates: action.globalViewedCandidates,\n globalUnlockedCandidates: action.globalUnlockedCandidates\n }\n }\n case UPDATE_VIEWED_CANDIDATES:{\n const newView = action.newView\n let newSearchCandidates = state.searchCandidates\n let newFilteredSearchCandidates = state.filteredSearchCandidates\n let newGlobalViewedCandidates = state.globalViewedCandidates || {}\n\n let newSearchShortlist = state.searchShortlist.map((cands) => {\n if (cands.sort === newView){\n cands.viewed = true\n }\n return cands \n }) \n\n if (newGlobalViewedCandidates[newView]){\n newGlobalViewedCandidates[newView] += 1\n }\n else{\n newGlobalViewedCandidates[newView] = 1\n }\n \n if (newSearchCandidates && newSearchCandidates.length > 0){\n newSearchCandidates = newSearchCandidates.map((cands) => {\n if (cands.sort === newView){\n cands.viewed = true\n cands.viewedCount = newGlobalViewedCandidates[newView]\n }\n return cands \n })\n }\n if (newFilteredSearchCandidates && newFilteredSearchCandidates.length > 0){\n newFilteredSearchCandidates = newFilteredSearchCandidates.map((cands) => {\n if (cands.sort === newView){\n cands.viewed = true\n cands.viewedCount = newGlobalViewedCandidates[newView]\n }\n return cands \n })\n }\n\n return{\n ...state,\n searchShortlist: newSearchShortlist,\n searchCandidates: newSearchCandidates,\n globalViewedCandidates: newGlobalViewedCandidates,\n filteredSearchCandidates: newFilteredSearchCandidates\n }\n }\n case UPDATE_SEARCH_SHORTLIST:{\n let newGlobalViewedCandidates = state.globalViewedCandidates || {}\n let updatedCandidate = action.candidate\n\n if(action.unlocked){\n updatedCandidate.unlockedCount += 1\n if (newGlobalViewedCandidates[updatedCandidate.sort]){\n newGlobalViewedCandidates[updatedCandidate.sort] += 1\n }\n else{\n newGlobalViewedCandidates[updatedCandidate.sort] = 1\n }\n }\n\n updatedCandidate.viewed = state.viewedCandidates ? state.viewedCandidates.includes(updatedCandidate.sort) : false;\n\n const idx = action.shortlist.findIndex((cands) => cands.sort === updatedCandidate.sort)\n let newShortlist = action.shortlist\n if (idx === -1){\n newShortlist.push(updatedCandidate)\n }\n else if (action.remove){\n newShortlist.splice(idx, 1); \n }\n else{\n newShortlist[idx] = updatedCandidate\n }\n if (action.searchCandidates && action.searchCandidates.length > 0){\n let newSearchCandidates = action.searchCandidates\n let idx = newSearchCandidates.findIndex((cands) => cands.sort === updatedCandidate.sort)\n if (action.remove === \"absolute\"){\n newSearchCandidates.splice(idx, 1);\n }\n else{\n newSearchCandidates[idx] = updatedCandidate\n }\n return{\n ...state,\n searchShortlist: newShortlist,\n searchCandidates: newSearchCandidates,\n globalViewedCandidates: newGlobalViewedCandidates\n }\n }\n else{\n return{\n ...state,\n searchShortlist: newShortlist,\n globalViewedCandidates: newGlobalViewedCandidates\n }\n }\n }\n case FILTER_SEARCH_CANDIDATES:{\n const searchFilterOptions = state.searchFilterOptions\n const candidates = state.searchCandidates || []\n const _isRemote = action.selectedSearch ? action.selectedSearch.original_location !== \"Work from Home / Remote / Nationwide\" ? false : true : false\n\n let currentFilters = {}\n\n if (action.newSearch) {\n currentFilters = {\"occupations\": [], \"skills\":[], \"distance\":50, \"accessed\":182, \"qualifications\":[], \"rightToWork\":false, \"additionalReqs\":[], \"maxRadius\":100, \"freeResume\":true}\n currentFilters = {\n ...currentFilters,\n occupations : searchFilterOptions.allSearchableOccs ? searchFilterOptions.allSearchableOccs.reduce((map, value) => {return {...map, [value]:true}}, {}) : [],\n skills: searchFilterOptions.allSearchableSkills ? searchFilterOptions.allSearchableSkills.reduce((map, value) => {return {...map, [value]:true}}, {}) : [],\n qualifications: searchFilterOptions.allSearchableQuals ? searchFilterOptions.allSearchableQuals.reduce((map, value) => {return {...map, [value]:true}}, {}) : [],\n additionalReqs: searchFilterOptions.allAdditionalReqs ? searchFilterOptions.allAdditionalReqs.reduce((map, value) => {return {...map, [value]:false}}, {}) : [],\n maxRadius: searchFilterOptions.maxRadius ? searchFilterOptions.maxRadius : 100 \n }\n } \n else if (action.filterChange){\n currentFilters = action.newFilters\n }\n else{\n currentFilters = state.searchFilter.currentFilters\n }\n\n const activeOccs = _.keys(_.pickBy(currentFilters.occupations))\n const activeSkills = _.keys(_.pickBy(currentFilters.skills))\n const activeQuals = _.keys(_.pickBy(currentFilters.qualifications))\n const activeAdditionalReqs = activeSkills.includes(\"Additional Requirements match\")\n const activeRequiredSkills = activeSkills.includes(\"Required Skills match\")\n const filteredCandidates = candidates.map((candidate) => {\n //ANDs\n if(!_isRemote && candidate.range > currentFilters.distance){\n return false\n }\n if(currentFilters.accessed < candidate.lastAccessedDays){\n return false\n }\n if(currentFilters.length > 0 && !activeQuals.includes(candidate.qualification)){\n return false \n }\n if(currentFilters.rightToWork && !candidate.rightToWork){\n return false \n }\n if(!currentFilters.freeResume && candidate.free_resume){\n return false \n }\n candidate.filterMatches = []\n //ORs\n if(activeAdditionalReqs && candidate.additionalReqMatch){\n candidate.filterMatches.push(\"Additional Requirements match\")\n }\n if(activeRequiredSkills && candidate.requiredSkillMatch){\n candidate.filterMatches.push(\"Required Skills match\")\n }\n if(activeOccs.length > 0 && activeOccs.includes(candidate.occupationMatched)){\n candidate.filterMatches.push(candidate.occupationMatched)\n }\n if(activeSkills.length > 0){\n const sharedSkills = _.intersection(activeSkills, candidate.skillsMatched)\n if (sharedSkills.length > 0){\n candidate.filterMatches = candidate.filterMatches.concat(sharedSkills)\n }\n }\n return candidate.filterMatches.length === 0 ? false : candidate\n }).filter(Boolean)\n\n return{\n ...state,\n filteredSearchCandidates: filteredCandidates,\n searchFilter:{\n currentFilters: currentFilters,\n activeOccs: activeOccs,\n activeSkills: activeSkills,\n activeQuals: activeQuals,\n activeAdditionalReqs: activeAdditionalReqs\n }\n }\n }\n case FETCH_BOT_TEMPLATE:{\n return{\n ...state,\n searchChatTemplates:{\n base: action.baseTemplate,\n toggle: action.toggleQuestions,\n start_text: action.start_text,\n end_text: action.end_text,\n end_text_escape: action.end_text_escape,\n emailMain: action.emailMain,\n emailPromotional: action.emailPromotional,\n userTemplates: action.userTemplates\n }\n }\n }\n case ADD_TEMPLATE:{\n let newSearchChatTemplates = state.searchChatTemplates ? state.searchChatTemplates : {}\n newSearchChatTemplates.userTemplates.unshift(action.data);\n return {\n ...state,\n searchChatTemplates: newSearchChatTemplates\n }\n }\n case REMOVE_TEMPLATE:{\n let newSearchChatTemplates = state.searchChatTemplates ? state.searchChatTemplates : {}\n newSearchChatTemplates.userTemplates.splice(newSearchChatTemplates.userTemplates.indexOf(action.data), 1)\n return {\n ...state,\n searchChatTemplates: newSearchChatTemplates\n }\n }\n case EDIT_TEMPLATE:{\n const oldTemplate = state.searchChatTemplates.userTemplates.find(search => search.sort === action.data.sort);\n let newSearchChatTemplates = state.searchChatTemplates ? state.searchChatTemplates : {}\n newSearchChatTemplates.userTemplates.splice(newSearchChatTemplates.userTemplates.indexOf(oldTemplate), 1)\n newSearchChatTemplates.userTemplates.unshift(action.data);\n return {\n ...state,\n searchChatTemplates: newSearchChatTemplates\n }\n }\n case UPDATE_SNACKBAR:{\n return {\n ...state,\n snackBarText: action.data\n }\n }\n case GET_VIEW_PREFS:{\n return {\n ...state,\n columnViewPrefs: action.data\n }\n }\n default:\n return state;\n }\n}\n","import { Logger } from \"aws-amplify\";\nimport _ from \"lodash\";\nimport {\n SA_FETCH_ORGS,\n SA_SELECT_ORG,\n SA_ERROR,\n SA_LOADING,\n SA_FETCH_ORGADMINS,\n SA_FETCH_PARTNERS,\n SA_FETCH_FLEXIBLE,\n SA_FETCH_FLEXIBLE_USER_DETAILS,\n SA_PROVIDER_FETCH_DETAILS,\n SA_FETCH_DUMMYKWS,\n SA_FETCH_CASELOAD,\n SA_FETCH_KEYWORKERS,\n SA_FETCH_EMPLOYERS,\n SA_FETCH_HRMANAGERS,\n SA_FETCH_LINEMANAGERS,\n SA_DELETE,\n SA_DISPLAY_TOAST,\n SA_UNFULFILLED_ORDERS,\n SA_MONSTER_KEYS\n} from \"../actions/types\";\n\nconst logger = new Logger(\"ADMIN.REDUCER\", \"DEBUG\");\n\nexport default function (state = {}, action) {\n let selected;\n switch (action.type) {\n case SA_FETCH_ORGS: {\n selected = null;\n\n if (state.selectedOrg) {\n selected = action.data.find(\n (element) => element.sort === state.selectedOrg.sort\n );\n if (state.selectedOrg.caseload) {\n selected.caseload = state.selectedOrg.caseload;\n }\n }\n\n var returnProps = {\n ...state,\n orgs: action.data,\n selectedOrg: selected,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_FETCH_ORGADMINS: {\n var selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.orgadmins = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_FETCH_PARTNERS: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.partners = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_FETCH_FLEXIBLE_USER_DETAILS: {\n const returnProps = {\n ...state,\n userDetailsFlexible: action.data\n }\n return returnProps;\n }\n\n case SA_PROVIDER_FETCH_DETAILS: {\n\n const returnProps = {\n ...state,\n SAProviderDetails: action.data\n }\n return returnProps;\n }\n\n case SA_FETCH_FLEXIBLE: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.flexible = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_FETCH_KEYWORKERS: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.keyworkers = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_FETCH_EMPLOYERS: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.employers = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_FETCH_HRMANAGERS: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.hrmanager = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n \n case SA_FETCH_LINEMANAGERS: {\n let selectedOrg = state.selectedOrg || {};\n\n action.data.forEach((item) => {\n item.name = findAttribute(item, \"name\");\n item.email = findAttribute(item, \"email\");\n });\n\n selectedOrg.linemanager = action.data;\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n\n case SA_SELECT_ORG: {\n selected = null;\n\n if (action.data) {\n selected = action.data;\n } else {\n if (action.saveddata) {\n selected = action.saveddata;\n }\n }\n\n const returnProps = {\n ...state,\n selectedOrg: selected,\n loading: false,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_ERROR: {\n var error = null;\n\n if (action.error) {\n error = action.error;\n }\n\n const returnProps = {\n ...state,\n error: error,\n loading: false,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_LOADING: {\n const { loading = false } = action;\n\n const returnProps = {\n ...state,\n loading,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_FETCH_DUMMYKWS: {\n const { data = {} } = action;\n\n selectedOrg = state.selectedOrg || {};\n\n selectedOrg.dummyKW = data;\n\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_DELETE: {\n let data = action.data;\n return {\n ...state,\n displayToastDelete: data\n }\n }\n case SA_DISPLAY_TOAST: {\n return {\n ...state,\n displayToastDelete: false\n }\n }\n case SA_FETCH_CASELOAD: {\n const { data = {} } = action;\n\n selectedOrg = state.selectedOrg || {};\n\n selectedOrg.caseload = data;\n\n const returnProps = {\n ...state,\n selectedOrg,\n };\n\n logger.debug(\"action: \", action);\n logger.debug(\"returning props: \", returnProps);\n return returnProps;\n }\n case SA_UNFULFILLED_ORDERS: {\n return {\n ...state,\n unfulfilledOrders: action.data ? action.data : [],\n };\n }\n\n default:\n return state;\n }\n}\n\nfunction findAttribute(row, name) {\n if (row && row.Attributes) {\n var elem = _.find(row.Attributes, (item) => {\n if (item.Name === name) {\n return true;\n }\n });\n }\n\n if (elem) {\n return elem.Value;\n } else {\n return \"\";\n }\n}\n","import { FETCH_COINS, RESET_COINS } from \"../actions/types\";\nimport { Logger } from \"aws-amplify\";\n\n/* eslint-disable */\nconst logger = new Logger(\"REWARD.REDUCER\", \"DEBUG\");\n/* eslint-enable */\n\nexport const rewardReducer = (state = {}, action) => {\n switch (action.type) {\n case FETCH_COINS: {\n var currentLevel = 1;\n var toNextLevel = 0;\n var levelRange = 50;\n const levels = [\n 50,\n 100,\n 200,\n 400,\n 800,\n 1600,\n 3200,\n 6400,\n 12800,\n 25600,\n 51200,\n 102400,\n 204800,\n 409600,\n 819200,\n 1638400,\n 3276800,\n 6553600,\n 13107200,\n 26214400,\n ];\n\n let coins = 0;\n let totalEarnedCoins = 0;\n if (action.data) {\n coins = action.data.coins;\n totalEarnedCoins = Object.entries(action.data).map(([k,v]) => [\"coins\", \"userID\", \"sort\"].includes(k) ? 0 : v).reduce((partialSum, a) => partialSum + a, 0);\n }\n\n var newCoins = 0;\n var setcoins = 1;\n\n if (parseInt(coins) >= 0) {\n setcoins = coins;\n }\n\n if (state.coins >= 0) {\n newCoins = setcoins - state.coins;\n }\n\n for (var [i, l] of levels.entries()) {\n if (totalEarnedCoins <= l) {\n currentLevel = i + 1;\n toNextLevel = l - totalEarnedCoins;\n if (i - 1 >= 0) {\n levelRange = l - levels[i - 1];\n }\n\n break;\n }\n }\n\n const returnProps = {\n ...state,\n coins: setcoins,\n newCoins,\n level: currentLevel,\n toNextLevel,\n levelRange,\n totalEarnedCoins\n };\n return returnProps;\n }\n\n case RESET_COINS: {\n const returnProps = {\n ...state,\n newCoins: 0,\n };\n return returnProps;\n }\n\n default:\n return state;\n }\n};\n","import { INDEED_DESCRIPTION } from \"../actions/types\";\nimport { Logger } from \"aws-amplify\";\n\n/* eslint-disable */\nconst logger = new Logger(\"REWARD.REDUCER\", \"DEBUG\");\n/* eslint-enable */\n\nexport const jobReducer = (state = {}, action) => {\n switch (action.type) {\n \n case INDEED_DESCRIPTION: {\n let indeed_description = state.indeed_description || {};\n let desc = action.description;\n let id = action.id;\n \n indeed_description[id] = desc;\n \n return {\n ...state,\n indeed_description: indeed_description\n }\n }\n\n default:\n return state;\n }\n};\n","import { CL_FETCH_CONTRACT_AND_PROVIDERS, CL_FETCH_CASELOAD, CL_FETCH_EVENTS, CL_FETCH_EXCEPTION_REPORT, CL_RESET_EXCEPTION_REPORT, CL_FETCH_KEYWORKERS, CL_FETCH_ORG_DATA, CLEAR_CASELOAD} from \"../actions/types\";\nimport { Logger, Cache } from \"aws-amplify\";\nimport _ from \"lodash\";\n\n/* eslint-disable */\nconst logger = new Logger(\"CASELOAD.REDUCER\", \"DEBUG\");\n/* eslint-enable */\n\nexport const caseloadReducer = (state = {}, action) => {\n switch (action.type) {\n\n case CL_FETCH_KEYWORKERS: {\n return {\n ...state,\n keyworkers: action.data\n }\n }\n\n case CL_FETCH_ORG_DATA: {\n let providers = [];\n _.each(action.data.providers, (provider) => {\n let prov = provider.sort;\n providers.push({\n id: prov,\n name: provider.name\n });\n });\n [\"exceptionReport\", \"kwReport\", \"fullReport\"].forEach(k => Cache.removeItem(k))\n return {\n ...state,\n providers: providers,\n contracts: action.data.contracts,\n keyworkers: action.data.keyworkers,\n organisation: action.data.organisation\n }\n }\n \n case CL_FETCH_CASELOAD: {\n if(action.caseloadType === \"overall\"){\n return {\n ...state,\n data: {\n caseload: {\n \"invited\":action.data.caseload.invited,\n \"accessed\":action.data.caseload.accessed,\n \"initialAssessmentComplete\":action.data.caseload.initial,\n \"reassessmentIssued\":action.data.caseload[\"reAssessment-issued\"],\n \"reassessmentComplete\":action.data.caseload.reAssessment,\n \"jobviewed\": action.data.caseload.jobviewed,\n \"jobApplied\": action.data.caseload.jobApplied,\n \"qualviewed\": action.data.caseload.qualviewed,\n \"qualApplied\": action.data.caseload.qualApplied,\n \"resourceViewed\": action.data.caseload.resourceViewed,\n \"courseViewed\": action.data.caseload.courseViewed,\n \"skillValidated\": action.data.caseload.skillValidated,\n \"cvCreated\": action.data.caseload.cvCreated,\n \"skillsAdded\": action.data.caseload.skillsAdded\n },\n inactive: action.data.live.inactive,\n active: action.data.live.active\n },\n exceptionReport: null\n }\n }\n else{\n return {\n ...state,\n dataBreakdown: {\n caseload: {\n \"invited\":action.data.caseload.invited,\n \"accessed\":action.data.caseload.accessed,\n \"initialAssessmentComplete\":action.data.caseload.initial,\n \"reassessmentIssued\":action.data.caseload[\"reAssessment-issued\"],\n \"reassessmentComplete\":action.data.caseload.reAssessment,\n \"jobviewed\": action.data.caseload.jobviewed,\n \"jobApplied\": action.data.caseload.jobApplied,\n \"qualviewed\": action.data.caseload.qualviewed,\n \"qualApplied\": action.data.caseload.qualApplied,\n \"resourceViewed\": action.data.caseload.resourceViewed,\n \"courseViewed\": action.data.caseload.courseViewed,\n \"skillValidated\": action.data.caseload.skillValidated,\n \"cvCreated\": action.data.caseload.cvCreated,\n \"skillsAdded\": action.data.caseload.skillsAdded\n },\n inactive: action.data.live.inactive,\n active: action.data.live.active\n },\n exceptionReport: null\n } \n } \n }\n\n case CLEAR_CASELOAD: {\n if(action.caseloadType === \"overall\"){\n return {\n ...state,\n data: {\n caseload:null,\n inactive:null,\n active:null\n }\n }\n }\n else{\n return {\n ...state,\n dataBreakdown: {\n caseload:null,\n inactive:null,\n active:null\n }\n }\n } \n }\n\n case CL_FETCH_CONTRACT_AND_PROVIDERS: {\n\n let providers = [];\n _.each(action.providers, (provider) => {\n let prov = provider.sort;\n providers.push({\n id: prov,\n name: provider.name\n });\n });\n [\"exceptionReport\", \"kwReport\", \"fullReport\"].forEach(k => Cache.removeItem(k))\n return {\n ...state,\n providers: providers,\n contracts: action.contracts,\n organisation: action.organisation,\n data: action.data,\n exceptionReport: null\n }\n }\n case CL_FETCH_EVENTS: \n let events = null\n if (action.data){\n events = action.data.map(item => {\n const userKW = action.keyworkers.find(element => item.keyworkerID === element.userID)\n return {\n ...item,\n keyworkerName: userKW.name,\n keyworkerEmail: userKW.email ? userKW.email : \"No email\"\n }\n })\n }\n \n return {\n ...state,\n userEvents: events\n \n }\n\n case CL_FETCH_EXCEPTION_REPORT: \n if (action.data.file){\n const reportPath = Cache.getItem(action.reportType)\n if (action.reportType && !reportPath){\n Cache.setItem(action.reportType, action.data.file, {\n expires: new Date().getTime() + 300000\n });\n }\n \n return {\n ...state,\n exceptionReport: action.data.file\n }\n }\n else{\n return {\n ...state,\n exceptionReport: \"failed\"\n }\n }\n\n case CL_RESET_EXCEPTION_REPORT: \n return {\n ...state,\n exceptionReport: null\n } \n\n default:\n return state;\n }\n\n\n};\n","import {ADD_QUALIFICATION, UPDATE_QUALIFICATION, FETCH_QUALIFICATIONS, LOADING_QUALIFICATION} from \"../actions/types\";\nimport _ from 'lodash';\n\nexport default function(state = {}, action) {\n\n switch (action.type) {\n case UPDATE_QUALIFICATION:\n let qualification = [];\n _.each(state.qualifications, (qual) => {\n if (action.data.search === qual.qual_id){\n qual.display = action.data.display;\n }\n qualification.push(qual);\n })\n return {...state, qualifications: qualification};\n case LOADING_QUALIFICATION:\n return {...state, loading: action.data};\n case ADD_QUALIFICATION:\n return {...state};\n case FETCH_QUALIFICATIONS:\n return {...state, loading: true, qualifications: action.data.Items.slice(),LastEvaluatedKey: action.data.LastEvaluatedKey, loaded: true};\n default:\n return state;\n }\n}","import { combineReducers } from \"redux\";\nimport authReducer from \"./authReducer\";\nimport candidatesReducer from \"./candidatesReducer\";\nimport userDetailsReducer from \"./portalDetailsReducer\";\nimport portalUsersReducer from \"./portalUsersReducer\";\nimport vacanciesReducer from \"./vacanciesReducer\";\nimport adminReducer from \"./adminReducer\";\nimport qualificationReducer from \"./qualficationReducer\";\nimport { rewardReducer } from \"./rewardReducer\";\nimport { FeedbackReducer } from \"./feedbackReducer\";\nimport {jobReducer} from \"./jobReducer\";\nimport {caseloadReducer} from \"./caseloadReducer\";\n\nimport { RESET_APP } from \"../actions/types\";\n\nconst allReducers = combineReducers({\n auth: authReducer,\n candidates: candidatesReducer,\n portaldetails: userDetailsReducer,\n portalusers: portalUsersReducer,\n vacancies: vacanciesReducer,\n sa: adminReducer,\n qualifications: qualificationReducer,\n rewards: rewardReducer,\n feedback: FeedbackReducer,\n jobReducer: jobReducer,\n caseload: caseloadReducer\n});\n\nconst rootReducer = (state, action) => {\n if (action.type === RESET_APP) {\n state = {\n ...state,\n candidates: {},\n portaldetails: {},\n portalusers: {},\n vacancies: {},\n sa : {},\n qualifications: {},\n caseload: {}\n };\n }\n\n return allReducers(state, action);\n};\n\nexport default rootReducer;\n","import {\n SA_FEEDBACK,\n SA_FEEDBACK_USER,\n SA_FEEDBACK_DELETE\n } from \"../actions/types\";\n\nimport _ from \"lodash\";\n\nexport const FeedbackReducer = (state = {}, action) => {\n switch (action.type) {\n case SA_FEEDBACK: {\n let feedback = action.feedback.Items || [];\n return {\n ...state,\n feedback\n }\n }\n case SA_FEEDBACK_USER: {\n\n let user = action.user.Item || {};\n return {\n ...state,\n feedback_user: user\n }\n }\n case SA_FEEDBACK_DELETE: {\n\n let feedback = state.feedback;\n let newArr = [];\n _.each((feedback), (item) => {\n if (item.sort !== action.id) newArr.push(item);\n });\n\n\n return {\n ...state,\n feedback: newArr\n }\n }\n default:\n return state;\n }\n}","import {createStore, applyMiddleware} from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers/rootReducer';\nimport { composeWithDevTools } from 'redux-devtools-extension';\n\nconst initialState = {\n\n}\nconst composeEnhancers = composeWithDevTools({\n // Specify name here, actionsBlacklist, actionsCreators and other options if needed\n});\n\nexport default function configureStore(){\n\n return createStore(rootReducer, initialState, composeEnhancers(\n applyMiddleware(thunk),\n // other store enhancers if any\n ));\n}","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport { Ability } from \"@casl/ability\";\nimport { createMuiTheme } from \"@material-ui/core/styles\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport Amplify from \"aws-amplify\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport App from \"./App\";\nimport { AbilityContext } from \"./components/Abilities/\";\nimport { ErrorBoundary } from \"./components/Common/ErrorBoundary\";\nimport * as Sentry from \"@sentry/browser\";\nimport config from \"./config/\";\nimport \"./index.css\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport configureStore from \"./store\";\nimport MomentUtils from '@date-io/moment';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nconst ability = new Ability();\n\n//console.log(config)\n//SENTRY INIT\nSentry.init({\n dsn: \"https://b0a89123415f4055a5a70acbf60cf93e@sentry.io/1882439\",\n release:\n process.env.REACT_APP_STAGE +\n \"@\" +\n process.env.REACT_APP_VERSION +\n (process.env.REACT_APP_BUILD\n ? \".\" + parseInt(process.env.REACT_APP_BUILD, 10)\n : \"\"),\n environment: process.env.REACT_APP_STAGE\n});\n\nwindow.ability = ability;\nAmplify.configure({\n Auth: {\n identityPoolId: config.AWS_COGNITO_IDENTITY_POOL_ID,\n region: config.AWS_REGION,\n userPoolId: config.AWS_COGNITO_USER_POOL_ID,\n userPoolWebClientId: config.AWS_COGNITO_CLIENT_ID\n },\n API: {\n endpoints: [\n {\n name: config.API_NAME,\n endpoint: config.API_ENDPOINT,\n region: config.AWS_REGION\n }\n ]\n },\n Storage: {\n AWSS3: {\n bucket: config.PORTAL_BUCKET,\n region: config.AWS_REGION,\n }\n}\n});\n//GLOBAL THEME\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: \"#ff6505\",\n contrastText: \"#fff\"\n },\n secondary : {\n main : \"#1faa00\"\n }\n },\n \n});\n\ntheme.shadows[4] =\n \"0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.02),0px 1px 10px 0px rgba(0,0,0,0.12)\";\n\nReactDOM.render(\n <AbilityContext.Provider value={ability}>\n <Provider store={configureStore()}>\n <ThemeProvider theme={theme}>\n <ErrorBoundary>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <App ability={ability} />\n </MuiPickersUtilsProvider>\n </ErrorBoundary>\n </ThemeProvider>\n </Provider>\n </AbilityContext.Provider>,\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","import {\n PORTAL_DETAILS,\n PORTAL_SELECT_CONTRACT,\n FETCH_MISSIONS,\n FETCH_PORTAL_USERS,\n PORTAL_SELECT_KEYWORKER,\n PORTAL_DESELECT_KEYWORKER,\n PORTAL_SELECT_PROVIDER,\n PORTAL_LIST_CONTRACTS,\n PORTAL_CASELOAD,\n PORTAL_CASELOAD_ENDDATE,\n PORTAL_ORGADMIN_CASELOAD,\n FETCH_INTERVENTIONS,\n EMPTY_CANDIDATES,\n EMPTY_CANDIDATES_SELECTION,\n PORTAL_DASHBOARD_CASELOAD,\n PORTAL_ORGADMIN_CASELOAD_GLOBAL,\n PORTAL_ORGADMIN_CASELOAD_ENDDATE,\n PORTAL_SUPPLY_DATA,\n PORTAL_SUPPLY_LOW,\n PORTAL_ADZUNA_CATEGORY,\n PORTAL_ADZUNA_HISTOGRAM_CATEGORY,\n PORTAL_ADZUNA_HISTORICAL_CATEGORY,\n PORTAL_ADZUNA_REGION_DATA,\n SET_RECENTLY_VIEWED,\n PORTAL_LOCATION_LIST,\n UPDATE_BULK_UPLOAD_PROGRESS,\n SET_BULK_EMAIL_TEMPLATE,\n SET_ROLES,\n SET_DEPARTMENTS,\n SET_LOCATIONS,\n SET_DEMOGRAPHICS,\n SET_LINEMANAGERS,\n SET_UNVERIFIED,\n CUSTOMER_CHECK,\n SET_HELP_VIDEOS,\n PORTAL_SELECT_LINEMANAGER,\n PORTAL_DESELECT_LINEMANAGER,\n PORTAL_SELECT_DEPARTMENT,\n PORTAL_DESELECT_DEPARTMENT\n} from \"./types\";\nimport { Cache, Logger, Storage, API } from \"aws-amplify\";\nimport config from \"../config\";\nimport async from 'async';\nimport _, { includes, lte } from \"lodash\";\nimport { fetchCandidates, fetchCandidatesIM } from \"./candidates_actions\";\nimport moment from \"moment\";\nconst logger = new Logger(\"PORTAL.ACTIONS\", \"INFO\");\n\nfunction mergeObjectsWithSum(obj, obj1){\n return _.mergeWith(obj, obj1, (objValue, srcValue, key) => {\n\n if (key === 'investigator' || key === 'facilitator' || \n key === 'driver'|| key === 'doer' || \n key === 'crafter' || key === 'creator'|| key === 'ADY' ||\n key === 'COMM' || key === 'CONF' || key === 'CONT' ||\n key === 'DMA' || key === 'PSA' || key === 'RLS' ||\n key === 'RTF' || key === 'SPC') {\n let current = parseInt(objValue);\n let merge = parseInt(srcValue);\n if (isNaN(current)|| current === 0) {current = 0; return merge};\n if (isNaN(merge) || merge === 0) {merge = 0; return current;}\n\n return (current + merge) / 2 + \"\";\n }\n\n if (_.isNumber(objValue) || _.isNumber(srcValue)) {\n \n let src = (_.isNumber(srcValue)) ? srcValue: 0;\n let obj = (_.isNumber(objValue)) ? objValue: 0;\n \n if (src === 0){\n return parseInt(src) + parseInt(obj);\n } else {\n return parseInt(obj) + parseInt(src);\n }\n };\n \n });\n};\n\nexport function getRecentlyViewed() {\n return async function(dispatch) {\n let data = await API.get(config.API_NAME, \"/keyworker/recently_viewed\");\n dispatch({type: SET_RECENTLY_VIEWED, data: data});\n }\n}\n\nexport function getPortalDetails() {\n return async function(dispatch, getState) {\n logger.info(\"getPortalDetails(): \");\n const state = getState();\n try {\n let data = await API.get(config.API_NAME, \"/user\");\n dispatch({ type: PORTAL_DETAILS, portaldetails: data });\n\n if (state.auth.role === \"keyworker\") {\n dispatch(fetchCandidates());\n dispatch(fetchInterventions());\n dispatch(getMissions());\n dispatch(getKeyworkerCaseload(state.auth.currentAuthUser.username));\n } else {\n if (state.auth.role === \"hr-manager\" || state.auth.role === \"line-manager\") {\n dispatch(fetchUnverifiedCounts());\n }\n if (state.auth.role !== \"super-admin\"){\n dispatch(checkCustomer());\n } \n }\n } catch (e) {\n logger.error(\"getPortalDetails():\", e);\n }\n };\n}\n\n\nexport function checkCustomer() {\n return async function(dispatch, getState) {\n logger.info(\"checkCustomer(): \");\n try {\n let data = await API.post(config.API_NAME, \"/user/checkcustomer\", {});\n if(data){\n dispatch({ type: CUSTOMER_CHECK, isCustomer: true });\n }\n } catch (e) {\n logger.error(\"checkCustomer():\", e);\n }\n };\n}\n\nexport function getBillingConsole() {\n return async function(dispatch, getState) {\n logger.info(\"getbillingconsole(): \");\n try {\n let data = await API.post(config.API_NAME, \"/user/getbillingconsole\", {});\n if(data && data.success){\n return data.session\n }\n } catch (e) {\n logger.error(\"getbillingconsole():\", e);\n }\n };\n}\n\nexport async function getCreditTotals() {\n const data = await API.get(config.API_NAME, \"/orgadmin/credits/balance\");\n return data;\n}\n\n\nexport function fetchInterventions() {\n return async function(dispatch, getState) {\n logger.info(\"fetchInterventions(): \");\n try {\n const state = getState();\n\n let data;\n\n if (state.portaldetails.user.role === \"keyworker\") {\n data = await API.get(\n config.API_NAME,\n `/keyworker/${state.portaldetails.user.userID}/interventions/${state.portaldetails.selectedContract.contractID}`\n );\n } else {\n data = await API.get(config.API_NAME, \"/orgadmin/interventions\");\n }\n\n dispatch({ type: FETCH_INTERVENTIONS, interventions: data.data });\n } catch (e) {\n console.log(\"ERROR: actions.fetchInterventions():\", e);\n }\n };\n}\n\nexport function defaultCandidateSelection() {\n return async function(dispatch, getState) {\n let state = getState();\n try {\n if (state.auth.role === \"org-admin\" || state.auth.role === \"hr-manager\") {\n dispatch({ type: EMPTY_CANDIDATES_SELECTION });\n }\n } catch (e) {}\n };\n}\n\n\nexport function selectContractNoRequest(contract) {\n return async function(dispatch) {\n logger.info(\"selectContract(): \", contract);\n try {\n dispatch({ type: PORTAL_SELECT_CONTRACT, contract: contract });\n dispatch(fetchCandidates());\n\n } catch (e) {\n logger.error(\"selectContract():\", e);\n }\n };\n}\n\n\nexport function selectContract(contract) {\n return async function(dispatch, getState) {\n logger.info(\"selectContract(): \", contract);\n let state = getState();\n try {\n dispatch({ type: PORTAL_SELECT_CONTRACT, contract: contract });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n\n if (state.auth.role === \"keyworker\") {\n dispatch(fetchCandidates());\n dispatch(fetchInterventions());\n dispatch(getMissions());\n dispatch(getKeyworkerCaseload(state.auth.currentAuthUser.username));\n }\n else if(state.auth.role === \"hr-manager\" || state.auth.role === \"line-manager\") {\n dispatch(fetchInterventions());\n dispatch(getMissions());\n }\n } catch (e) {\n logger.error(\"selectContract():\", e);\n }\n };\n}\n\nexport function selectProvider(provider) {\n return async function(dispatch, getState) {\n logger.info(\"selectProvider(): \", provider);\n try {\n dispatch({ type: PORTAL_SELECT_PROVIDER, provider: provider });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n\n } catch (e) {\n logger.error(\"selectProvider():\", e);\n }\n };\n}\n\nexport function getMissions() {\n return async function(dispatch, getState) {\n const state = getState();\n logger.info(\n \"getMissions(): \",\n state.portaldetails.selectedContract.contractID\n );\n\n try {\n const currentKeyWorkerId = state.portaldetails.currentKeyWorker\n ? state.portaldetails.currentKeyWorker\n : state.portaldetails.user.userID;\n\n let data = await API.get(\n config.API_NAME,\n `/keyworker/${currentKeyWorkerId}/missions/${state.portaldetails.selectedContract.contractID}`\n );\n dispatch({ type: FETCH_MISSIONS, missions: data.data });\n } catch (e) {\n logger.error(\"getMissions():\", e);\n }\n };\n}\n\n\n\nexport const resetKeyworker = keyworkerId => async dispatch => {\n Cache.clear();\n dispatch({ type: PORTAL_DESELECT_KEYWORKER });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n};\n\n\nexport const setKeyworkerNoRequest = keyworkerId => async dispatch => {\n if (keyworkerId) {\n Cache.clear();\n dispatch({ type: PORTAL_SELECT_KEYWORKER, keyworker: keyworkerId });\n }\n};\n\n\nexport const setKeyworker = keyworkerId => async dispatch => {\n if (keyworkerId) {\n Cache.clear();\n dispatch({ type: PORTAL_SELECT_KEYWORKER, keyworker: keyworkerId });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n try {\n const {\n data: { contracts }\n } = await API.get(config.API_NAME, `/orgadmin/keyworker/${keyworkerId}`);\n\n dispatch({ type: PORTAL_LIST_CONTRACTS, contracts: contracts });\n } catch (e) {\n logger.error(\"selectKeyworker():\", e);\n }\n }\n};\n\n\nexport function setLineManger(lineManagerID) {\n return async function(dispatch, getState) {\n // console.log(\"setLineManger + \" + lineManagerID)\n const { portaldetails: { currentDepartment }} = getState()\n if (lineManagerID) {\n dispatch({ type: PORTAL_SELECT_LINEMANAGER, lineManager: lineManagerID });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n try {\n await dispatch(fetchCandidatesIM(lineManagerID, currentDepartment))\n } catch (e) {\n logger.error(\"setLineManger():\", e);\n }\n }\n else{\n dispatch({ type: PORTAL_DESELECT_LINEMANAGER });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n await dispatch(fetchCandidatesIM(false, currentDepartment))\n }\n }\n};\n\n\nexport function setDepartment(departmentID) {\n return async function(dispatch, getState) {\n // console.log(\"setDepartment + \" + departmentID)\n const { portaldetails: { currentLineManager }} = getState()\n if (departmentID) {\n dispatch({ type: PORTAL_SELECT_DEPARTMENT, department: departmentID });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n try {\n await dispatch(fetchCandidatesIM(currentLineManager, departmentID))\n } catch (e) {\n logger.error(\"setDepartment():\", e);\n }\n }\n else{\n dispatch({ type: PORTAL_DESELECT_DEPARTMENT });\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n await dispatch(fetchCandidatesIM(currentLineManager, false))\n }\n }\n}\n\n\nexport const setKeyworkers = keyworkerId => async dispatch => {\n\n \n if (keyworkerId && keyworkerId.length > 0) {\n Cache.clear();\n\n dispatch({ type: PORTAL_SELECT_KEYWORKER, keyworker: keyworkerId[0].value});\n\n try {\n let promises = [];\n let data = [];\n _.each(keyworkerId, (key) =>{\n let promise = new Promise((success, failure) => {\n API.get(config.API_NAME, `/orgadmin/keyworker/${key.value}`).then((d) => {\n data.push(d);\n return success();\n });\n });\n promises.push(promise);\n });\n Promise.all(promises).then(() => {\n let combineObject = {};\n _.each(data, (index) => {\n _.mergeWith(combineObject, index);\n });\n \n dispatch({ type: PORTAL_LIST_CONTRACTS, contracts: combineObject.data.contracts });\n });\n } catch (e) {\n logger.error(\"selectKeyworker():\", e);\n }\n }\n};\n\nexport const getPortalUsers = () => async dispatch => {\n try {\n let data = await API.get(config.API_NAME, `/orgadmin/portalusers`);\n\n dispatch({\n type: FETCH_PORTAL_USERS,\n data: data\n });\n } catch (e) {\n logger.error(\"getPortalUsers():\", e);\n }\n};\n\nexport const getKeyworkerCaseloads = (keyworkerId, contractId) => async (\n dispatch,\n getState\n) => {\n try {\n const state = getState();\n\n if (!contractId) {\n contractId = state.portaldetails.selectedContract.contractID;\n }\n logger.info(\"getKeyworkerCaseloads(): \", contractId);\n\n if (keyworkerId && contractId) {\n\n let data = [];\n let functions = [];\n _.each(keyworkerId, (key, index) =>{\n\n // let promise = new Promise((success, failure) => {\n // happening to fast getting same result\n functions.push((callback)=> {\n API.get(\n config.API_NAME,\n `/keyworker/${key.value}/caseload/${contractId}`\n ).then((d) => {\n data.push(d);\n callback();\n });\n });\n // });\n // promises.push(promise);\n });\n\n async.series(functions).then(() => {\n \n let combineObject = {};\n \n _.each(data, (index)=> {\n // combineObject = mergeObjectsWithSum(combineObject)\n combineObject = mergeObjectsWithSum( combineObject, index);\n });\n // get the last updated at not a combined updatedAt\n _.each(data, (d) => {\n if (d.data && d.data.updatedAt ){\n combineObject.data.updatedAt = d.data.updatedAt;\n }\n });\n \n dispatch({\n type: PORTAL_CASELOAD,\n payload: Object.assign({}, { ...combineObject.data, contractId, keyworkerId })\n });\n \n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: combineObject.data\n });\n })\n \n }\n } catch (e) {\n logger.error(\"getKeyworkerCaseload():\", e);\n }\n};\n\n\nexport const getKeyworkerCaseload = (keyworkerId, contractId) => async (\n dispatch,\n getState\n) => {\n try {\n const state = getState();\n\n if (!contractId) {\n contractId = state.portaldetails.selectedContract.contractID;\n }\n logger.info(\"getKeyworkerCaseload(): \", contractId);\n\n if (keyworkerId && contractId) {\n const { data } = await API.get(\n config.API_NAME,\n `/keyworker/${keyworkerId}/caseload/${contractId}`\n );\n\n let obj = Object.assign({}, { ...data, contractId, keyworkerId });\n dispatch({\n type: PORTAL_CASELOAD,\n payload: obj\n });\n\n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: data\n });\n }\n } catch (e) {\n logger.error(\"getKeyworkerCaseload():\", e);\n }\n};\n\nexport const getKeyworkerCaseloadWithDate = (keyworkerId, contractId, dateUnix, isEndDate) => async (dispatch) => {\n try {\n if (keyworkerId && contractId) {\n\n let data = [];\n let promises = [];\n _.each(keyworkerId, (key, index) =>{\n let promise = new Promise((success, failure) => {\n API.post(config.API_NAME,`/keyworker/caseload`, {\n body: {\n keyworker: key.value,\n contract: contractId,\n targeDate: dateUnix \n }\n }).then((d) => {\n data.push(d);\n return success();\n });\n });\n promises.push(promise);\n });\n Promise.all(promises).then(() => {\n \n let combineObject = {};\n \n _.each(data, (index)=> {\n combineObject = mergeObjectsWithSum( combineObject, index);\n });\n // get the last updated at not a combined updatedAt\n _.each(data, (d) => {\n if (d.data && d.data.updatedAt ){\n combineObject.data.updatedAt = d.data.updatedAt;\n }\n });\n\n if (isEndDate){\n dispatch({\n type: PORTAL_CASELOAD_ENDDATE,\n payload: Object.assign({}, { ...combineObject.data, contractId, keyworkerId })\n });\n }\n else{\n dispatch({\n type: PORTAL_CASELOAD,\n payload: Object.assign({}, { ...combineObject.data, contractId, keyworkerId })\n });\n }\n })\n }\n } catch (e) {\n logger.error(\"getKeyworkerCaseloadWithDate():\", e);\n }\n};\n\nexport const getOrgAdminCaseloadWithDate = (dateUnix) => async dispatch => {\n try {\n const { data: orgadminCaseload } = await API.post(\n config.API_NAME,\n `/orgadmin/caseload`\n , {\n body: {\n startDate: dateUnix\n }\n });\n if (orgadminCaseload){\n dispatch({\n type: PORTAL_ORGADMIN_CASELOAD,\n caseload: orgadminCaseload\n });\n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: orgadminCaseload\n });\n }\n } catch (e) {\n logger.error(\"getOrgAdminCaseload():\", e);\n }\n};\n\nexport const getGlobalCaseload = () => async dispatch => {\n logger.info(\"Get Global Details\")\n try {\n let data = await API.get(config.API_NAME,\"/orgadmin/global/caseload\");\n dispatch({\n type: PORTAL_ORGADMIN_CASELOAD_GLOBAL,\n data: data.data\n })\n } catch (e) {\n \n }\n}\n\nexport const getOrgAdminCaseloadWithEndDate = (dateUnix) => async dispatch => {\n try {\n const { data: orgadminCaseload } = await API.post(\n config.API_NAME,\n `/orgadmin/caseload`\n , {\n body: {\n startDate: dateUnix\n }\n });\n if (orgadminCaseload){\n dispatch({\n type: PORTAL_ORGADMIN_CASELOAD_ENDDATE,\n caseload: orgadminCaseload\n });\n }\n } catch (e) {\n logger.error(\"getOrgAdminCaseload():\", e);\n }\n};\n\nexport const getSupply = () => async (dispatch, getState) => {\n try {\n const state = getState();\n\n const data = await API.post(config.API_NAME, '/jobs/query/dashboard_jobs_analytics', {\n body: {\n \"target\": \"high level\"\n }\n });\n dispatch({\n type: PORTAL_SUPPLY_DATA,\n data: data\n });\n\n if (!state.locationList){\n const townsUrl = await Storage.get(\"uk_locations_list.json\", {\n level: \"protected\",\n identityId: \"vacancy_files\",\n });\n \n const tempObj = await (await fetch(townsUrl)).json()\n dispatch({\n type: PORTAL_LOCATION_LIST,\n data: tempObj\n });\n }\n\n } catch (e) {\n }\n}\n\nexport const getSupplyWithLocation = (locationList) => async (dispatch) => {\n try {\n\n let dateList = []\n for (let i = 0; i <= 6; i++) {\n dateList.push(moment().subtract(i, 'months').format('M_YYYY'))\n }\n\n let promises = [];\n _.each(locationList , (location) => {\n _.each(dateList , (i) => {\n const promise = new Promise(async (resolve, reject) => { \n let data = await API.post(config.API_NAME, \"/jobs/query/location_analytics\", {\n body: {\n location: location.charAt(0).toUpperCase() + location.slice(1).split(\",\")[0] + \"_\" + i \n },\n });\n resolve(data);\n });\n promises.push(promise);\n });\n });\n\n Promise.all(promises).then((values) => {\n let monthObject = {}\n for (const { jobs } of values){\n if (jobs.length !== 1){\n continue\n }\n else{\n const monthData = jobs[0]\n const monthNumber = monthData.location.split(\"_\")[1]\n if (!monthObject[monthNumber]){\n monthObject[monthNumber] = {\"total\": 0}\n }\n\n for (const [key, value] of Object.entries(monthData.location_data)){\n if(!key.includes(\"percentage\") && key !== \"total\"){\n let clean_string = key.charAt(0).toUpperCase() + key.slice(1).replaceAll(\"_\", \" \")\n if (!monthObject[monthNumber][clean_string]){\n monthObject[monthNumber][clean_string] = {name:clean_string, number_jobs:value}\n }\n else{\n monthObject[monthNumber][clean_string].number_jobs = value + monthObject[monthNumber][clean_string].number_jobs\n }\n monthObject[monthNumber][\"total\"] = value + monthObject[monthNumber][\"total\"]\n\n }\n } \n }\n }\n const calculatedMonths = Object.keys(monthObject).map((monthNum) => {\n return {\n id : \"aggregated_month_\" + monthNum,\n month_digit: monthNum,\n occupation_details: Object.keys(monthObject[monthNum]).map((key) => {\n if (key !== \"total\"){\n return {\n ...monthObject[monthNum][key],\n percentage_in_total: Math.round((monthObject[monthNum][key].number_jobs / monthObject[monthNum][\"total\"] * 100) * 100 + Number.EPSILON ) / 100\n }\n }\n }).filter(Boolean)\n }\n })\n dispatch({\n type: PORTAL_SUPPLY_DATA,\n data: {jobs : calculatedMonths}\n });\n });\n\n\n} catch (e) {\n console.log(e)\n }\n}\n\n\nexport const getSupplyLowLevel = () => async dispatch => {\n try {\n const data = await API.post(config.API_NAME, '/jobs/query/dashboard_jobs_analytics', {\n body: {\n \"target\": \"low level\"\n }\n });\n dispatch({\n type: PORTAL_SUPPLY_LOW,\n data: data\n });\n } catch (e) {\n\n }\n}\n\nexport const getAdzunaCategory = () => async (dispatch, getState) => {\n try {\n const state = getState();\n // const cityUrl = await Storage.get(\"uk_city_list.json\", {\n // level: \"protected\",\n // identityId: \"vacancy_files\",\n // });\n \n // const cityList = await (await fetch(cityUrl)).json()\n\n // const data = await API.post(config.API_NAME, '/jobs/query/get_adzuna_categories', {\n // body: {}\n // })\n\n dispatch({\n type: PORTAL_ADZUNA_CATEGORY,\n data: [{\"label\": \"Accounting & Finance Jobs\", \"tag\": \"accounting-finance-jobs\"}, {\"label\": \"IT Jobs\", \"tag\": \"it-jobs\"}, {\"label\": \"Sales Jobs\", \"tag\": \"sales-jobs\"}, {\"label\": \"Customer Services Jobs\", \"tag\": \"customer-services-jobs\"}, {\"label\": \"Engineering Jobs\", \"tag\": \"engineering-jobs\"}, {\"label\": \"HR & Recruitment Jobs\", \"tag\": \"hr-jobs\"}, {\"label\": \"Healthcare & Nursing Jobs\", \"tag\": \"healthcare-nursing-jobs\"}, {\"label\": \"Hospitality & Catering Jobs\", \"tag\": \"hospitality-catering-jobs\"}, {\"label\": \"PR, Advertising & Marketing Jobs\", \"tag\": \"pr-advertising-marketing-jobs\"}, {\"label\": \"Logistics & Warehouse Jobs\", \"tag\": \"logistics-warehouse-jobs\"}, {\"label\": \"Teaching Jobs\", \"tag\": \"teaching-jobs\"}, {\"label\": \"Trade & Construction Jobs\", \"tag\": \"trade-construction-jobs\"}, {\"label\": \"Admin Jobs\", \"tag\": \"admin-jobs\"}, {\"label\": \"Legal Jobs\", \"tag\": \"legal-jobs\"}, {\"label\": \"Creative & Design Jobs\", \"tag\": \"creative-design-jobs\"}, {\"label\": \"Graduate Jobs\", \"tag\": \"graduate-jobs\"}, {\"label\": \"Retail Jobs\", \"tag\": \"retail-jobs\"}, {\"label\": \"Consultancy Jobs\", \"tag\": \"consultancy-jobs\"}, {\"label\": \"Manufacturing Jobs\", \"tag\": \"manufacturing-jobs\"}, {\"label\": \"Scientific & QA Jobs\", \"tag\": \"scientific-qa-jobs\"}, {\"label\": \"Social work Jobs\", \"tag\": \"social-work-jobs\"}, {\"label\": \"Travel Jobs\", \"tag\": \"travel-jobs\"}, {\"label\": \"Energy, Oil & Gas Jobs\", \"tag\": \"energy-oil-gas-jobs\"}, {\"label\": \"Property Jobs\", \"tag\": \"property-jobs\"}, {\"label\": \"Charity & Voluntary Jobs\", \"tag\": \"charity-voluntary-jobs\"}, {\"label\": \"Domestic help & Cleaning Jobs\", \"tag\": \"domestic-help-cleaning-jobs\"}, {\"label\": \"Maintenance Jobs\", \"tag\": \"maintenance-jobs\"}, {\"label\": \"Part time Jobs\", \"tag\": \"part-time-jobs\"}, {\"label\": \"Other/General Jobs\", \"tag\": \"other-general-jobs\"}, {\"label\": \"Unknown\", \"tag\": \"unknown\"}]\n });\n\n } catch (e) {\n }\n}\n\nexport const getAdzunaRegionData= (category, location) => async (dispatch, getState) => {\n try {\n const state = getState();\n const retries = 5;\n let data;\n\n for (var i = 1; i < retries; i++){\n data = await API.post(config.API_NAME, '/jobs/query/get_adzuna_regional_data', {\n body: {\"category\": category ? category : \"\", \"location\": location ? location : \"\"}\n });\n if (data && !Array.isArray(data.jobs)){\n break\n }\n const delay = ms => new Promise(res => setTimeout(res, ms));\n await delay(1000)\n }\n dispatch({\n type: PORTAL_ADZUNA_REGION_DATA,\n data: data\n });\n\n } catch (e) {\n }\n}\n\nexport const getAdzunaHistoricalCategory = (category, location) => async (dispatch, getState) => {\n try {\n const state = getState();\n const retries = 5;\n let data;\n\n for (var i = 1; i < retries; i++){\n data = await API.post(config.API_NAME, '/jobs/query/get_adzuna_historical_category', {\n body: {\"category\": category ? category : \"\", \"location\": location ? location : \"\"}\n });\n if (data && !Array.isArray(data.jobs)){\n break\n }\n const delay = ms => new Promise(res => setTimeout(res, ms));\n await delay(1000)\n }\n\n dispatch({\n type: PORTAL_ADZUNA_HISTORICAL_CATEGORY,\n data: data\n });\n\n } catch (e) {\n }\n}\n\nexport const getAdzunaHistogramCategory = (category, location) => async (dispatch, getState) => {\n try {\n const state = getState();\n const retries = 5;\n let data;\n\n for (var i = 1; i < retries; i++){\n data = await API.post(config.API_NAME, '/jobs/query/get_adzuna_histogram_category', {\n body: {\"category\": category ? category : \"\", \"location\": location ? location : \"\"}\n });\n if (data && !Array.isArray(data.jobs)){\n break\n }\n const delay = ms => new Promise(res => setTimeout(res, ms));\n await delay(1000)\n }\n\n dispatch({\n type: PORTAL_ADZUNA_HISTOGRAM_CATEGORY,\n data: data\n });\n\n } catch (e) {\n }\n}\n\n\n\n\nexport const getOrgAdminCaseload = () => async dispatch => {\n try {\n const { data: orgadminCaseload } = await API.get(\n config.API_NAME,\n `/orgadmin/caseload`\n );\n dispatch({\n type: PORTAL_ORGADMIN_CASELOAD,\n caseload: orgadminCaseload\n });\n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: orgadminCaseload\n });\n } catch (e) {\n logger.error(\"getOrgAdminCaseload():\", e);\n }\n};\n\nexport const setOrgContract = (contractID, selectedProvider) => async (dispatch, getState) => {\n let state = getState();\n\n let caseloadObj;\n if (selectedProvider === \"all\") {\n if (contractID === \"all\") {\n caseloadObj = state.portaldetails.caseload.orgadminCaseload;\n } else {\n caseloadObj = state.portaldetails.caseload.orgadminCaseload\n .contracts[contractID];\n }\n } else {\n if (contractID === \"all\" && selectedProvider.length === 1) {\n if (selectedProvider[0]){\n caseloadObj = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[0].value];\n } else {\n caseloadObj = state.portaldetails.caseload.orgadminCaseload\n }\n } else {\n let lastObjectMerged = false;\n for (let i = 0; i < selectedProvider.length - 1; i++){\n // this check will see if contracts exists in both parent and child before trying to merge them.\n // all contracts doesn't exist in contracts but in it own object all so it needs seperated with an else\n\n let provider1 = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[i].value].contracts[contractID];\n let provider2 = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[i + 1].value].contracts[contractID];\n \n if (contractID === \"all\"){\n provider1 = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[i].value];\n provider2 = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[i + 1].value]; \n }\n\n let providerMerge1 = {};\n let providerMerge = {};\n\n if (provider1){\n providerMerge = JSON.stringify(provider1);\n providerMerge = JSON.parse(providerMerge); \n }\n if (provider2){\n providerMerge1 = JSON.stringify(provider2);\n providerMerge1 = JSON.parse(providerMerge1);\n }\n \n if (lastObjectMerged){\n lastObjectMerged = mergeObjectsWithSum(lastObjectMerged, providerMerge1);\n } else {\n lastObjectMerged = mergeObjectsWithSum(providerMerge, providerMerge1);\n }\n }\n // double check there isn't a single instance of data rather than a merge.\n\n if (contractID !== \"all\" && lastObjectMerged.contracts){\n caseloadObj = lastObjectMerged.contracts[contractID];\n } else if (contractID !== \"all\" && !lastObjectMerged){\n caseloadObj = state.portaldetails.caseload.orgadminCaseload\n .providers[selectedProvider[0].value].contracts[contractID];\n } else {\n caseloadObj = lastObjectMerged\n }\n\n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: caseloadObj,\n });\n\n }\n }\n}\n\n\nexport const setProviderChange = (providerID, setState ) => async (dispatch, getState) => {\n let state = getState();\n \n setState({\n selectedProvider: (providerID) ? providerID : \"all\",\n selectedContract: \"all\",\n contracts: false\n });\n let lastObjectMerged = false;\n let caseloadObj; let providerIds = []; let containsAll = true;\n // return false;\n\n if (providerID && Array.isArray(providerID) && providerID.length > 0){\n containsAll = false;\n providerID.forEach((provider) => {\n if (provider.value){\n providerIds.push(provider.value);\n }\n });\n\n }\n\n if (containsAll) {\n caseloadObj = state.portaldetails.caseload.orgadminCaseload;\n } else {\n\n let caseloadObjs = [];\n if (providerIds.length > 0){\n providerIds.forEach((provider) => {\n caseloadObj = state.portaldetails.caseload.orgadminCaseload\n .providers[provider];\n caseloadObjs.push(caseloadObj);\n });\n }\n\n if (caseloadObjs.length > 1){\n for (var i = 0; i < (caseloadObjs.length - 1); i++){\n // stop deep cloning by creating a string and converting it to an object.\n caseloadObjs = JSON.stringify(caseloadObjs); \n caseloadObjs = JSON.parse(caseloadObjs);\n if (lastObjectMerged){\n lastObjectMerged = mergeObjectsWithSum(lastObjectMerged, caseloadObjs[i + 1]);\n } else {\n lastObjectMerged = mergeObjectsWithSum(caseloadObjs[i], caseloadObjs[i + 1]);\n }\n }\n }\n\n let providersContactsMerge;\n if (providerIds.length > 1){\n for (let x = 0; x < (providerIds.length - 1); x++){\n // stop deep cloning\n if (providersContactsMerge){\n\n let provider1 = state.portaldetails.caseload.orgadminCaseload.providers[\n providerIds[x + 1]\n ].contracts;\n \n provider1 = JSON.stringify(provider1);\n provider1 = JSON.parse(provider1);\n \n providersContactsMerge = mergeObjectsWithSum(providersContactsMerge, provider1);\n\n } else {\n let provider = state.portaldetails.caseload.orgadminCaseload.providers[\n providerIds[x]\n ].contracts;\n let provider1 = state.portaldetails.caseload.orgadminCaseload.providers[\n providerIds[x + 1]\n ].contracts;\n\n provider = JSON.stringify(provider);\n provider = JSON.parse(provider);\n provider1 = JSON.stringify(provider1);\n provider1 = JSON.parse(provider1)\n\n providersContactsMerge = mergeObjectsWithSum(provider, provider1);\n }\n\n setState({\n contracts: providersContactsMerge\n });\n\n }\n } else {\n\n setState({\n contracts: state.portaldetails.caseload.orgadminCaseload.providers[\n providerIds[0]\n ].contracts,\n });\n }\n }\n\n dispatch({\n type: PORTAL_DASHBOARD_CASELOAD,\n caseload: (lastObjectMerged) ? lastObjectMerged : caseloadObj,\n });\n\n}\n\nexport const trackBulkUpload = (bulkJobID, userID, emailContent, inputData) => async (dispatch, getState) => {\n dispatch({type: UPDATE_BULK_UPLOAD_PROGRESS, data: false});\n if(inputData){\n try {\n await Storage.put(userID + \"/\" + bulkJobID + \"/bulkUpload.json\", {\n data: inputData,\n emailContent: emailContent\n }, {\n level: \"private\",\n });\n \n } catch (e) {\n console.log(e);\n alert(e.message);\n return false\n }\n }\n\n try{\n let initialWait = true\n let jobRunning = 0;\n const maxRuns = 999;\n const waitTime = 3000;\n const delay = ms => new Promise(res => setTimeout(res, ms));\n let data = false;\n do {\n jobRunning += 1\n await delay(waitTime)\n data = await API.post(config.API_NAME, `/orgadmin/bulkupload/track`, {\n body: {\n bulkJobID: bulkJobID\n }\n });\n if (data){\n if(data.progress){\n dispatch({type: UPDATE_BULK_UPLOAD_PROGRESS, data: data.progress});\n }\n if(inputData){\n if (data.stage === 1 && !data.running){\n jobRunning = maxRuns\n }\n }\n else{\n if (!data.running){\n jobRunning = maxRuns\n }\n }\n }\n else{\n if (initialWait){\n initialWait = false\n }\n else{\n jobRunning = maxRuns\n }\n }\n } while (jobRunning < maxRuns);\n\n\n if(!data.error){\n const responseUrl = await Storage.get(userID +\"/\"+ bulkJobID + \"/response.json\", {\n level: \"private\"\n });\n data.data = await (await fetch(responseUrl)).json();\n }\n return data\n } catch (e) {\n logger.error(\"error():\", e);\n }\n}\n\nexport const getBulkEmailTemplate = () => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/orgadmin/bulkupload/template/get`, {});\n if (data && data.data){\n dispatch({\n type: SET_BULK_EMAIL_TEMPLATE,\n data: data.data,\n });\n return data.data\n }\n}\n\nexport const setBulkEmailTemplate = (newtemplate) => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/orgadmin/bulkupload/template/set`, {\n body: {\n data: newtemplate\n }\n });\n dispatch({\n type: SET_BULK_EMAIL_TEMPLATE,\n data: newtemplate,\n });\n}\n\nexport const fetchRoles = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/roles`, {});\n if(data && data.success){\n dispatch({type: SET_ROLES, data: data.data, unverifiedRoles: data.unverifiedRoles});\n }\n}\n\nexport const addRole = (newRole) => async (dispatch, getState) => {\n let {\n portaldetails:{\n internalRoles= [],\n unverifiedRoles= []\n }\n } = getState();\n const data = await API.post(config.API_NAME, `/internal-mobility/roles`, {\n body: newRole\n });\n if(data && data.success){\n dispatch({type: SET_ROLES, data: [...internalRoles, data.data], unverifiedRoles: unverifiedRoles});\n }\n}\n\n\nexport const removeRole = (roleID, newValue) => async (dispatch) => {\n const remove = await API.post(config.API_NAME, `/internal-mobility/roles/remove`, {\n body: {\n roleID: roleID,\n newValue: newValue\n }\n });\n if(remove && remove.success){\n dispatch(fetchRoles())\n }\n}\n\nexport const fetchDepartments = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/departments`, {});\n if(data && data.success){\n dispatch({type: SET_DEPARTMENTS, data: data.data, unverifiedDepartments: data.unverifiedDepartments});\n }\n}\n\nexport const addDepartment = (newDepartment) => async (dispatch, getState) => {\n let {\n portaldetails:{\n internalDepartments= [],\n unverifiedDepartments= []\n }\n } = getState();\n const data = await API.post(config.API_NAME, `/internal-mobility/departments`, {\n body: newDepartment\n });\n if(data && data.success){\n dispatch({type: SET_DEPARTMENTS, data: [...internalDepartments, data.data], unverifiedDepartments: unverifiedDepartments});\n }\n}\n\nexport const removeDepartment = (departmentID, newValue) => async (dispatch) => {\n const remove = await API.post(config.API_NAME, `/internal-mobility/departments/remove`, {\n body: {\n departmentID: departmentID,\n newValue: newValue\n }\n });\n if(remove && remove.success){\n dispatch(fetchDepartments())\n }\n}\n\n\nexport const fetchLocations = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/locations`, {});\n if(data && data.success){\n dispatch({type: SET_LOCATIONS, data: data.data, unverifiedLocations: data.unverifiedLocations});\n }\n}\n\nexport const addLocation = (newLocation) => async (dispatch, getState) => {\n let {\n portaldetails:{\n internalLocations= [],\n unverifiedLocations= []\n }\n } = getState();\n const data = await API.post(config.API_NAME, `/internal-mobility/locations`, {\n body: newLocation\n });\n if(data && data.success){\n dispatch({type: SET_LOCATIONS, data: [...internalLocations, data.data], unverifiedLocations: unverifiedLocations});\n }\n}\n\n\nexport const removeLocation = (locationID, newValue) => async (dispatch) => {\n const remove = await API.post(config.API_NAME, `/internal-mobility/locations/remove`, {\n body: {\n locationID: locationID,\n newValue: newValue\n }\n });\n if(remove && remove.success){\n dispatch(fetchLocations())\n }\n}\n\nexport const removeLineManagers = (lineManagerID, newValue) => async (dispatch) => {\n const remove = await API.post(config.API_NAME, `/internal-mobility/linemanagers/remove`, {\n body: {\n lineManagerID: lineManagerID,\n newValue: newValue\n }\n });\n if(remove && remove.success){\n dispatch(fetchLineManagers())\n }\n}\n\nexport const fetchLineManagers = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/linemanagers`, {});\n if(data && data.success){\n dispatch({type: SET_LINEMANAGERS, data: data.data, unverifiedLineManagers: data.unverifiedLineManagers});\n }\n}\n\nexport const fetchUnverifiedCounts = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/unverified`, {});\n if(data && data.success){\n dispatch({type: SET_UNVERIFIED, data: data});\n }\n}\n\nexport const fetchDemographics = () => async (dispatch, getState) => {\n const data = await API.get(config.API_NAME, `/internal-mobility/demographics`, {});\n if(data && data.success){\n dispatch({type: SET_DEMOGRAPHICS, data: data.data});\n }\n}\n\nexport const updateDemographics = (newQuestions) => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/internal-mobility/demographics`, {\n body: {\n questions: newQuestions\n }\n });\n if(data && data.success){\n dispatch({type: SET_DEMOGRAPHICS, data: data.data});\n }\n}\n\nexport const updateUserRoleInternalMobility = (userID, roleID) => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/internal-mobility/user/setRole`, {\n body: {\n userID: userID,\n roleID: roleID\n }\n });\n if(data && data.success){\n await dispatch(fetchRoles());\n }\n}\n\n\nexport const updateUserDepartmentsInternalMobility = (userID, departmentID) => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/internal-mobility/user/setDepartment`, {\n body: {\n userID: userID,\n departmentID: departmentID\n }\n });\n if(data && data.success){\n await dispatch(fetchDepartments());\n }\n}\n\nexport const updateUserLineManagerInternalMobility = (userID, lineManagerID) => async (dispatch, getState) => {\n const data = await API.post(config.API_NAME, `/internal-mobility/user/setLineManager`, {\n body: {\n userID: userID,\n lineManagerID: lineManagerID\n }\n });\n if(data && data.success){\n await dispatch(fetchLineManagers());\n }\n}\n\nexport const getOccDetails = (text) => async (dispatch, getState) => {\n let response = await API.post(config.API_NAME, \"/data/occupation\", {\n body: {\n label: text\n }\n })\n if(response && response.data){\n return response.data\n }\n}\n\n\nconst unAuthenticatedVideos = {\n \"UnAuth\": {\n \"paths\": [\"/login\", \"/forgot\"],\n \"videos\": [\n {\n \"id\": \"1HhF5mqS2r4tEACbbx5297\",\n \"title\": \"Login\"\n },\n {\n \"id\": \"kW2XiBYZpEaDWZs2EG9sx4\",\n \"title\": \"Forgot Password\"\n }\n ]\n }\n}\n\nexport const getHelpVideos = (path) => async (dispatch, getState) => {\n const {\n auth:{authenticated = false, role= \"\"}, \n portaldetails: {authenticatedVideos}\n } = getState();\n try{\n if(authenticated){\n let videos = authenticatedVideos ? authenticatedVideos : []\n if(!authenticatedVideos){\n const data = await API.get(config.API_NAME, `/user/helpvideo`)\n if(data.success){\n videos = data.data\n dispatch({type: SET_HELP_VIDEOS, data: data.data});\n }\n }\n const pathData = Object.values(videos).find((value) => value.paths.includes(path))\n if(pathData){\n return {...pathData, videos: pathData.videos.filter((item) => !item.roles || (item.roles.includes(role)))} \n }\n }\n else{\n return Object.values(unAuthenticatedVideos).find((value) => value.paths.includes(path))\n } \n }\n catch{\n return\n } \n}","import { API, Logger, Storage } from \"aws-amplify\";\nimport config from \"../config\";\nimport { ADD_VACANCY, FETCH_VACANCIES, EDIT_VACANCY, FETCH_VACANCIES_CANDIDATES, FIND_VACANCIES_STATUSES, SET_CANDIDATE_DETAILS, UPDATE_CANDIDATE_INFO, SET_VACANCY_BY_ID, ADD_SEARCH, FETCH_SEARCHES, REMOVE_SEARCH, EDIT_SEARCH, FETCH_SEARCH_CANDIDATES, FETCH_SEARCH_SHORTLIST, UPDATE_SEARCH_SHORTLIST, FILTER_SEARCH_CANDIDATES, FETCH_BOT_TEMPLATE, EDIT_TEMPLATE, ADD_TEMPLATE, REMOVE_TEMPLATE, UPDATE_VIEWED_CANDIDATES, REMOVE_VACANCY, UPDATE_SNACKBAR, FETCH_VACANCIES_CANDIDATES_MONSTER, GET_VIEW_PREFS, REMOVE_VACANCIES_CANDIDATES } from \"./types\";\nimport _ from 'lodash';\nconst moment = require(\"moment\");\nconst logger = new Logger(\"VACANCIES.ACTIONS\", \"INFO\");\n\n\nexport const inviteToVacancy = (user, vacancy, status, shortlist) => {\n let body = {\n userId: user.userID,\n jobId: vacancy.job_id,\n jobTitle: vacancy.job_title,\n jobSort: vacancy.sort,\n employer: vacancy.employerName,\n location : vacancy.original_location === \"Work from Home / Remote / Nationwide\" ? \"Work from Home / Remote / Nationwide\": vacancy.location_full,\n salary : Math.round(vacancy.annual_salary_min),\n jobDetails : {\n score_bp:user.skills,\n score_interest:user.interests,\n score_styles:user.styles,\n similar_skills: user.similar_skills,\n missing_skills: user.missing_skills\n }\n };\n if (vacancy.hourly_salary_min){\n body.salary = vacancy.hourly_salary_min + \" per hour\"\n }\n\n if (status === \"invited\"){\n body.invited = true;\n } else if (status === \"removed\"){\n body.removed = true;\n } else if (status === \"hired\"){\n body.hired = true;\n }\n return async (dispatch) => {\n try {\n /*eslint-disable */\n let data = await API.post(config.API_NAME, \"/employer/job/user/status\", {\n body: body\n });\n /*eslint-enable */\n if(!shortlist){\n await dispatch({ type: UPDATE_CANDIDATE_INFO, data: body, status });\n }\n await dispatch(findAllStatuses(vacancy.job_id))\n await dispatch(fetchDetailedCandidate(body.userId, vacancy, true))\n } catch (e) {\n logger.error(\"inviteToVacancy():\", e);\n }\n }\n}\n\n\nexport const inviteListToVacancy = (userList, vacancy) => {\n return async (dispatch) => {\n let body = {\n userId: null,\n jobId: vacancy.job_id,\n jobTitle: vacancy.job_title,\n jobSort: vacancy.sort,\n employer: vacancy.employerName,\n location : vacancy.original_location === \"Work from Home / Remote / Nationwide\" ? \"Work from Home / Remote / Nationwide\": vacancy.location_full,\n salary : Math.round(vacancy.annual_salary_min),\n invited : true,\n jobDetails:{}\n };\n if (vacancy.hourly_salary_min){\n body.salary = vacancy.hourly_salary_min + \" per hour\"\n }\n await new Promise(async (resolve) => {\n for (const element of userList){\n body.userId = element.userID\n body.jobDetails = {\n score_bp:element.score_bp,\n score_interest:element.score_interest,\n score_styles:element.score_styles,\n similar_skills: element.similar_skills,\n missing_skills: element.missing_skills\n }\n try {\n /*eslint-disable */\n let data = await API.post(config.API_NAME, \"/employer/job/user/status\", {\n body: body\n });\n /*eslint-enable */\n } catch (e) {\n logger.error(\"inviteListToVacancy():\", e);\n }\n }\n resolve();\n });\n await dispatch(findAllStatuses(vacancy.job_id));\n }\n}\n\nexport const setFavouritedCandidate = (userId, vacancy, isFavourited, freeCandidate, searchCandidate) => {\n return async dispatch => {\n if(searchCandidate){\n try {\n const data = await API.post(config.API_NAME, \"/employer/job/search/favourite\", {\n body: {\n vacancy: vacancy,\n candidate: searchCandidate,\n isFavourited: isFavourited\n }\n })\n return data\n } catch (e) {\n logger.error(\"setFavouritedCandidate Search Cand():\", e);\n }\n }\n else{\n let body = {\n userId: userId,\n jobId: vacancy.searchOnly ? vacancy.sort : vacancy.job_id,\n isFavourited: isFavourited,\n isSearch: vacancy.searchOnly ? true : false\n };\n if (freeCandidate){\n body.freeCandidateDetails = {\n firstName : freeCandidate.firstName,\n lastName :freeCandidate.lastName,\n email: freeCandidate.email,\n telephone: freeCandidate.phoneNumber,\n data: freeCandidate\n }\n }\n \n try {\n const data = await API.post(config.API_NAME, \"/employer/job/user/favourite\", {\n body: body }\n )\n return data\n } catch (e) {\n logger.error(\"setFavouritedCandidate():\", e);\n }\n }\n };\n};\n\nexport const setBulkFavouriteCandidates = (userIdList, vacancy) => {\n return async (dispatch, getState) => {\n const { vacancies:{ vacancyCandidates = []} } = getState();\n\n let body = {\n userId: null,\n jobId: vacancy.searchOnly ? vacancy.sort : vacancy.job_id,\n isFavourited: true\n };\n await new Promise(async (resolve) => {\n for (const element of userIdList){\n const foundCand = vacancyCandidates.find((item) => item.userID === element.userID);\n body.userId = element\n if(!foundCand.favourited){\n await dispatch(setFavouritedCandidate(foundCand.userID, vacancy, true, foundCand.free_resume ? foundCand : false, foundCand.talentType === \"Premium External Profiles\"? foundCand : false))\n }\n }\n resolve();\n });\n await dispatch(findAllStatuses(vacancy.searchOnly ? vacancy.sort : vacancy.job_id));\n }\n}\n\nexport const removeCandidatesFromVacancy = (userIdList, jobId, isPotential) => {\n return async dispatch => {\n let body = {\n userIdList: userIdList,\n jobId: jobId\n };\n \n try {\n const data = API.post(config.API_NAME, \"/employer/job/user/remove\", {\n body: body }\n )\n await dispatch({ type: REMOVE_VACANCIES_CANDIDATES, candidatesToRemove: userIdList, isPotential: isPotential});\n return data\n } catch (e) {\n logger.error(\"removeCandidatesFromVacancy():\", e);\n }\n };\n};\n\nexport const restoreRemovedCandidates = (selectedVacancy) => {\n return async dispatch => {\n let body = {\n jobId: selectedVacancy.searchOnly ? selectedVacancy.sort : selectedVacancy.job_id\n };\n \n try {\n /*eslint-disable */\n const data = await API.post(config.API_NAME, \"/employer/job/user/removed/restore\", {\n body: body }\n )\n /*eslint-enable */\n await dispatch(fetchCandidates(selectedVacancy))\n } catch (e) {\n logger.error(\"restoreRemovedCandidates():\", e);\n }\n };\n};\n\nexport function fetchVacancies(provider) {\n return async function(dispatch) {\n logger.info(\"fetchVacancies(): \");\n try {\n let { data } = await API.post(config.API_NAME, \"/employer/vacancies/get\", {\n body: {\n provider: provider\n }\n });\n dispatch({ type: FETCH_VACANCIES, data: data });\n } catch (e) {\n logger.error(\"fetchVacancies():\", e);\n }\n };\n}\n\nexport function refreshVacancies(vacancies) {\n return async function(dispatch) { \n dispatch({ type: FETCH_VACANCIES, data: vacancies });\n };\n}\n\nexport const addNewVacancy = vacancy => {\n return async dispatch => {\n try {\n const removeOldSearch = vacancy.searchOnly ? true : false\n const data = await API.post(config.API_NAME, \"/employer/vacancies\", {\n body: { ...vacancy, id: undefined, sort: undefined, searchOnly: undefined }\n });\n if (data.message) {\n return { success: false, message: data, error: data };\n }\n else{\n let jobDB_vac = _.cloneDeep(data.data)\n delete jobDB_vac.onet_styles['Speed']\n delete jobDB_vac.onet_styles['Learning_styles']\n jobDB_vac.highest_interest = Object.entries(jobDB_vac.onet_interests).sort(([,a],[,b]) => b-a).map((item) => item[0])\n jobDB_vac.highest_styles = Object.entries(jobDB_vac.onet_styles).sort(([,a],[,b]) => b-a).map((item) => item[0])\n /*eslint-disable */\n const jobDB_data = await API.post(config.API_NAME, \"/jobs/query/vacancy_to_global\", {\n body: jobDB_vac\n });\n\n //\n if(removeOldSearch){\n const transferShortList = await API.post(config.API_NAME, \"/employer/transferShortlist\", {\n body: {\n vacancy: data.data,\n search: vacancy\n }\n });\n\n const removedSearch = await API.post(config.API_NAME, \"/employer/deleteSearch\", {\n body: vacancy\n });\n dispatch({ type: REMOVE_VACANCY, data: vacancy });\n }\n /*eslint-enable */\n }\n dispatch({ type: ADD_VACANCY, data: data.data });\n return { success: true };\n } catch (e) {\n throw e;\n }\n };\n};\n\nexport const addNewSearch = newSearch => {\n return async dispatch => {\n try {\n const data = await API.post(config.API_NAME, \"/employer/createSearch\", {\n body: {\n ...newSearch, \n }\n });\n if (data && data.success){\n dispatch({ type: ADD_VACANCY, data: data.data });\n return { success: true };\n \n }\n else{\n return { success: false, message: data, error: data };\n }\n } catch (e) {\n throw e;\n }\n };\n};\n\nexport const editVacancy = vacancy => {\n return async dispatch => {\n try {\n const data = await API.patch(config.API_NAME, \"/employer/vacancies\", {\n body: { ...vacancy }\n });\n if (data.message) {\n return { success: false, message: data, error: data };\n }\n else{\n let jobDB_vac = _.cloneDeep(data.data)\n delete jobDB_vac.onet_styles['Speed']\n delete jobDB_vac.onet_styles['Learning_styles']\n jobDB_vac.highest_interest = Object.entries(jobDB_vac.onet_interests).sort(([,a],[,b]) => b-a).map((item) => item[0])\n jobDB_vac.highest_styles = Object.entries(jobDB_vac.onet_styles).sort(([,a],[,b]) => b-a).map((item) => item[0])\n /*eslint-disable */\n const jobDB_data = await API.post(config.API_NAME, \"/jobs/query/vacancy_to_global\", {\n body: jobDB_vac\n });\n /*eslint-enable */\n }\n dispatch({ type: EDIT_VACANCY, data: data.data });\n return { success: true };\n } catch (e) {\n return { success: false, message: e.message };\n }\n };\n};\n\nexport const setVacancyStatus = (vacancy, status) => {\n return async (dispatch) => {\n try {\n /*eslint-disable */\n const body = await API.patch(config.API_NAME, \"/employer/vacancy/status/set\", {\n body: {\n jobId: vacancy.job_id,\n status: status\n }\n });\n await API.post(config.API_NAME, \"/jobs/query/update_vacancy_status\", {\n body: {\n id: vacancy.job_id,\n status: status.charAt(0).toUpperCase() + status.slice(1)\n }\n });\n /*eslint-enable */\n vacancy.status = status\n dispatch({ type: EDIT_VACANCY, data: vacancy });\n } catch (e) {\n logger.error(\"setVacancyStatus():\", e);\n }\n }\n}\n\nexport const getVacancyDetails = (vacancy) => {\n return async (dispatch) => {\n try {\n if(!vacancy.searchOnly){\n const data = await API.patch(config.API_NAME, \"/employer/vacancy/details/get\", {\n body: {\n jobId: vacancy.job_id\n }\n })\n \n if (data){\n vacancy.status = data.status ? data.status : \"open\"\n }\n else{\n vacancy.status = \"open\"\n }\n dispatch({ type: EDIT_VACANCY, data: vacancy });\n }\n } catch (e) {\n logger.error(\"getVacancyDetails():\", e);\n }\n }\n}\n\nexport function fetchCandidates(selectedVacancy, mineGlobally, includeInternalProvider){\n return async function (dispatch, getState) {\n const { portaldetails: { user:{ organisation = \"\"} } } = getState();\n\n logger.info(\"fetchCandidates(): \");\n if (selectedVacancy){\n dispatch({ type: UPDATE_SNACKBAR, data: \"Searching for Skillsminer Profiles\" });\n const onlySkills = selectedVacancy.occupation.length === 0 ? true : false\n //get blacklist\n let removedUsers = []\n let jobID = selectedVacancy.searchOnly ? selectedVacancy.sort : selectedVacancy.job_id\n try {\n const data = await API.post(config.API_NAME, \"/employer/job/user/removed/get\", {\n body: {\n jobId: jobID\n }\n })\n if(data){\n removedUsers = data.userList\n }\n } catch (e) {\n logger.error(\"fetchRemovedCandidates error():\", e);\n }\n\n try {\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/reverse_mining\", {\n body: {...selectedVacancy, occupation: onlySkills ? false : selectedVacancy.occupation, mineGlobally: mineGlobally, includeInternalProvider:includeInternalProvider}\n });\n if (jobs) {\n const profileUrls = await API.post(config.API_NAME, \"/employer/job/user/images\", {\n body: {idList: [...new Set(jobs.map((item) => item.userID))]}\n });\n\n dispatch({ type: FETCH_VACANCIES_CANDIDATES, data: jobs, jobID: jobID, removedUsers: removedUsers, organisation: organisation, profileUrls: profileUrls});\n }\n dispatch({ type: UPDATE_SNACKBAR, data: \"Searching for External Profiles\" });\n try {\n //now do search\n const isRemote = selectedVacancy.location_full === \"1234567891234567891\" ? true : false\n const request_body = {\n job_title: selectedVacancy.job_title,\n location: isRemote ? selectedVacancy.location_full : selectedVacancy.location_full.includes(\"Greater London\") ? \"London\" : selectedVacancy.original_location,\n postcode: isRemote ? \"\" : selectedVacancy.location_full.split(\",\")[2].replace(\" \", \"\"),\n lat: selectedVacancy.lat ? selectedVacancy.lat : \"52.065299\",\n lon: selectedVacancy.lon ? selectedVacancy.lon : \"-0.187183\" ,\n occupation: onlySkills ? [] : [selectedVacancy.occupation],\n required_skills: selectedVacancy.skills_required || []\n }\n\n const monsterSearch = await API.post(config.API_NAME, onlySkills ? \"/jobs/query/candidate_skills_search_monster\": \"/jobs/query/candidate_search_monster\", {\n body: request_body\n })\n if(monsterSearch && monsterSearch.jobs){\n dispatch({ type: FETCH_VACANCIES_CANDIDATES_MONSTER, data: monsterSearch.jobs, jobID, removedUsers, organisation: organisation });\n }\n } catch (e) {\n logger.error(\"fetchCandidates SEARCH error():\", e);\n }\n dispatch({ type: UPDATE_SNACKBAR, data: \"\" });\n \n } catch (e) {\n logger.error(\"fetchCandidates():\", e);\n dispatch({ type: FETCH_VACANCIES_CANDIDATES, data: false });\n }\n }\n else{\n dispatch({ type: FETCH_VACANCIES_CANDIDATES, data: false });\n }\n };\n};\n\nexport const fetchDetailedCandidate = (candidateID, selectedVacancy, isPotential, candidateData) => {\n return async (dispatch) => {\n logger.info(\"fetchDetailedCandidate(): \");\n try {\n let data = false\n if(candidateData){\n data = candidateData\n }\n else{\n data = await API.post(config.API_NAME, \"/employer/job/user/details\", {\n body: {\n candidateID: candidateID\n }\n });\n }\n dispatch({type: SET_CANDIDATE_DETAILS, data: data, selectedVacancy, isPotential});\n } catch (e) {\n logger.error(\"fetchDetailedCandidate():\", e);\n }\n }\n}\n\n\nexport const findAllStatuses = (jobId) => {\n return async (dispatch) => {\n try {\n if(jobId){\n let statusData = await API.post(config.API_NAME, \"/employer/job/status\", {\n body: {\n jobId: jobId \n }\n });\n let removedUsers = []\n let profileUrls = {}\n try {\n const data = await API.post(config.API_NAME, \"/employer/job/user/removed/get\", {\n body: {\n jobId: jobId\n }\n })\n if(data){\n removedUsers = data.userList\n }\n } catch (e) {\n logger.error(\"fetchRemovedCandidates error():\", e);\n }\n if(statusData && statusData.shortList && statusData.shortList.length > 0){\n profileUrls = await API.post(config.API_NAME, \"/employer/job/user/images\", {\n body: {idList: [...new Set(statusData.shortList.map((item) => item.id))]}\n });\n }\n\n dispatch({type: FIND_VACANCIES_STATUSES, shortList: statusData.shortList, removedUsers, globalUnlocked: statusData.globalUnlocked, profileUrls: profileUrls});\n }\n else{\n dispatch({type: FIND_VACANCIES_STATUSES, shortList: [], removedUsers:[], globalUnlocked: [], profileUrls: {}});\n }\n } catch (e) {\n logger.error(\"findAllStatuses():\", e);\n }\n }\n}\n\n\n\nexport const getVacancyById = (jobId) => {\n return async (dispatch) => {\n try {\n let data = await API.post(config.API_NAME, \"/employer/vacancies/getById\", {\n body: {\n jobId: jobId \n }\n });\n \n dispatch({type: SET_VACANCY_BY_ID, data: data});\n } catch (e) {\n logger.error(\"findAllStatuses():\", e);\n }\n }\n}\n\nexport function fetchSearches(provider) {\n return async function(dispatch) {\n logger.info(\"fetchSearches(): \");\n try {\n let { data } = await API.post(config.API_NAME, \"/employer/searches/get\", {\n body: {\n provider: provider\n }\n });\n dispatch({ type: FETCH_SEARCHES, data: data });\n } catch (e) {\n logger.error(\"fetchSearches():\", e);\n }\n };\n}\n\nexport const deleteSearch = search => {\n return async dispatch => {\n try {\n const data = await API.post(config.API_NAME, \"/employer/deleteSearch\", {\n body: search\n });\n if (data && data.success){\n dispatch({ type: REMOVE_VACANCY, data: search });\n return { success: true };\n }\n else{\n return { success: false };\n }\n } catch (e) {\n throw e;\n }\n };\n};\n\nexport function fetchHiddenTalent(location){\n return async function (dispatch, getState) {\n // const { vacancies: { searchShortlist=[] } } = getState();\n logger.info(\"fetchHiddenTalent(): \");\n let response\n try {\n if (location){\n try {\n response = await API.post(config.API_NAME, \"/employer/searches/shortlist/getHidden\", {\n body: {}\n });\n if (response && response.success){\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: response.data, viewed: response.viewed, globalViewedCandidates: response.globalViewedCandidates, globalUnlockedCandidates: response.globalUnlockedCandidates });\n }\n else{\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: false, viewed: [], globalViewedCandidates: {}, globalUnlockedCandidates: {} });\n }\n } catch (e) {\n logger.error(\"fetchHiddenTalent shortlist():\", e);\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: false, viewed: [], globalViewedCandidates: {}, globalUnlockedCandidates: {} });\n }\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/hidden_talent\", {\n body: {\n location: location.location_full.includes(\"Greater London\") ? \"London\" : location.original_location,\n postcode: location.location_full.split(\",\")[2].replace(\" \", \"\"),\n lat: location.lat,\n lon: location.lon,\n }\n });\n if (jobs) {\n await dispatch({ type: FETCH_SEARCH_CANDIDATES, data: {hidden_talent: jobs}, sort:\"\", request_body:{}, extraRequirements: [], searchShortlist:response ? response.data : []});\n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: { original_location:location.original_location }, newSearch: true});\n }\n else {\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: [] });\n }\n }\n else {\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: false });\n }\n } catch (e) {\n logger.error(\"fetchHiddenTalent():\", e);\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: false });\n }\n };\n};\n\nexport function fetchSearchCandidates(selectedSearch){\n return async function (dispatch, getState) {\n const { vacancies: { searchShortlist=[] } } = getState();\n logger.info(\"fetchSearchCandidates(): \");\n try {\n if (selectedSearch){\n const isRemote = selectedSearch.location_full === \"1234567891234567891\" ? true : false\n const request_body = {\n job_title: selectedSearch.job_title,\n location: isRemote ? selectedSearch.location_full : selectedSearch.location_full.includes(\"Greater London\") ? \"London\" : selectedSearch.original_location,\n postcode: isRemote ? \"\" : selectedSearch.location_full.split(\",\")[2].replace(\" \", \"\"),\n lat: selectedSearch.lat,\n lon: selectedSearch.lon,\n occupation: selectedSearch.low_occupation,\n skills: selectedSearch.extraRequirements || [],\n required_skills: selectedSearch.skills_required || []\n }\n\n // NO ENDPOINT YET\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/candidate_search_monster\", {\n body: request_body\n });\n if (jobs) {\n //TODO presumable need to search for statues & deleted users too\n let sort = selectedSearch.sort\n await dispatch({ type: FETCH_SEARCH_CANDIDATES, data: jobs, sort:sort, request_body:request_body, extraRequirements: selectedSearch.extraRequirements, searchShortlist:searchShortlist});\n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: selectedSearch, newSearch: true});\n }\n else {\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: [] });\n }\n }\n else {\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: false });\n }\n } catch (e) {\n logger.error(\"fetchSearchCandidates():\", e);\n dispatch({ type: FETCH_SEARCH_CANDIDATES, data: false });\n }\n };\n};\n\nexport const favouriteCandidate = (candidate, selectedSearch, isFavourited) => {\n return async function (dispatch, getState) {\n logger.info(\"favouriteCandidate(): \");\n const { vacancies: { searchShortlist=[], searchCandidates } } = getState();\n try {\n let response = await API.post(config.API_NAME, \"/employer/searches/shortlist/put\", {\n body: {\n candidate: candidate,\n search: selectedSearch,\n isFavourited: isFavourited,\n }\n });\n if (response && response.success){\n dispatch({ type: UPDATE_SEARCH_SHORTLIST, candidate: response.data, remove: response.remove, shortlist:searchShortlist, searchCandidates:searchCandidates }); \n }\n } catch (e) {\n logger.error(\"favouriteCandidate():\", e);\n }\n };\n};\n\n\nexport const viewCandidate = (userId) => {\n return async function (dispatch, getState) {\n const { vacancies: { viewedCandidates=[] } } = getState();\n try {\n if (!viewedCandidates.includes(userId)){\n const data = API.post(config.API_NAME, \"/employer/job/user/view\", {\n body: {\n candidateID: userId,\n } }\n )\n dispatch({ type: UPDATE_VIEWED_CANDIDATES, newView: userId});\n }\n \n } catch (e) {\n logger.error(\"viewCandidate():\", e);\n }\n };\n};\n\nexport const fetchShortlistCandidates = (selectedSearch) => { // also gets viewed candidates\n return async dispatch => {\n try {\n let response = await API.post(config.API_NAME, \"/employer/searches/shortlist/get\", {\n body: selectedSearch\n });\n if (response && response.success){\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: response.data, viewed: response.viewed, globalViewedCandidates: response.globalViewedCandidates, globalUnlockedCandidates: response.globalUnlockedCandidates});\n }\n else{\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: false, viewed: [], globalViewedCandidates: {}, globalUnlockedCandidates: {} });\n }\n } catch (e) {\n logger.error(\"unlockCandidate():\", e);\n dispatch({ type: FETCH_SEARCH_SHORTLIST, data: false, viewed: [], globalViewedCandidates: {}, globalUnlockedCandidates: {} });\n }\n };\n};\n\nexport const unlockCandidate = (candidate, selectedSearch, source, newVersion) => {\n return async function (dispatch, getState) {\n logger.info(\"unlockCandidate(): \");\n const { vacancies: { searchShortlist=[], searchCandidates } } = getState();\n try {\n if(newVersion){\n let response = await API.post(config.API_NAME, \"/employer/vacancies/shortlist/unlock\", {\n body: {\n candidate: candidate,\n vacancy: selectedSearch\n }\n });\n if (response && response.success){\n if (response.data){\n await dispatch(findAllStatuses(selectedSearch.searchOnly ? selectedSearch.sort : selectedSearch.job_id))\n await dispatch(fetchDetailedCandidate(candidate.userID, selectedSearch, source === \"viewVacancy\" ? true : false, response.data))\n return false\n }\n else{\n return response.message\n }\n }\n else{\n return \"An error has occurred\"\n }\n }\n else{\n let response = await API.post(config.API_NAME, \"/employer/searches/shortlist/unlock\", {\n body: {\n candidate: candidate,\n search: selectedSearch\n }\n });\n if (response && response.success){\n if (response.data){\n await dispatch({ type: UPDATE_SEARCH_SHORTLIST, candidate: response.data, shortlist:searchShortlist, searchCandidates:searchCandidates, unlocked:true });\n if (source === \"reviewSearchCandidates\"){\n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: selectedSearch});\n }\n return false\n }\n else{\n return response.message\n }\n }\n else{\n return \"An error has occurred\"\n }\n }\n } catch (e) {\n logger.error(\"unlockCandidate():\", e);\n return e\n }\n };\n};\n\n\nexport const transferCandidate = (candidate, selectedSearch, source) => {\n return async function (dispatch, getState) {\n logger.info(\"transferCandidate(): \");\n const { vacancies: { searchShortlist=[], searchCandidates } } = getState();\n try {\n\n let response = await API.post(config.API_NAME, \"/employer/searches/shortlist/transfer\", {\n body: {\n candidate: candidate,\n newSearch: selectedSearch\n }\n });\n if (response && response.success){\n if (response.data){\n if (source === \"reviewSearchCandidates\"){\n await dispatch({ type: UPDATE_SEARCH_SHORTLIST, candidate: response.data, remove: \"absolute\", shortlist:searchShortlist, searchCandidates:searchCandidates}); \n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: selectedSearch});\n }\n else if(source === \"localTalentReview\"){\n dispatch({ type: UPDATE_SEARCH_SHORTLIST, candidate: response.data, remove: false, shortlist:searchShortlist, searchCandidates:searchCandidates}); \n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: selectedSearch});\n }\n else{\n dispatch({ type: UPDATE_SEARCH_SHORTLIST, candidate: response.data, remove: true, shortlist:searchShortlist, searchCandidates:searchCandidates}); \n }\n }\n else{\n return response.message\n }\n }\n else{\n return \"An error has occurred\"\n }\n } catch (e) {\n logger.error(\"transferCandidate():\", e);\n return e\n }\n };\n};\n\n\nexport const getCVLink = (candidate) => {\n return async function (dispatch) {\n logger.info(\"getCVLink(): \");\n try {\n const genResponse = await API.post(\n config.API_NAME,\n \"/pdf-service/monster-pdf\",\n {\n body: { id: candidate.free_resume || candidate.talentType === \"Premium External Profiles\" ? candidate.userID : candidate.sort, freeVersion: candidate.free_resume },\n },\n { timeout: 1200000 }\n );\n if (genResponse && genResponse.success){\n const s3Url = await Storage.get(`monsterpdfs/${candidate.free_resume || candidate.talentType === \"Premium External Profiles\" ? candidate.userID : candidate.sort}.pdf`,\n {\n level: \"private\",\n }\n );\n const blob = await fetch(s3Url, { method: \"get\" });\n return {success: true, data: await blob.blob()}\n }\n }\n catch (e) {\n logger.error(\"unlockCandidate():\", e);\n }\n return {success: false}\n };\n};\n\nexport const updateSearchFilters = (search, filterObject) => {\n return async function (dispatch) {\n logger.info(\"updateSearchFilters(): \");\n dispatch({ type: FILTER_SEARCH_CANDIDATES, selectedSearch: search, newFilters: filterObject, filterChange:true});\n };\n};\n\nexport const fetchBotTemplates = () => {\nreturn async function(dispatch) {\n logger.info(\"fetchTemplates(): \");\n try {\n let { data } = await API.post(config.API_NAME, \"/employer/searches/getTemplates\", {\n body: {}\n });\n if (data){\n dispatch({ type: FETCH_BOT_TEMPLATE, baseTemplate: data.baseTemplate, toggleQuestions: data.toggleQuestions, userTemplates: data.userTemplates, start_text: data.start_text, end_text: data.end_text, end_text_escape: data.end_text_escape, emailMain: data.emailMain, emailPromotional: data.emailPromotional});\n }\n } catch (e) {\n logger.error(\"fetchTemplates():\", e);\n }\n};\n}\n\n\nexport const submitTemplateItem = (newTemplate, isEdit) => {\n return async function (dispatch) {\n logger.info(\"submitTemplateItem(): \");\n try {\n const data = await API.post(config.API_NAME, \"/employer/createTemplate\", {\n body: {\n ...newTemplate, \n isEdit: isEdit\n }\n });\n if (data && data.success){\n if (isEdit){\n dispatch({ type: EDIT_TEMPLATE, data: data.data });\n }\n else{\n dispatch({ type: ADD_TEMPLATE, data: data.data });\n }\n return { success: true };\n }\n else{\n return { success: false };\n }\n } catch (e) {\n logger.error(\"submitTemplateItem():\", e);\n }\n }\n}\n\nexport const deleteTemplate= template => {\n return async (dispatch, getState) => {\n try {\n const { vacancies: { searches=[] } } = getState();\n\n for (const search of searches){\n if(search.templateSort && search.templateSort == template.sort){\n return { success: false, message: \"Delete template failed. Template in use by active search\" };\n }\n }\n\n const data = await API.post(config.API_NAME, \"/employer/deleteTemplate\", {\n body: template\n });\n if (data && data.success){\n dispatch({ type: REMOVE_TEMPLATE, data: template });\n return { success: true };\n }\n else{\n return { success: false };\n }\n } catch (e) {\n throw e;\n }\n };\n};\n\nexport const assignTemplateScript = (search, template) => {\n return async function (dispatch) {\n logger.info(\"assignTemplateScript(): \");\n try {\n const data = await API.post(config.API_NAME, \"/employer/searches/assignTemplate\", {\n body: {\n ...search, \n templateName: template.title,\n templateSort:template.sort\n }\n })\n if (data && data.success){\n dispatch({ type: EDIT_VACANCY, data: data.data });\n return { success: true };\n }\n else{\n return { success: false };\n }\n } catch (e) {\n throw e;\n }\n }\n}\n\nexport const autoCompleteV2 = (text) => {\n return async function (dispatch) {\n logger.info(\"occupationAutoComplete(): \");\n try {\n const data = await API.post(config.API_NAME, \"/nlu/occupationAutoComplete\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n console.log(e)\n }\n try {\n const data = await API.post(config.API_NAME, \"/nlu/occupationAutoCompleteFallback\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n throw e;\n }\n return {\n directMatches: [],\n closeMatches: []\n };\n }\n}\n\n\nexport const autoCompleteV2Skill = (text) => {\n return async function (dispatch) {\n logger.info(\"skillAutoComplete(): \");\n try {\n const data = await API.post(config.API_NAME, \"/nlu/skillAutoComplete\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n console.log(e)\n }\n try {\n const data = await API.post(config.API_NAME, \"/nlu/skillAutoCompleteFallback\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n throw e;\n }\n return {\n directMatches: [],\n closeMatches: []\n };\n }\n}\n\nexport const autoCompleteLocationV2 = (text) => {\n return async function (dispatch) {\n logger.info(\"autoCompleteLocationV2(): \");\n try {\n const data = await API.post(config.API_NAME, \"/nlu/locationAutoComplete\", {\n body: {\n text: text\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n console.log(e)\n }\n try {\n const data = await API.post(config.API_NAME, \"/nlu/locationAutoComplete\", {\n body: {\n text: text\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n throw e;\n }\n return {\n directMatches: [],\n closeMatches: []\n };\n }\n}\n\n\nexport const getLocationDetails = (text) => {\n return async function (dispatch) {\n logger.info(\"getLocationDetails(): \");\n try {\n const data = await API.post(config.API_NAME, \"/nlu/getLocationDetails\", {\n body: {\n text: text\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n console.log(e)\n }\n try {\n const data = await API.post(config.API_NAME, \"/nlu/getLocationDetailsFallback\", {\n body: {\n text: text\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n throw e;\n }\n }\n}\n\nexport const autoCompleteSkill = (text) => {\n return async function (dispatch) {\n logger.info(\"autoCompleteSkill(): \");\n try {\n const data = await API.post(config.API_NAME, \"/nlu/skill\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n console.log(e)\n }\n try {\n const data = await API.post(config.API_NAME, \"/nlu/fallbackskill\", {\n body: {\n text: text, \n dualType: false\n }\n })\n if (data && data.response){\n return data.response\n }\n } catch (e) {\n \n throw e;\n }\n return [];\n }\n}\n\n//pre qual contact\nexport const contactCandidate = (candidate, selectedSearch, source, newVersion) => {\n return async function (dispatch, getState) {\n logger.info(\"contactCandidate(): \");\n const { vacancies: { searchShortlist=[], searchCandidates } } = getState();\n const isInternalCandidate = [\"Community CV's\", \"Premium External Profiles\"].includes(candidate.talentType) ? false : true\n try {\n\n let response = await API.post(config.API_NAME, \"/employer/searches/shortlist/contact\", {\n body: {\n candidate: candidate,\n search: selectedSearch,\n isVacancy: selectedSearch.searchOnly ? false : true,\n isFreeCandidate: candidate.free_resume ? true : false,\n isInternalCandidate: isInternalCandidate,\n }\n });\n if (response && response.success){\n if (response.data){\n await dispatch(findAllStatuses(selectedSearch.searchOnly ? selectedSearch.sort : selectedSearch.job_id))\n await dispatch(fetchDetailedCandidate(candidate.userID, selectedSearch, source === \"viewVacancy\" ? true : false, isInternalCandidate ? false : response.data))\n return false\n }\n else{\n return response.message\n }\n }\n else{\n return \"An error has occurred\"\n }\n } catch (e) {\n logger.error(\"contactCandidate():\", e);\n return e\n }\n };\n};\n\nexport const setColumnViewPrefs = (view, values) => {\n return async function (dispatch) {\n logger.info(\"assignTemplateScript(): \");\n try {\n const data = await API.post(config.API_NAME, \"/employer/vacancy/viewprefs\", {\n body: {\n view: view,\n values: values,\n }\n })\n } catch (e) {\n throw e;\n }\n }\n}\n\nexport const getColumnViewPrefs = () => {\n return async function (dispatch) {\n logger.info(\"getColumnViewPrefs(): \");\n try {\n const data = await API.get(config.API_NAME, \"/employer/vacancy/viewprefs\", {})\n if (data){\n await dispatch({ type: GET_VIEW_PREFS, data: data});\n return data\n }\n } catch (e) {\n throw e;\n }\n }\n}\n\n// /payments/checkout/monstercredits\nexport const bundleCheckout = (creditOption) => {\n return async (dispatch) => {\n try {\n const checkoutResponse = await API.post(config.API_NAME, \"/user/bundleCheckout\", {\n body: {\n credits: creditOption\n }\n });\n if (checkoutResponse){\n if(checkoutResponse.success && checkoutResponse.session){\n return {url : checkoutResponse.session.url}\n }\n else if(checkoutResponse.error){\n return {error : checkoutResponse.session.url}\n }\n }\n } catch (e) {\n logger.error(\"bundleCheckout():\", e);\n }\n return {error : \"Unknown Error\"}\n }\n}","import React, { useState, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { autoCompleteV2, autoCompleteV2Skill, autoCompleteLocationV2 } from \"../../actions/vacancies_actions\";\nimport { Autocomplete } from \"@material-ui/lab\";\nimport {Typography, TextField, makeStyles} from \"@material-ui/core\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport ReactHtmlParser from \"react-html-parser\"\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n '& .MuiOutlinedInput-root': { color:\"black\" },\n }\n}));\n\nconst jobMatchTypeOptions = [\n {\n label: \"Previous\",\n value: \"Previous\",\n htmlLabel: \"Previous\",\n group: \"Job Match Options\"\n },\n {\n label: \"Preferred\",\n value: \"Preferred\",\n htmlLabel: \"Preferred\",\n group: \"Job Match Options\"\n },\n {\n label: \"Skills\",\n value: \"Skills\",\n htmlLabel: \"Skills\",\n group: \"Job Match Options\"\n },\n {\n label: \"Styles\",\n value: \"Styles\",\n htmlLabel: \"Styles\",\n group: \"Job Match Options\"\n },\n {\n label: \"Interests\",\n value: \"Interests\",\n htmlLabel: \"Interests\",\n group: \"Job Match Options\"\n }\n]\n\nconst blankOption = {\n label: \"\",\n value: \"\",\n htmlLabel: \"\",\n group: \"Begin typing to search other occupations\"\n}\n\nconst whiteStyles = {backgroundColor: \"white\", color: 'black'}\n\nconst AutoCompleteComponent = ({\n onSelect,\n autoCompleteV2,\n autoCompleteV2Skill,\n autoCompleteLocationV2,\n error,\n disabled,\n selectedOptions = [],\n size = \"small\",\n placeholder = \"Begin typing to find occupations\",\n type = \"occupation\",\n useJobMatchOption = false,\n blankInput,\n clearOnSelect=false\n }) => {\n const classes = useStyles();\n const fontSize = size === \"small\" ? \"0.8125rem\" : \"1rem\"\n const [filteredOptions, setFilteredOptions] = useState(useJobMatchOption ? [...jobMatchTypeOptions, blankOption] : []); \n const [input, setInput] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [searchQueue, setSearchQueue] = useState(\"\");\n\n const onInputChange = async (searchText) => {\n setLoading(searchText)\n setSearchQueue(searchText)\n if(searchText === \"\"){\n setFilteredOptions(useJobMatchOption ? [...jobMatchTypeOptions, blankOption] : [])\n }\n else{\n const response = type === \"occupation\" ? await autoCompleteV2(searchText) : type ===\"skills\" ? await autoCompleteV2Skill(searchText) : await autoCompleteLocationV2(searchText)\n if(response && (response.directMatches || response.closeMatches)){\n setFilteredOptions([...(useJobMatchOption ? jobMatchTypeOptions : []), ...response.directMatches, ...response.closeMatches])\n }\n else{\n setFilteredOptions([]) \n }\n }\n setLoading(false)\n };\n \n useEffect(() => {\n async function setBlankInput() {\n setInput(\"\")\n }\n setBlankInput();\n }, [blankInput])\n\n useEffect(() => {\n async function autoCompleteHandeler() {\n if(!loading){\n if(input !== searchQueue){\n onInputChange(input);\n }\n }\n }\n autoCompleteHandeler()\n }, [input, loading, searchQueue]);\n\n return (\n <Autocomplete\n style={useJobMatchOption ? whiteStyles : {}}\n fullWidth\n disabled={disabled}\n onInputChange={(event, searchText) => setInput(searchText)}\n onChange={(e, v) => {\n if(v){\n onSelect(v.label);\n if(clearOnSelect){\n setInput(\"\")\n }\n }\n }}\n inputValue={input}\n options={filteredOptions}\n getOptionLabel={(option) => option.label}\n groupBy={(option) => option.group}\n renderInput={(params) => (\n <TextField \n {...params}\n size=\"small\"\n InputLabelProps={{...params.InputLabelProps, style: { fontSize:fontSize}}}\n InputProps={{...params.InputProps, style: { fontSize: fontSize}}}\n placeholder={placeholder}\n variant=\"outlined\" \n fullWidth \n error={error}\n className={classes.textField}\n />\n ) \n }\n renderOption={(option) => (\n <Typography \n style={{width: \"100%\", fontSize:fontSize, display:\"flex\", alignItems:\"center\", whiteSpace: \"pre\", display: \"flex\", justifyContent: \"space-between\"}} \n >\n <Typography>\n {ReactHtmlParser(option.htmlLabel)}\n </Typography>\n {selectedOptions.includes(option.label) && (<DoneIcon fontSize=\"small\" style={{marginLeft:5}}/>)}\n </Typography>\n )\n }\n filterOptions={(options) => options}\n />\n );\n};\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators({ autoCompleteV2, autoCompleteV2Skill, autoCompleteLocationV2 }, dispatch),\n dispatch\n };\n}\n\nexport const EntitiesAutoComplete = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AutoCompleteComponent);\n","var _desc, _defs, _g, _clipPath, _clipPath2, _clipPath3, _clipPath4, _clipPath5, _clipPath6, _clipPath7, _clipPath8, _clipPath9, _clipPath10, _clipPath11, _clipPath12, _clipPath13, _clipPath14, _clipPath15, _clipPath16, _clipPath17, _clipPath18, _clipPath19, _clipPath20, _clipPath21, _clipPath22, _clipPath23, _clipPath24, _clipPath25, _clipPath26;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgSmLogo = function SvgSmLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 607,\n height: 144,\n viewBox: \"0 0 607 144\",\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _desc || (_desc = /*#__PURE__*/React.createElement(\"desc\", null, \"Created with Fabric.js 5.2.4\")), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 540 540)\",\n id: \"28360039-c5a4-4883-8a42-2748b50f857d\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(255,255,255)\",\n fillRule: \"nonzero\",\n opacity: 1,\n visibility: \"hidden\"\n },\n vectorEffect: \"non-scaling-stroke\",\n x: -540,\n y: -540,\n rx: 0,\n ry: 0,\n width: 1080,\n height: 1080\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 540 540)\",\n id: \"394946ff-7c67-4be5-b84e-19f38cfd911a\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 423.69 547.85)\",\n clipPath: \"url(#CLIPPATH_36)\"\n }, _clipPath || (_clipPath = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_36\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 109.95 1.15)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-193.85, -71)\",\n d: \"M 193.8 2.1 L 193.8 2.1 C 198.20000000000002 2.1 201.8 5.7 201.8 10.1 L 201.8 139.9 L 185.9 139.9 L 185.9 10.1 C 185.8 5.7 189.4 2.1 193.8 2.1\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 374.12 566.41)\",\n clipPath: \"url(#CLIPPATH_37)\"\n }, _clipPath2 || (_clipPath2 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_37\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 137.25 -9.1)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-166.55, -81.25)\",\n d: \"M 166.5 22.6 L 166.5 22.6 C 170.9 22.6 174.5 26.200000000000003 174.5 30.6 L 174.5 139.9 L 158.6 139.9 L 158.6 30.5 C 158.5 26.1 162.1 22.6 166.5 22.6\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 324.55 614.32)\",\n clipPath: \"url(#CLIPPATH_38)\"\n }, _clipPath3 || (_clipPath3 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_38\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 164.55 -35.55)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-139.25, -107.7)\",\n d: \"M 139.2 75.5 L 139.2 75.5 C 143.6 75.5 147.2 79.1 147.2 83.5 L 147.2 139.9 L 131.29999999999998 139.9 L 131.29999999999998 83.4 C 131.3 79.1 134.9 75.5 139.2 75.5\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 1130.68 614.06)\",\n clipPath: \"url(#CLIPPATH_39)\"\n }, _clipPath4 || (_clipPath4 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_39\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -279.4 -35.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-583.2, -107.55)\",\n d: \"M 561.2 75.7 L 561.2 140.4 L 570 140.4 L 570 103.60000000000001 C 570 91.80000000000001 578.9 83.30000000000001 590 83.20000000000002 C 594.2 83.20000000000002 597.9 84.40000000000002 601.1 86.60000000000002 L 605.2 79.30000000000003 C 600.5 76.00000000000003 596.4000000000001 74.70000000000003 590.5 74.70000000000003 C 582.8 74.70000000000003 574.1 77.70000000000003 569.9 86.40000000000003 L 569.4 75.80000000000004 L 561.2 75.80000000000004 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 1016.49 614.96)\",\n clipPath: \"url(#CLIPPATH_40)\"\n }, _clipPath5 || (_clipPath5 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_40\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -216.48 -35.9)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-520.28, -108.05)\",\n d: \"M 496.5 104.2 C 498.2 90.2 507.8 82.30000000000001 520.7 82.30000000000001 C 533.7 82.30000000000001 544.3000000000001 90.00000000000001 544.5 104.20000000000002 L 496.5 104.20000000000002 z M 552.8 111.7 C 555.3 86.2 539.8 74.5 520.5999999999999 74.5 C 501.2999999999999 74.5 487.4999999999999 88.5 487.4999999999999 107.9 C 487.4999999999999 128.6 501.7999999999999 141.60000000000002 520.9999999999999 141.60000000000002 C 531.1999999999999 141.60000000000002 542.2999999999998 137.50000000000003 548.7999999999998 129.60000000000002 L 542.8999999999999 124.40000000000002 C 538.2999999999998 130.20000000000002 528.8999999999999 133.3 520.9999999999999 133.3 C 508.1999999999999 133.3 497.6999999999999 125.30000000000001 496.4999999999999 111.80000000000001 L 552.8 111.80000000000001 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 887.42 614.06)\",\n clipPath: \"url(#CLIPPATH_41)\"\n }, _clipPath6 || (_clipPath6 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_41\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -145.4 -35.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-449.2, -107.55)\",\n d: \"M 479.2 140.4 L 479.2 104 C 479.2 84.6 467.2 74.7 450.4 74.7 C 441.59999999999997 74.7 433.2 78.4 427.9 86.60000000000001 L 427.59999999999997 75.7 L 419.2 75.7 L 419.2 140.4 L 428 140.4 L 428 105.2 C 428 92.8 436.6 83.1 449.2 82.9 C 462.2 82.9 470.3 90.2 470.3 104.10000000000001 L 470.3 140.4 L 479.2 140.4 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 800.88 614.69)\",\n clipPath: \"url(#CLIPPATH_42)\"\n }, _clipPath7 || (_clipPath7 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_42\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -97.8 -35.75)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"rect\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n x: -4.4,\n y: -32.5,\n rx: 0,\n ry: 0,\n width: 8.8,\n height: 65\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 247.39 593.13)\",\n clipPath: \"url(#CLIPPATH_43)\"\n }, _clipPath8 || (_clipPath8 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_43\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 207.1 -23.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"polygon\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n points: \"-30.2,-43.9 -30.2,43.9 -14.2,43.9 -14.2,14.7 11,43.9 30.2,43.9 30.2,42.7 0.2,9.8 26.5,-19.6 26.5,-20.5 7.4,-20.5 -14.2,5.3 -14.2,-43.9 \"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 128.55 614.88)\",\n clipPath: \"url(#CLIPPATH_44)\"\n }, _clipPath9 || (_clipPath9 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_44\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 272.55 -35.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-31.25, -108)\",\n d: \"M 56.9 82.2 C 49.5 75.7 41.9 73.7 31.799999999999997 73.7 C 20 73.8 4.6 79 4.6 93.9 C 4.6 108.5 19.1 113 31.299999999999997 113.9 C 40.4 114.4 44.099999999999994 116.9 44.099999999999994 121.30000000000001 C 44.099999999999994 126.00000000000001 38.49999999999999 128.5 32.49999999999999 128.4 C 25.299999999999994 128.3 16.39999999999999 125.80000000000001 10.299999999999994 119.4 L 2.499999999999994 130.8 C 11.899999999999995 140.60000000000002 22.099999999999994 142.3 32.3 142.3 C 50.699999999999996 142.3 60 132.5 60 121.10000000000001 C 60 104 44.6 101.20000000000002 32.4 100.5 C 24.2 100 20.4 97.6 20.4 93.4 C 20.4 89.30000000000001 24.599999999999998 87 32.2 87 C 38.300000000000004 87 43.6 88.4 48.1 92.7 L 56.9 82.2 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 672.08 613.87)\",\n clipPath: \"url(#CLIPPATH_45)\"\n }, _clipPath10 || (_clipPath10 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_45\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -26.75 -35.3)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-330.55, -107.45)\",\n d: \"M 335 140.4 L 335 103 C 335 91.6 342.7 82.8 354.1 82.8 C 365.5 82.8 372.70000000000005 91.2 372.70000000000005 102.69999999999999 L 372.70000000000005 140.39999999999998 L 381.50000000000006 140.39999999999998 L 381.50000000000006 102.69999999999997 C 381.50000000000006 85.69999999999997 370.80000000000007 74.49999999999997 354.30000000000007 74.49999999999997 C 344.70000000000005 74.49999999999997 335.30000000000007 79.19999999999997 331.00000000000006 89.39999999999998 C 327.20000000000005 78.49999999999997 317.50000000000006 74.49999999999997 308.20000000000005 74.49999999999997 C 300.30000000000007 74.49999999999997 292.40000000000003 77.59999999999997 288.20000000000005 85.79999999999997 L 287.80000000000007 75.69999999999997 L 279.6000000000001 75.69999999999997 L 279.6000000000001 140.39999999999998 L 288.4000000000001 140.39999999999998 L 288.4000000000001 102.99999999999997 C 288.4000000000001 91.59999999999997 296.0000000000001 82.79999999999997 307.4000000000001 82.79999999999997 C 318.80000000000007 82.79999999999997 326.4000000000001 91.59999999999997 326.4000000000001 102.99999999999997 L 326.4000000000001 140.39999999999998 L 335 140.39999999999998 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 825.75 476.41)\",\n clipPath: \"url(#CLIPPATH_46)\"\n }, _clipPath11 || (_clipPath11 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_46\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -111.45 40.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(255,102,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-415.25, -31.75)\",\n d: \"M 401.6 43 C 396.5 43 392.40000000000003 47.1 392.40000000000003 52.2 C 392.40000000000003 57.300000000000004 396.50000000000006 61.400000000000006 401.6 61.400000000000006 C 406.70000000000005 61.400000000000006 410.8 57.300000000000004 410.8 52.2 C 410.8 50.900000000000006 410.5 49.6 410 48.5 L 423.9 36.8 C 425.29999999999995 37.699999999999996 427.09999999999997 38.3 428.9 38.3 C 434 38.3 438.09999999999997 34.199999999999996 438.09999999999997 29.099999999999998 C 438.09999999999997 24 433.99999999999994 19.9 428.9 19.9 C 427 19.9 425.29999999999995 20.4 423.9 21.4 L 416.29999999999995 14.999999999999998 C 416.79999999999995 13.899999999999999 417.09999999999997 12.599999999999998 417.09999999999997 11.299999999999997 C 417.09999999999997 6.1999999999999975 412.99999999999994 2.099999999999998 407.9 2.099999999999998 C 402.79999999999995 2.099999999999998 398.7 6.1999999999999975 398.7 11.299999999999997 C 398.7 16.4 402.8 20.499999999999996 407.9 20.499999999999996 C 409.79999999999995 20.499999999999996 411.5 19.899999999999995 412.9 18.999999999999996 L 420.5 25.4 C 420 26.5 419.7 27.799999999999997 419.7 29.099999999999998 C 419.7 30.4 420 31.7 420.5 32.8 L 406.6 44.5 C 405.2 43.5 403.4 43 401.6 43\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 324.46 513.27)\",\n clipPath: \"url(#CLIPPATH_47)\"\n }, _clipPath12 || (_clipPath12 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_47\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 164.6 20.05)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(255,102,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-139.2, -52.1)\",\n d: \"M 148.4 52.1 C 148.4 57.2 144.3 61.3 139.20000000000002 61.3 C 134.10000000000002 61.3 130.00000000000003 57.199999999999996 130.00000000000003 52.099999999999994 C 130.00000000000003 46.99999999999999 134.10000000000002 42.89999999999999 139.20000000000002 42.89999999999999 C 144.3 42.89999999999999 148.4 47.1 148.4 52.1\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.82 0 0 1.82 509.27 613.59)\",\n clipPath: \"url(#CLIPPATH_48)\"\n }, _clipPath13 || (_clipPath13 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_48\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 272.55 -35.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-31.25, -108)\",\n d: \"M 56.9 82.2 C 49.5 75.7 41.9 73.7 31.799999999999997 73.7 C 20 73.8 4.6 79 4.6 93.9 C 4.6 108.5 19.1 113 31.299999999999997 113.9 C 40.4 114.4 44.099999999999994 116.9 44.099999999999994 121.30000000000001 C 44.099999999999994 126.00000000000001 38.49999999999999 128.5 32.49999999999999 128.4 C 25.299999999999994 128.3 16.39999999999999 125.80000000000001 10.299999999999994 119.4 L 2.499999999999994 130.8 C 11.899999999999995 140.60000000000002 22.099999999999994 142.3 32.3 142.3 C 50.699999999999996 142.3 60 132.5 60 121.10000000000001 C 60 104 44.6 101.20000000000002 32.4 100.5 C 24.2 100 20.4 97.6 20.4 93.4 C 20.4 89.30000000000001 24.599999999999998 87 32.2 87 C 38.300000000000004 87 43.6 88.4 48.1 92.7 L 56.9 82.2 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0 0 0 0 0 0)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n style: {}\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 193.5 70.8)\",\n clipPath: \"url(#CLIPPATH_49)\"\n }, _clipPath14 || (_clipPath14 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_49\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 109.95 1.15)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-193.85, -71)\",\n d: \"M 193.8 2.1 L 193.8 2.1 C 198.20000000000002 2.1 201.8 5.7 201.8 10.1 L 201.8 139.9 L 185.9 139.9 L 185.9 10.1 C 185.8 5.7 189.4 2.1 193.8 2.1\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 166.2 81.05)\",\n clipPath: \"url(#CLIPPATH_50)\"\n }, _clipPath15 || (_clipPath15 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_50\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 137.25 -9.1)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-166.55, -81.25)\",\n d: \"M 166.5 22.6 L 166.5 22.6 C 170.9 22.6 174.5 26.200000000000003 174.5 30.6 L 174.5 139.9 L 158.6 139.9 L 158.6 30.5 C 158.5 26.1 162.1 22.6 166.5 22.6\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 138.9 107.5)\",\n clipPath: \"url(#CLIPPATH_51)\"\n }, _clipPath16 || (_clipPath16 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_51\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 164.55 -35.55)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-139.25, -107.7)\",\n d: \"M 139.2 75.5 L 139.2 75.5 C 143.6 75.5 147.2 79.1 147.2 83.5 L 147.2 139.9 L 131.29999999999998 139.9 L 131.29999999999998 83.4 C 131.3 79.1 134.9 75.5 139.2 75.5\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 582.85 107.35)\",\n clipPath: \"url(#CLIPPATH_52)\"\n }, _clipPath17 || (_clipPath17 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_52\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -279.4 -35.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-583.2, -107.55)\",\n d: \"M 561.2 75.7 L 561.2 140.4 L 570 140.4 L 570 103.60000000000001 C 570 91.80000000000001 578.9 83.30000000000001 590 83.20000000000002 C 594.2 83.20000000000002 597.9 84.40000000000002 601.1 86.60000000000002 L 605.2 79.30000000000003 C 600.5 76.00000000000003 596.4000000000001 74.70000000000003 590.5 74.70000000000003 C 582.8 74.70000000000003 574.1 77.70000000000003 569.9 86.40000000000003 L 569.4 75.80000000000004 L 561.2 75.80000000000004 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 519.93 107.85)\",\n clipPath: \"url(#CLIPPATH_53)\"\n }, _clipPath18 || (_clipPath18 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_53\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -216.48 -35.9)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-520.28, -108.05)\",\n d: \"M 496.5 104.2 C 498.2 90.2 507.8 82.30000000000001 520.7 82.30000000000001 C 533.7 82.30000000000001 544.3000000000001 90.00000000000001 544.5 104.20000000000002 L 496.5 104.20000000000002 z M 552.8 111.7 C 555.3 86.2 539.8 74.5 520.5999999999999 74.5 C 501.2999999999999 74.5 487.4999999999999 88.5 487.4999999999999 107.9 C 487.4999999999999 128.6 501.7999999999999 141.60000000000002 520.9999999999999 141.60000000000002 C 531.1999999999999 141.60000000000002 542.2999999999998 137.50000000000003 548.7999999999998 129.60000000000002 L 542.8999999999999 124.40000000000002 C 538.2999999999998 130.20000000000002 528.8999999999999 133.3 520.9999999999999 133.3 C 508.1999999999999 133.3 497.6999999999999 125.30000000000001 496.4999999999999 111.80000000000001 L 552.8 111.80000000000001 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 448.85 107.35)\",\n clipPath: \"url(#CLIPPATH_54)\"\n }, _clipPath19 || (_clipPath19 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_54\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -145.4 -35.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-449.2, -107.55)\",\n d: \"M 479.2 140.4 L 479.2 104 C 479.2 84.6 467.2 74.7 450.4 74.7 C 441.59999999999997 74.7 433.2 78.4 427.9 86.60000000000001 L 427.59999999999997 75.7 L 419.2 75.7 L 419.2 140.4 L 428 140.4 L 428 105.2 C 428 92.8 436.6 83.1 449.2 82.9 C 462.2 82.9 470.3 90.2 470.3 104.10000000000001 L 470.3 140.4 L 479.2 140.4 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 401.25 107.7)\",\n clipPath: \"url(#CLIPPATH_55)\"\n }, _clipPath20 || (_clipPath20 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_55\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -97.8 -35.75)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"rect\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n x: -4.4,\n y: -32.5,\n rx: 0,\n ry: 0,\n width: 8.8,\n height: 65\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 96.35 95.8)\",\n clipPath: \"url(#CLIPPATH_56)\"\n }, _clipPath21 || (_clipPath21 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_56\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 207.1 -23.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"polygon\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n points: \"-30.2,-43.9 -30.2,43.9 -14.2,43.9 -14.2,14.7 11,43.9 30.2,43.9 30.2,42.7 0.2,9.8 26.5,-19.6 26.5,-20.5 7.4,-20.5 -14.2,5.3 -14.2,-43.9 \"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 30.9 107.8)\",\n clipPath: \"url(#CLIPPATH_57)\"\n }, _clipPath22 || (_clipPath22 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_57\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 272.55 -35.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-31.25, -108)\",\n d: \"M 56.9 82.2 C 49.5 75.7 41.9 73.7 31.799999999999997 73.7 C 20 73.8 4.6 79 4.6 93.9 C 4.6 108.5 19.1 113 31.299999999999997 113.9 C 40.4 114.4 44.099999999999994 116.9 44.099999999999994 121.30000000000001 C 44.099999999999994 126.00000000000001 38.49999999999999 128.5 32.49999999999999 128.4 C 25.299999999999994 128.3 16.39999999999999 125.80000000000001 10.299999999999994 119.4 L 2.499999999999994 130.8 C 11.899999999999995 140.60000000000002 22.099999999999994 142.3 32.3 142.3 C 50.699999999999996 142.3 60 132.5 60 121.10000000000001 C 60 104 44.6 101.20000000000002 32.4 100.5 C 24.2 100 20.4 97.6 20.4 93.4 C 20.4 89.30000000000001 24.599999999999998 87 32.2 87 C 38.300000000000004 87 43.6 88.4 48.1 92.7 L 56.9 82.2 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 330.2 107.25)\",\n clipPath: \"url(#CLIPPATH_58)\"\n }, _clipPath23 || (_clipPath23 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_58\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -26.75 -35.3)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-330.55, -107.45)\",\n d: \"M 335 140.4 L 335 103 C 335 91.6 342.7 82.8 354.1 82.8 C 365.5 82.8 372.70000000000005 91.2 372.70000000000005 102.69999999999999 L 372.70000000000005 140.39999999999998 L 381.50000000000006 140.39999999999998 L 381.50000000000006 102.69999999999997 C 381.50000000000006 85.69999999999997 370.80000000000007 74.49999999999997 354.30000000000007 74.49999999999997 C 344.70000000000005 74.49999999999997 335.30000000000007 79.19999999999997 331.00000000000006 89.39999999999998 C 327.20000000000005 78.49999999999997 317.50000000000006 74.49999999999997 308.20000000000005 74.49999999999997 C 300.30000000000007 74.49999999999997 292.40000000000003 77.59999999999997 288.20000000000005 85.79999999999997 L 287.80000000000007 75.69999999999997 L 279.6000000000001 75.69999999999997 L 279.6000000000001 140.39999999999998 L 288.4000000000001 140.39999999999998 L 288.4000000000001 102.99999999999997 C 288.4000000000001 91.59999999999997 296.0000000000001 82.79999999999997 307.4000000000001 82.79999999999997 C 318.80000000000007 82.79999999999997 326.4000000000001 91.59999999999997 326.4000000000001 102.99999999999997 L 326.4000000000001 140.39999999999998 L 335 140.39999999999998 z\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 414.9 31.55)\",\n clipPath: \"url(#CLIPPATH_59)\"\n }, _clipPath24 || (_clipPath24 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_59\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 -111.45 40.4)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(255,102,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-415.25, -31.75)\",\n d: \"M 401.6 43 C 396.5 43 392.40000000000003 47.1 392.40000000000003 52.2 C 392.40000000000003 57.300000000000004 396.50000000000006 61.400000000000006 401.6 61.400000000000006 C 406.70000000000005 61.400000000000006 410.8 57.300000000000004 410.8 52.2 C 410.8 50.900000000000006 410.5 49.6 410 48.5 L 423.9 36.8 C 425.29999999999995 37.699999999999996 427.09999999999997 38.3 428.9 38.3 C 434 38.3 438.09999999999997 34.199999999999996 438.09999999999997 29.099999999999998 C 438.09999999999997 24 433.99999999999994 19.9 428.9 19.9 C 427 19.9 425.29999999999995 20.4 423.9 21.4 L 416.29999999999995 14.999999999999998 C 416.79999999999995 13.899999999999999 417.09999999999997 12.599999999999998 417.09999999999997 11.299999999999997 C 417.09999999999997 6.1999999999999975 412.99999999999994 2.099999999999998 407.9 2.099999999999998 C 402.79999999999995 2.099999999999998 398.7 6.1999999999999975 398.7 11.299999999999997 C 398.7 16.4 402.8 20.499999999999996 407.9 20.499999999999996 C 409.79999999999995 20.499999999999996 411.5 19.899999999999995 412.9 18.999999999999996 L 420.5 25.4 C 420 26.5 419.7 27.799999999999997 419.7 29.099999999999998 C 419.7 30.4 420 31.7 420.5 32.8 L 406.6 44.5 C 405.2 43.5 403.4 43 401.6 43\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 138.85 51.9)\",\n clipPath: \"url(#CLIPPATH_60)\"\n }, _clipPath25 || (_clipPath25 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_60\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 164.6 20.05)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(255,102,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-139.2, -52.1)\",\n d: \"M 148.4 52.1 C 148.4 57.2 144.3 61.3 139.20000000000002 61.3 C 134.10000000000002 61.3 130.00000000000003 57.199999999999996 130.00000000000003 52.099999999999994 C 130.00000000000003 46.99999999999999 134.10000000000002 42.89999999999999 139.20000000000002 42.89999999999999 C 144.3 42.89999999999999 148.4 47.1 148.4 52.1\",\n strokeLinecap: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1 0 0 1 239.9 106.8)\",\n clipPath: \"url(#CLIPPATH_61)\"\n }, _clipPath26 || (_clipPath26 = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"CLIPPATH_61\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n transform: \"matrix(1 0 0 1 272.55 -35.85)\",\n id: \"SVGID_2_\",\n x: -303.8,\n y: -72.15,\n rx: 0,\n ry: 0,\n width: 607.6,\n height: 144.3\n }))), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeDashoffset: 0,\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 4,\n fill: \"rgb(0,0,0)\",\n fillRule: \"evenodd\",\n opacity: 1\n },\n vectorEffect: \"non-scaling-stroke\",\n transform: \" translate(-31.25, -108)\",\n d: \"M 56.9 82.2 C 49.5 75.7 41.9 73.7 31.799999999999997 73.7 C 20 73.8 4.6 79 4.6 93.9 C 4.6 108.5 19.1 113 31.299999999999997 113.9 C 40.4 114.4 44.099999999999994 116.9 44.099999999999994 121.30000000000001 C 44.099999999999994 126.00000000000001 38.49999999999999 128.5 32.49999999999999 128.4 C 25.299999999999994 128.3 16.39999999999999 125.80000000000001 10.299999999999994 119.4 L 2.499999999999994 130.8 C 11.899999999999995 140.60000000000002 22.099999999999994 142.3 32.3 142.3 C 50.699999999999996 142.3 60 132.5 60 121.10000000000001 C 60 104 44.6 101.20000000000002 32.4 100.5 C 24.2 100 20.4 97.6 20.4 93.4 C 20.4 89.30000000000001 24.599999999999998 87 32.2 87 C 38.300000000000004 87 43.6 88.4 48.1 92.7 L 56.9 82.2 z\",\n strokeLinecap: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSmLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/smLogo.561e3cb0.svg\";\nexport { ForwardRef as ReactComponent };","import {\n AppBar,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Toolbar,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\nimport { API } from \"aws-amplify\";\nimport React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { fetchCandidateDetails } from \"../../../actions/candidates_actions\";\nimport config from \"../../../config\";\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n\n title: {\n marginLeft: 20,\n marginTop: 10,\n fontSize: 28,\n },\n subtitle: {\n //fontSize: 28\n marginLeft: 20,\n marginTop: 8,\n },\n subtitle2: {\n fontSize: 16,\n marginLeft: 0,\n marginTop: 30,\n marginBottom: 10,\n },\n sectionTitle: {\n marginTop: 40,\n marginBottom: 20,\n },\n center: {\n textAlign: \"center\",\n display: \"block\",\n paddingTop: 14,\n border: \"1px solid #ddd\",\n },\n graphBg: {\n backgroundColor: \"#fbfbfb\",\n border: \"1px solid #e8e8e8\",\n },\n subheading: {\n marginLeft: 20,\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#444\",\n },\n heading: {\n fontWeight: 500,\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(16),\n flexBasis: \"10%\",\n flexShrink: 0,\n },\n heading1: {\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(16),\n marginLeft: 20,\n },\n subheading1: {\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#666\",\n marginLeft: 10,\n display: \"inline-block\",\n },\n\n resultText: {\n fontSize: theme.typography.pxToRem(14),\n },\n resultText1: {\n fontSize: theme.typography.pxToRem(14),\n marginTop: 20,\n marginBottom: 20,\n marginLeft: 20,\n },\n divid: {\n marginBottom: 20,\n marginTop: 20,\n },\n reassess: {\n marginLeft: 15,\n marginTop: 15,\n },\n itemre: {\n marginTop: 10,\n marginBottom: 5,\n },\n header: {\n padding: theme.spacing(3),\n },\n avatarlarge: {\n width: theme.spacing(7),\n height: theme.spacing(7),\n marginRight: theme.spacing(1),\n },\n light: {\n color: \"#666\",\n },\n smallicons: {\n color: \"#666\",\n },\n itemtitle: {\n fontSize: 12,\n },\n prog: {\n marginTop: -12,\n },\n itemgrid: {\n minHeight: 22,\n marginBottom: theme.spacing(1),\n },\n name: {\n maxWidth: 400,\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n});\n\nconst AlertDialog = ({ onClose, title, content }) => (\n <Dialog open onClose={onClose}>\n <DialogTitle id=\"alert-dialog-title\">{title}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {content}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\" autoFocus>\n OK\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nexport const OtherAssessmentsView = (props) => {\n const {\n classes,\n portaldetails,\n candidates: {\n selectedCandidateData: {\n activeIntervention,\n interventions: candidateInterventions = {},\n isInterventionOngoing,\n reAssessmentDue,\n userID,\n assessmentCompleted,\n fullName,\n },\n },\n fetchCandidateDetails,\n isOnPrintMode,\n } = props;\n const { interventions: organizationInterventions } = portaldetails;\n const [isPending, setPendingStatus] = useState(false);\n const [isSucceeded, setIsSucceeded] = useState(false);\n const [error, setError] = useState(false);\n\n const pushIntervention = async (candidateId, interventionId) => {\n setPendingStatus(true);\n try {\n const response = await API.post(\n config.API_NAME,\n `/keyworker/candidate/${candidateId}/intervention`,\n {\n body: {\n interventionID: interventionId,\n },\n }\n );\n if (response.message) {\n setError(response.message);\n setPendingStatus(false);\n return;\n }\n setIsSucceeded(true);\n setPendingStatus(false);\n } catch (error) {\n console.log(error);\n setPendingStatus(false);\n }\n };\n\n const totalInterventionIds = new Set(\n (\n organizationInterventions.filter((intervention) => intervention.active) ||\n []\n ).map((i) => i.sort)\n );\n if (activeIntervention) {\n totalInterventionIds.add(activeIntervention.sort);\n }\n if (Object.keys(candidateInterventions).length > 0) {\n totalInterventionIds.add(...Object.keys(candidateInterventions));\n }\n\n const interventions = Array.from(totalInterventionIds).map(\n (interventionId) => {\n let status = \"Not Started\";\n let distance_travelled = \"\";\n if (activeIntervention && interventionId === activeIntervention.sort) {\n status = \"Awaiting Start\";\n }\n if (candidateInterventions[interventionId]) {\n distance_travelled = \"0%\";\n if (Number(candidateInterventions[interventionId].initialScore) >= 0) {\n status = \"IA Completed\";\n }\n if (Number(candidateInterventions[interventionId].finalScore) >= 0) {\n status = \"Reassessment Completed\";\n }\n if (\n Number(candidateInterventions[interventionId].finalScore) >\n Number(candidateInterventions[interventionId].initialScore)\n ) {\n distance_travelled =\n ((candidateInterventions[interventionId].finalScore -\n candidateInterventions[interventionId].initialScore) /\n 10) *\n 100 +\n \"%\";\n }\n if ((candidateInterventions[interventionId].type || 0) === 3) {\n status = \"Not Started\";\n distance_travelled = \"\";\n const org = organizationInterventions.find(\n ({ sort }) => sort === interventionId\n );\n if (org) {\n status = \"Started\";\n }\n if (\n (\n candidateInterventions[interventionId].status || \"\"\n ).toLowerCase() === \"complete\"\n ) {\n status = \"Completed\";\n }\n }\n }\n\n return {\n ...organizationInterventions.find(\n ({ sort }) => sort === interventionId\n ),\n ...candidateInterventions[interventionId],\n distance_travelled,\n status,\n };\n }\n );\n\n if (!assessmentCompleted) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <Typography variant=\"subtitle2\">\n This candidate has not completed the assessment yet.\n </Typography>\n </Grid>\n </Grid>\n );\n }\n return (\n <Grid container direction=\"column\">\n <Grid item xs>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Interventions\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item xs>\n <Table>\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n {!isOnPrintMode && <TableCell>Push</TableCell>}\n <TableCell>Status</TableCell>\n <TableCell>Initial Score</TableCell>\n <TableCell>Final Score</TableCell>\n <TableCell>Distance Travelled</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {interventions\n .filter((i) => i.type === 2)\n .map(\n ({\n title,\n sort,\n status,\n initialScore,\n finalScore,\n distance_travelled,\n type,\n }) => {\n const showSendCTA = !isOnPrintMode && type !== 3;\n return (\n <TableRow key={sort}>\n <TableCell>{title}</TableCell>\n\n <TableCell>\n {showSendCTA ? (\n <Button\n disabled={\n isPending ||\n reAssessmentDue ||\n isInterventionOngoing\n }\n variant=\"outlined\"\n color=\"primary\"\n className={classes.button}\n onClick={() => pushIntervention(userID, sort)}\n endIcon={<ArrowForwardIcon />}\n >\n Send\n </Button>\n ) : null}\n </TableCell>\n\n <TableCell>{status}</TableCell>\n <TableCell>{initialScore}</TableCell>\n <TableCell>{finalScore}</TableCell>\n <TableCell>{distance_travelled}</TableCell>\n </TableRow>\n );\n }\n )}\n </TableBody>\n </Table>\n </Grid>\n {!!error ? (\n <AlertDialog\n title={`Couldn't send push`}\n content={error}\n onClose={() => setError(null)}\n />\n ) : null}\n {!!isSucceeded ? (\n <AlertDialog\n title={`Push sent succesfully`}\n content={`Intervention has been pushed to ${fullName} successfully`}\n onClose={async () => {\n setPendingStatus(true);\n try {\n await fetchCandidateDetails(\n props.candidates.selectedCandidateData\n );\n } catch (error) {\n console.log(error);\n } finally {\n setIsSucceeded(false);\n setPendingStatus(false);\n }\n }}\n />\n ) : null}\n </Grid>\n );\n};\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators({ fetchCandidateDetails }, dispatch),\n dispatch,\n };\n}\n\nexport const OtherAssessments = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(OtherAssessmentsView));\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport {\n BarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer\n} from \"recharts\";\n\nconst styles = {\n card: {\n minWidth: 275\n },\n cardContent: {\n minWidth: 275,\n height: 200,\n width: \"100%\"\n },\n labelsContent: {},\n labelItem: {\n marginTop: \"2rem\",\n textAlign: \"left\",\n fontSize: 12,\n paddingLeft: 10,\n fontWeight: \"bold\"\n }\n};\nfunction AssessmentCard(props) {\n const { classes, data, dataKey, hasDoneMultipleAssessments } = props;\n const domain = [0, 100];\n\n return (\n <Grid container spacing={0}>\n <Grid item xs={2} className={classes.labelsContent}>\n {data.map(item => {\n return (\n <p className={classes.labelItem} key={item.name}>\n {item[dataKey]}\n </p>\n );\n })}\n </Grid>\n <Grid item xs={10} className={classes.cardContent}>\n <ResponsiveContainer width={\"100%\"}>\n <BarChart\n data={data}\n layout=\"vertical\"\n margin={{\n top: 5,\n right: 0,\n left: 0,\n bottom: 5\n }}\n barSize={10}\n >\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis type=\"number\" domain={domain} />\n <YAxis\n type=\"category\"\n dataKey={dataKey}\n tickFormatter={() => {\n return \"\";\n }}\n />\n {/*<YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n reversed\n domain={domain}\n ticks={ticksY}\n tickCount={100}\n tickFormatter={toPercent}\n />*/}\n <Tooltip />\n <Legend verticalAlign=\"top\" wrapperStyle={{ paddingBottom: 15 }} />\n <Bar name=\"Latest Assessment\" dataKey=\"latest\" fill=\"#ff6505\" />\n {hasDoneMultipleAssessments ? (\n <Bar name=\"Initial Assessment\" dataKey=\"first\" fill=\"#696969\" />\n ) : null}\n </BarChart>\n </ResponsiveContainer>\n </Grid>\n </Grid>\n );\n}\n\nAssessmentCard.propTypes = {\n classes: PropTypes.object.isRequired,\n data: PropTypes.array.isRequired,\n dataKey: PropTypes.string.isRequired\n};\n\nexport default withStyles(styles)(AssessmentCard);\n","import { withStyles } from \"@material-ui/core/styles\";\nimport _ from \"lodash\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n ResponsiveContainer,\n Tooltip\n} from \"recharts\";\n\nconst styles = {\n card: {\n minWidth: 275\n },\n cardContent: {\n minWidth: 275,\n height: 400,\n width: \"100%\"\n },\n labelsContent: {},\n labelItem: {\n marginTop: \"5rem\",\n textAlign: \"left\"\n }\n};\n\nfunction SummaryRadarCard(props) {\n const { data, dataKey } = props;\n let assoArr = {};\n _.each(data, (i) => {\n assoArr[i.name] = {\n name: i.name,\n first: i.first,\n }\n if (i.latest) assoArr[i.name].latest = i.latest;\n });\n\n let order = [\"Complexity\", \"Speed\", \"Accuracy\", \"Adaptability\", \"Responsiveness\", \"Learning\", \"Confidence\", \"Control\", \"Commitment\"];\n let arr = [];\n _.each(order, (i) => {\n if (assoArr[i]) {\n arr.push(assoArr[i]);\n }\n });\n\n return (\n <ResponsiveContainer height={400}>\n <RadarChart data={arr}>\n <PolarGrid />\n <PolarAngleAxis dataKey={dataKey} />\n <PolarRadiusAxis domain={[0, 100]} angle={70} />\n {\n <Radar\n name=\"Initial Assessment\"\n dataKey=\"first\"\n stroke=\"#696969\"\n fill=\"#000000\"\n strokeWidth={3}\n fillOpacity={0.1}\n />\n }\n <Radar\n name=\"Latest Assessment\"\n dataKey=\"latest\"\n stroke=\"#ff6505\"\n fill=\"#ff6505\"\n strokeWidth={3}\n fillOpacity={0.1}\n />\n <Legend /> <Tooltip />\n </RadarChart>\n </ResponsiveContainer>\n );\n}\n\nSummaryRadarCard.propTypes = {\n classes: PropTypes.object.isRequired,\n data: PropTypes.array.isRequired,\n dataKey: PropTypes.string.isRequired\n};\n\nexport default withStyles(styles)(SummaryRadarCard);\n","var definitions = {\n analytical_capacity_TTT:\n \"[Name] is likely to be able to solve complex problems quickly and accurately. They may be suited to roles where there are many decisions to be made and different factors to consider, particularly where there is incomplete or ambiguous information.\",\n analytical_capacity_TUT:\n \"[Name] is likely to have some skills in this area, in particular they tend to be drawn to complex problems. They take a cautious, precise approach and risk delaying decisions. [Name] may be suited to roles where there are complex problems to solve and accuracy is more important than speed.\",\n analytical_capacity_TTU:\n \"[Name] is likely to have some skills in this area, in particular dealing with complex problems and making decisions at speed. They risk making decisions too quickly, and could make mistakes, however. [Name] could be suited to roles where there are complex problems with ambiguous or incomplete information, where speed is more important than accuracy.\",\n analytical_capacity_TUU:\n \"[Name] is likely to have some skills in this area, in particular they tend to be drawn to complex problems, but they risk taking too long analysing the issues, and may not make decisions. They may be suited to roles where there are complex problems to consider and debate, where there is less pressure to make any decisions. \",\n analytical_capacity_UTT:\n \"[Name] is likely to have some skills in this area, in particular they tend to enjoy solving problems where there are clear rules and solutions. [Name] makes decisions quickly and accurately, but tends to avoid dealing with complex problems. They may be suited to roles where there are straightforward issues to deal with. \",\n analytical_capacity_UUT:\n \"[Name] is likely to have some skills in this area, in particular they tend to enjoy solving problems where there are clear rules and solutions. [Name] takes a cautious, precise approach that could risk delaying decisions. They may be suited to roles where there are detailed problems to solve and accuracy is more important than speed.\",\n analytical_capacity_UUU:\n \"[Name] may struggle to make accurate and quick decisions, particularly where there is new, ambiguous or incomplete information. [Name] may be suited to roles that require more routine tasks, or those where they can draw upon prior knowledge and experience.\",\n analytical_capacity_UTU:\n \"[Name] is likely to have some skills in this area, in particular they tend to enjoy solving problems where there are clear rules and solutions. [Name] risks making decisions too quickly however, and could make mistakes. They may be suited to roles where there are quick, straightforward problems to solve.\",\n\n learning_agility_TTT:\n \"[Name] is likely to enjoy learning, seek and adapt to feedback, and respond positively to new situations They can be expected to seek advice, try new techniques to address issues, and recognise when one approach isn't working. [Name] could be suited to roles where there is frequent change, uncertainty and lots of variety. They are also likely to do well in a role where they have little or no technical experience.\",\n learning_agility_TUT:\n \"[Name] is likely to have some skills in this area, in particular they tend to respond positively to feedback, and are likely to be self-aware. They learn quickly, but might find it hard to adapt to change. [Name] could be suited to roles where there are plenty of opportunities for self-development, but also some level of stability.\",\n learning_agility_TTU:\n \"[Name] is likely to have some skills in this area, in particular they respond positively to feedback, and adapt quickly. However, they risk relying on one learning style, for example learning by rote, or by trial and error, which could delay their learning. [Name] could be suited to roles where there is frequent change.\",\n learning_agility_TUU:\n \"[Name] is likely to have some skills in this area, in particular they tend to respond positively to feedback, and are likely to be self-aware. [Name] might find it difficult to adapt however, relying on default styles or approaches. They could be suited to roles where there are clear instructions and opportunities for feedback.\",\n learning_agility_UTT:\n \"[Name] is likely to have some skills in this area, in particular they learn quickly in new situations and are quite self-sufficient. [Name] recognises when one approach isn't working, and is willing to adapt, but they may not respond favourably to feedback or advice. They could be suited to roles where a flexible, independent approach is required.\",\n learning_agility_UUT:\n \"[Name] is likely to have some skills in this area, in particular they learn quickly in new situations and can be quite self-sufficient. However, they may not adapt to external change, or respond favourably to feedback or advice. [Name] could be suited to roles where there are new challenges that require an independent approach.\",\n learning_agility_UUU:\n \"[Name] tends to prefer predictable environments and they could struggle to adapt or learn new techniques quickly. [Name] may be resistant to feedback, or have low-self-awareness. They could be suited to roles where there is a clear process, within their current profession, or where they can apply their existing skills and style.\",\n learning_agility_UTU: \"\",\n\n resilience_TTT:\n \"[Name] is likely to be able manage their emotions, set and achieve challenging goals, and be self-confident. They may be suited to roles where there are many challenges, potential setbacks, and rejection. [Name] is likely to have the confidence to try different roles, and their resilience will help them keep trying despite obstacles.\",\n resilience_TUT:\n \"[Name] is likely to have some skills in this area, in particular they appear to be able to control their emotions and remain optimistic and confident. They seem to prefer not to commit to challenging goals, and may be suited to roles where there are achievable targets.\",\n resilience_TTU:\n \"[Name] is likely to have some skills in this area, in particular they appear to have good emotional control, and the determination to persevere despite setbacks. [Name] may currently be experiencing low self-confidence, which could be preventing them from taking risks. In the short-term they may be suited to roles where they can build self-confidence and then take on roles where there are more challenges and stretched goals.\",\n resilience_TUU:\n \"[Name] is likely to have some skills in this area, in particular they appear to be able to control their emotions and remain optimistic. They may currently be experiencing low self-confidence, and have possibly given up on their goals. [Name] may be suited to roles where there are plenty of opportunities for praise and reassurance to keep them motivated.\",\n resilience_UTT:\n \"[Name] is likely to have some skills in this area, in particular they enjoy setting and achieving challenging goals. They are self-confident, but may find it difficult to manage their emotions when things go wrong. [Name] is likely to have the confidence to try different roles as long as there aren't too many potential setbacks.\",\n resilience_UUT:\n \"[Name] is likely to have some skills in this area, in particular they demonstrate self-confidence and high self-esteem. They might find it difficult to remain calm under pressure, or stick to their goals when there are setbacks. [Name] may be suited to roles where there are achievable targets and little pressure.\",\n resilience_UUU:\n \"[Name] may find it difficult to deal with pressure, and could be avoiding setting themselves goals, or addressing conflict. They may currently be experiencing low self-confidence, and therefore could be feeling pessimistic about the future. Resilience is something that can be developed, but in the meantime, [Name] may be suited to roles where there are achievable targets and little pressure.\",\n resilience_UTU:\n \"[Name] is likely to have some skills in this area, in particular they enjoy setting and achieving challenging goals. They may find it difficult to deal with pressure, and could be currently experiencing low self-confidence. In the short-term [Name] may be suited to roles where they can build their self-confidence in a low pressure environment.\",\n\n SPC_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may struggle to solve complex problems, where there are a number of different variables. [Name] may miss opportunities to scan across different issues and identify patterns, root causes and long-term consequences. They can be expected to work better where there is certainty, complete information, and straightforward decisions to be made.\",\n SPC_talented_definition:\n \"[Name]'s results suggest that this is an area of strength for them. They are likely to be able to solve complex problems, where there are a number of different variables. [Name] may be good at scanning across different issues and identifying patterns, root causes, and long-term consequences. They can be expected to work well with ambiguity, and may be effective at a strategic level.\",\n SPC_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They risk over-complicating issues that require just a pragmatic solution. [Name] may also find it difficult to explain complex issues to other people, assuming that the issue is obvious. \",\n\n DMA_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They are likely to be slower at analysing information, and take time to make decisions. [Name] can be expected to work well in an environment where there is little pressure or need to make decisions.\",\n DMA_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to be able to quickly analyse information, and make fast decisions. [Name] can be expected to work well in a fast-paced environment, where timely decisions are critical, where there is not enough time to craft the perfect solution. \",\n DMA_overuse_definition:\n \"Due to their high score in this are, [Name] should watch out for over-use of this skill. They risk making decisions too quickly, and missing the opportunity to explore alternatives. [Name] also may neglect to involve others in decision-making, or seek their buy-in before moving forward.\",\n\n PSA_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may overlook details and make errors when analysing information. [Name] may misjudge issues and make mistakes when solving problems. They can be expected to work better in roles where intuition and experience are more important than precision. \",\n PSA_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to be able to assimilate and analyse information carefully and solve problems accurately. [Name] can be expected to work well in environments where precision is important, and where it is critical to take the time to find the best solution.\",\n PSA_overuse_definition:\n \"Due to their high score in this are, [Name] should watch out for over-use of this skill. They risk focusing so much on the accuracy of the solution, that they could neglect other issues, such as speed or intuition. [Name] may also find it difficult to change their mind once they have reached a conclusion on an issue.\",\n\n RTF_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may miss opportunities to seek out feedback and advice from others. [Name] might not fully reflect on their mistakes, and could lack insight about their own development needs. As a result, they might take a while to develop themself.\",\n RTF_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to seek out feedback and advice from others in order to improve their self-awareness and to help them learn. [Name] can be expected to be open to others' input, and be interested in their own development.\",\n RTF_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They risk over-analysing feedback, and dwelling too long on mistakes. [Name] could become reliant on others for advice, take feedback too literally and be inconstant in their approach as they try to respond to every suggestion.\",\n\n ADY_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may resist change, and tend to prefer predictability and stability. [Name] could take a while to adapt to new situations, insisting on taking the same approach. They are likely to work well in environments where there is little change, where a traditional approach is required.\",\n ADY_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to enjoy variety and seek out opportunities for change. [Name] can be expected to adapt effectively in new situations, and look for new ways to do things better. They are likely to work well in constantly changing environments\",\n ADY_overuse_definition:\n \"Due to [Name]'s high score in this area, they should watch out for over-use of this skill. They risk getting bored in environments where there is insufficient variety, and they may avoid routine tasks. [Name] may end up looking for improvements where none are needed, and focus too much on starting initiatives without completing them.\",\n\n RLS_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may take a while to learn new things, or rely on one style of learning For example, they could rely on learning through trial and error, or prefer to learn by rote or following instructions. [Name] is likely to work better in environments where they can use their existing skills as opposed to needing to learn new ones.\",\n RLS_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to learn new things quickly, using a range of techniques. [Name] probably has a good memory, but knows when a new approach is needed that requires them to think through the options, or experiment with different approaches. They are likely to enjoy learning, and respond well to new challenges .\",\n RLS_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They risk constantly looking for learning opportunities without fully developing existing skills. [Name] may also expect others to learn as quickly as they do, getting frustrated if they don't pick up new skills readily.\",\n\n CONT_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They may find it difficult to remain calm and control their emotions when under pressure. [Name] tends to take a pessimistic view, assuming that things will go wrong. They could struggle to read others' emotions and is likely to avoid interpersonal conflict. [Name] can be expected to work better in a relaxed environment where there are limited pressures.\",\n CONT_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They are likely to be able to manage their own emotions when under pressure, remain optimistic, and have a high degree of emotional intelligence. [Name] can be expected to work well in challenging situations, particularly where there are frequent setbacks or interpersonal conflict.\",\n CONT_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They risk being too optimistic, calm and controlled, missing opportunities to show their true emotions. Due to their ability to cope well with stress, they may not recognise how pressure negatively affects others.\",\n\n COMM_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They are unlikely to be motivated by challenging goals, and they tend to avoid taking personal risks. [Name] may find that they give up when things get difficult and they risk letting others down by not keeping to their commitments when under pressure. They can be expected to work better in environments where there are realistic goals and standards to meet.\",\n COMM_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They enjoy setting challenging goals and are likely to work hard to achieve them. [Name] tends to be determined, and strives to keep their promises. They are willing to take some calculated risks in order to stretch themself and meet their commitments. [Name] can be expected to work well in competitive environments where there are opportunities to set and achieve tangible goals.\",\n COMM_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They may take too many risks and over-stretch themself and others. [Name] could put too much pressure on themself and others to deliver to unrealistic deadlines, and feel disappointed when this isn't achieved.\",\n\n CONF_underskilled_definition:\n \"[Name]'s results suggest that this is an area for development. They tend to assume that they will fail, and they currently lack confidence in their skills. [Name] may not think that they deserves success, and they probably have low self-esteem at the moment. Their confidence could be improved by working in environments where they will be able to enjoy success and receive praise for their accomplishments \",\n CONF_talented_definition:\n \"[Name]'s results suggest that this is an area of strength. They have the belief that they can succeed, or acquire the skills necessary to succeed. [Name] is likely to be self-confident and have high self-esteem, recognising that they deserve success. They can be expected to work well in positions of responsibility or where it is important to influence, negotiate, or persuade. \",\n CONF_overuse_definition:\n \"Due to their high score in this area, [Name] should watch out for over-use of this skill. They risk being over-confident and could find it difficult to admit their faults. They may have an inflated opinion of themself or their ideas, and they may spend more time trying to convince others than listening to their opinion.\"\n};\n\nexport function getDefinition(definition, score, name) {\n var t = definitions[definition + \"_\" + score];\n if (t) {\n return t.split(\"[Name]\").join(name);\n } else {\n return \"\";\n }\n}\n\nexport function getSkill(skill, score, name) {\n var t = definitions[skill + \"_\" + score + \"_definition\"];\n\n if (t) {\n return t.split(\"[Name]\").join(name);\n } else {\n return \"\";\n }\n}\n","import {\n Divider,\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Typography\n} from \"@material-ui/core\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport React, { useEffect, useState } from \"react\";\n\nexport const ConstructExpansionPanel = ({\n classes,\n children,\n constructTitle,\n constructDescription,\n constructSummary,\n titleColor,\n defaultExpanded\n}) => {\n const [isExpanded, toggleExpansion] = useState(false);\n\n useEffect(() => {\n toggleExpansion(defaultExpanded);\n }, [defaultExpanded]);\n\n return (\n <ExpansionPanel\n onChange={(_, isExpanded) => toggleExpansion(isExpanded)}\n elevation={1}\n expanded={defaultExpanded || isExpanded}\n >\n <ExpansionPanelSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n >\n <Typography\n className={classes.heading}\n style={{ color: titleColor ? titleColor : \"\" }}\n >\n {constructTitle}\n </Typography>\n <Typography className={classes.subheading}>\n {constructDescription}\n </Typography>\n </ExpansionPanelSummary>\n\n <ExpansionPanelDetails style={{display:\"block\"}}>\n <div>\n {typeof constructSummary === \"function\" ? (\n <Typography className={classes.subheading1}>\n {constructSummary()}\n </Typography>\n ) : (\n <Typography className={classes.subheading1}>\n {constructSummary}\n </Typography>\n )}\n\n <Divider className={classes.divid} />\n {children}\n </div>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n );\n};\n","import { Typography } from \"@material-ui/core\";\nimport React from \"react\";\n\nexport const DimensionDetail = ({ classes, title, description, summary }) => (\n <>\n <Typography className={classes.heading1}>\n {title}\n <Typography className={classes.subheading1} variant=\"body2\" component=\"span\">\n {description}\n </Typography>\n </Typography>\n <Typography className={classes.subheading1}>{summary}</Typography>\n </>\n);\n","import React from \"react\";\nimport {\n Pie,\n PieChart,\n ResponsiveContainer,\n Cell,\n Legend,\n Tooltip,\n} from \"recharts\";\n\nconst colorSchema = {\n creator: \"#D89E22\",\n doer: \"#948BFF\",\n driver: \"#34CFFF\",\n investigator: \"#FFB61C\",\n facilitator: \"#FF5255\",\n crafter: \"#53D28E\",\n};\n\nexport const InterestPieChart = ({ interests }) => {\n return (\n <div style={{ height: \"20em\" }}>\n <ResponsiveContainer>\n <PieChart>\n <Pie\n data={interests}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n paddingAngle={5}\n cy=\"50%\"\n innerRadius={60}\n outerRadius={90}\n fill=\"#82ca9d\"\n cornerRadius={3}\n animationDuration={600}\n >\n {interests\n ? interests.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={colorSchema[entry.name]} />\n ))\n : null}\n </Pie>\n <Legend />\n <Tooltip />\n </PieChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","export const interestTypes = {\n doer: {\n summary: `Doer – These people prefer to follow set procedures and routines. They are likely to be drawn to occupations that include working with data and details more than with ideas. They are happy following a clear line of authority.`,\n description: `<p>Based on their interests, they appear to be a <b>DOER</b>. The following is likely to describe them:</p>\n <p>It is important to them to <b>be accurate</b></p>\n <p>They learn best when they're <b>following rules</b></p>\n <p>They need to be careful about <b>being a perfectionist</b></p>\n <p>Others appreciate their <b>common sense</b></p>\n <p>Their ideal job involves <b>working with data and details</b></p>\n <p>They unlikely to enjoy jobs that <b>require too much creativity</b></p>`\n },\n\n driver: {\n summary: `Driver – These people enjoy starting up and carrying out projects. They are likely to be drawn to occupations that involve leading people and making many decisions.`,\n description: `<p>Based on their interests, they appear to be a <b>DRIVER</b>. The following is likely to describe them:</p>\n <p>It is important to them to <b>take the lead</b></p>\n <p>They learn best when they're <b>involved in decision making</b></p>\n <p>They need to be careful about <b>taking too much control</b></p>\n <p>Others appreciate their <b>decisiveness</b></p>\n <p>Their ideal job involves <b>managing a team or department</b></p>\n <p>They unlikely to enjoy jobs that <b>are routine or predictable</b></p>`\n },\n investigator: {\n summary: `Investigator – These people enjoy working with ideas, and thinking deeply about issues. They are likely to be drawn to occupations that involve searching for facts and figuring out problems mentally.`,\n description: `<p>Based on their interests, they appear to be an <b>INVESTIGATOR</b>. The following is likely to describe them:</p>\n <p>It is important to them to <b>use their brain</b></p>\n <p>They learn best when they're <b>exploring complicated issues</b></p>\n <p>They need to be careful about <b>over-thinking issues</b></p>\n <p>Others appreciate their <b>intelligence</b></p>\n <p>Their ideal job involves <b>solving difficult problems</b></p>\n <p>They're unlikely to enjoy jobs that <b>involve simple tasks</b></p>`\n },\n facilitator: {\n summary: `Facilitator - These people enjoy working with, communicating with, and teaching others. They are likely to be drawn to occupations that involve helping or providing service to others.`,\n description: `<p>Based on their interests, they appear to be a <b>FACILITATOR</b>. The following is likely to describe them:</p>\n <p>It is important to them to <b>help people</b></p>\n <p>They learn best when they're <b>with other people</b></p>\n <p>They need to be careful about <b>getting too personally involved</b></p>\n <p>Others appreciate their <b>caring side</b></p>\n <p>Their ideal job involves <b>helping others</b></p>\n <p>They're unlikely to enjoy jobs that <b>require them to work in isolation</b></p>`\n },\n crafter: {\n summary: `Crafter - These people enjoy activities that include practical, hands-on problems and solutions. They may like to deal with plants, animals, and real-world materials like wood, tools, and machinery. They are likely to be drawn to occupations that require working outside, and do not involve a lot of paperwork or working closely with others`,\n description: `<p>Based on their interests, they appear to be a <b>CRAFTER</b>. The following is likely to describe them:</p>\n <p>It is important to them to use their <b>practical skills</b></p>\n <p>They learn best when they're able to <b>experiment and try things out</b></p>\n <p>They need to be careful about their <b>need to fix things that aren't broken</b></p>\n <p>Others appreciate their ability to <b>fix or design things</b></p>\n <p>Their ideal job involves <b>practical, hands-on work</b></p>\n <p>They're unlikely to enjoy jobs that <b>require a lot of thinking</b></p>`\n },\n creator: {\n summary: `Creator - These people enjoy creating things. They are likely to be drawn to occupations that require self-expression working without following a clear set of rules.`,\n description: `<p>Based on their interests, they appear to be a <b>CREATOR</b>. The following is likely to describe them:</p>\n <p>It is important to them to be <b>creative</b></p>\n <p>They learn best when they're <b>given creative freedom</b></p>\n <p>They need to be careful about <b>chasing after impractical ideas</b></p>\n <p>Others appreciate their <b>creativity</b></p>\n <p>Their ideal job involves <b>expressing their creativity</b></p>\n <p>They're unlikely to enjoy <b>traditional jobs that restrict their creativity</b></p>`\n }\n};\n","import {\n Grid,\n LinearProgress,\n Paper,\n Tooltip,\n withStyles,\n Typography\n} from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport React from \"react\";\nimport {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n ResponsiveContainer\n} from \"recharts\";\n\nconst CustomLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: \"#efefef\"\n },\n barColorPrimary: {\n backgroundColor: \"#2988FF\"\n }\n})(LinearProgress);\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n padding: theme.spacing(2)\n },\n title: {\n marginTop: -4,\n marginBottom: 3,\n fontSize: \"1rem\"\n }\n}));\n\nexport const InterestsPanel = ({ data, interestScore, isOnPrintMode }) => {\n const classes = useStyles();\n\n return (\n <Paper className={classes.paper}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Grid container direction=\"row\" spacing={2}>\n <Grid item>\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.219 11.2503C20.3316 11.2504 21.4191 10.9205 22.3442 10.3024C23.2693 9.68437 23.9903 8.80586 24.4161 7.77801C24.8419 6.75016 24.9534 5.61912 24.7364 4.52793C24.5194 3.43675 23.9836 2.43441 23.197 1.64769C22.4103 0.860971 21.408 0.325195 20.3168 0.108117C19.2256 -0.108961 18.0946 0.00240961 17.0667 0.428145C16.0388 0.85388 15.1603 1.57486 14.5422 2.49991C13.9241 3.42495 13.5941 4.51252 13.5941 5.62508C13.594 6.36379 13.7395 7.09527 14.0221 7.77776C14.3048 8.46025 14.7191 9.08039 15.2414 9.60275C15.7638 10.1251 16.3839 10.5395 17.0663 10.8222C17.7488 11.1048 18.4803 11.2503 19.219 11.2503ZM19.219 0.937528C20.1461 0.937474 21.0525 1.21235 21.8234 1.72741C22.5943 2.24246 23.1952 2.97455 23.55 3.8311C23.9048 4.68766 23.9977 5.63019 23.8168 6.53952C23.636 7.44885 23.1896 8.28413 22.534 8.93973C21.8784 9.59534 21.0432 10.0418 20.1338 10.2227C19.2245 10.4036 18.282 10.3108 17.4254 9.95596C16.5688 9.60116 15.8367 9.00033 15.3216 8.22943C14.8065 7.45854 14.5316 6.55222 14.5316 5.62508C14.5331 4.38235 15.0274 3.19092 15.9061 2.31215C16.7849 1.43339 17.9763 0.939032 19.219 0.937528Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M28.1015 19.5653C28.0742 19.4836 28.0249 19.411 27.9589 19.3555C27.893 19.3 27.813 19.2638 27.7278 19.2508L26.6794 19.0906L26.2063 18.0826C26.1685 18.002 26.1085 17.9338 26.0333 17.8861C25.9582 17.8383 25.871 17.813 25.782 17.813C25.6929 17.813 25.6057 17.8383 25.5306 17.8861C25.4554 17.9338 25.3954 18.002 25.3576 18.0826L24.8845 19.0906L23.8361 19.2508C23.7509 19.2639 23.671 19.3001 23.605 19.3556C23.5391 19.4111 23.4898 19.4836 23.4624 19.5653C23.4351 19.647 23.4308 19.7347 23.45 19.8187C23.4692 19.9027 23.5112 19.9797 23.5714 20.0414L24.3437 20.8329L24.1604 21.9563C24.1462 22.0431 24.1568 22.1322 24.1909 22.2133C24.225 22.2944 24.2812 22.3643 24.3531 22.415C24.4251 22.4657 24.5098 22.4951 24.5977 22.4999C24.6855 22.5046 24.7729 22.4846 24.8499 22.442L25.782 21.9268L26.714 22.442C26.7913 22.4836 26.8785 22.5031 26.9662 22.4983C27.0538 22.4936 27.1385 22.4647 27.2108 22.415C27.2827 22.3643 27.3389 22.2944 27.373 22.2133C27.4071 22.1322 27.4177 22.0432 27.4035 21.9563L27.2202 20.8329L27.9926 20.0414C28.0527 19.9797 28.0947 19.9027 28.1139 19.8187C28.1332 19.7347 28.1289 19.647 28.1015 19.5653ZM26.3839 20.3477C26.3327 20.4002 26.2945 20.464 26.2724 20.534C26.2503 20.6039 26.245 20.6781 26.2568 20.7505L26.3227 21.1545L26.0088 20.981C25.9394 20.9426 25.8613 20.9224 25.782 20.9224C25.7026 20.9224 25.6246 20.9426 25.5551 20.981L25.2412 21.1545L25.3071 20.7505C25.3189 20.6781 25.3136 20.6039 25.2915 20.534C25.2694 20.464 25.2312 20.4002 25.18 20.3477L24.8795 20.0396L25.2734 19.9794C25.3494 19.9678 25.4215 19.9376 25.4831 19.8915C25.5448 19.8455 25.5942 19.7849 25.6269 19.7153L25.782 19.385L25.937 19.7153C25.9697 19.7849 26.0191 19.8455 26.0808 19.8915C26.1424 19.9376 26.2145 19.9678 26.2905 19.9794L26.6845 20.0396L26.3839 20.3477Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M13.1254 20.526V20.2564C13.1252 20.01 13.0639 19.7676 12.9469 19.5508C13.2095 19.4311 13.4322 19.2385 13.5885 18.9958C13.7448 18.7532 13.8281 18.4708 13.8285 18.1822V17.9125C13.8281 17.6243 13.7449 17.3421 13.589 17.0997C13.433 16.8572 13.2108 16.6646 12.9486 16.5447C13.0648 16.3274 13.1255 16.0848 13.1254 15.8384V15.5687C13.1249 15.1695 12.9661 14.7867 12.6838 14.5044C12.4015 14.2221 12.0187 14.0633 11.6195 14.0629H9.4976C9.27705 13.69 9.35852 12.9168 9.55721 12.3355C9.74477 11.7863 9.82243 11.2055 9.78575 10.6264C9.7045 9.41141 9.05297 8.51623 8.08546 8.29055C7.40987 8.13269 6.90739 8.1891 6.59161 8.45703C6.23852 8.75662 6.27191 9.23353 6.30735 9.64968C6.36708 10.3524 6.42351 11.0159 6.09574 11.5632C5.666 12.2814 5.06368 12.6882 4.36626 13.159C4.14767 13.3066 3.92325 13.4582 3.69619 13.6243C3.50553 13.7572 3.32477 13.9038 3.15536 14.0629H1.198C0.88305 14.0606 0.580043 14.1833 0.355453 14.4041C0.130863 14.6249 0.00303104 14.9258 0 15.2407V21.7915C0.00303104 22.1065 0.130863 22.4073 0.355453 22.6281C0.580043 22.849 0.88305 22.9717 1.198 22.9694H3.64301C4.1451 23.5881 5.01628 24.1936 6.50648 24.1935C6.57418 24.1935 6.64638 24.189 6.71669 24.1865C6.5345 23.9029 6.41341 23.5844 6.36117 23.2514C4.40219 23.1872 3.99139 21.8223 3.92749 21.5345V20.2225C3.92749 20.0982 3.8781 19.9789 3.79019 19.891C3.70228 19.8031 3.58305 19.7537 3.45872 19.7537C3.3344 19.7537 3.21517 19.8031 3.12726 19.891C3.03935 19.9789 2.98996 20.0982 2.98996 20.2225V21.5814C2.98995 21.6084 2.99228 21.6354 2.99694 21.662C3.024 21.7879 3.06091 21.9116 3.10733 22.0318H1.198C1.13164 22.0343 1.06699 22.0104 1.01818 21.9654C0.969372 21.9204 0.940375 21.8579 0.937525 21.7915V15.2407C0.940375 15.1744 0.969372 15.1119 1.01818 15.0668C1.06699 15.0218 1.13164 14.9979 1.198 15.0004H2.91672V16.8361C2.91672 16.9604 2.96611 17.0796 3.05402 17.1675C3.14193 17.2555 3.26116 17.3048 3.38548 17.3048C3.5098 17.3048 3.62904 17.2555 3.71695 17.1675C3.80486 17.0796 3.85424 16.9604 3.85424 16.8361V14.6911C3.97152 14.5843 4.68167 14.0773 4.89099 13.9361C5.64815 13.4247 6.36343 12.9418 6.90017 12.0448C7.38335 11.2379 7.30805 10.3519 7.24156 9.57026C7.23126 9.44941 7.21192 9.17498 7.21283 9.16513C7.43235 9.12156 7.65936 9.13471 7.87238 9.20336C8.7005 9.39677 8.83028 10.3895 8.8503 10.6888C8.87894 11.1442 8.8177 11.6007 8.67006 12.0324C8.59459 12.2533 8.29464 13.227 8.50226 14.0629H8.06853C7.66929 14.0633 7.28653 14.2221 7.00422 14.5044C6.72192 14.7867 6.56312 15.1695 6.56268 15.5687V15.8384C6.56253 16.0848 6.62325 16.3274 6.73943 16.5447C6.47727 16.6646 6.25502 16.8572 6.09905 17.0997C5.94309 17.3421 5.85996 17.6243 5.85953 17.9125V18.1822C5.85996 18.4708 5.94327 18.7532 6.09955 18.9958C6.25583 19.2385 6.47851 19.4311 6.74111 19.5508C6.62415 19.7676 6.56284 20.01 6.56268 20.2564V20.526C6.56311 20.8146 6.64644 21.097 6.80275 21.3396C6.95906 21.5822 7.18177 21.7747 7.44438 21.8944C7.32734 22.1112 7.26598 22.3538 7.26582 22.6002V22.8698C7.26627 23.269 7.42506 23.6518 7.70737 23.9341C7.98967 24.2164 8.37243 24.3752 8.77167 24.3757H10.9164C11.3156 24.3752 11.6984 24.2164 11.9807 23.9341C12.263 23.6518 12.4218 23.269 12.4222 22.8698V22.6002C12.422 22.3538 12.3607 22.1112 12.2436 21.8944C12.5063 21.7747 12.729 21.5822 12.8853 21.3396C13.0416 21.097 13.1249 20.8146 13.1254 20.526ZM12.1878 20.2564V20.526C12.1876 20.6767 12.1277 20.8211 12.0212 20.9277C11.9146 21.0342 11.7702 21.0941 11.6195 21.0943H8.06853C7.91785 21.0941 7.7734 21.0342 7.66686 20.9277C7.56032 20.8211 7.50038 20.6767 7.5002 20.526V20.2564C7.50038 20.1057 7.56032 19.9612 7.66686 19.8547C7.7734 19.7481 7.91785 19.6882 8.06853 19.688H11.6195C11.7702 19.6882 11.9146 19.7481 12.0212 19.8547C12.1277 19.9612 12.1876 20.1057 12.1878 20.2564ZM8.06853 17.3442H12.3226C12.4733 17.3444 12.6178 17.4043 12.7243 17.5109C12.8309 17.6174 12.8908 17.7619 12.891 17.9125V18.1822C12.8908 18.3329 12.8309 18.4773 12.7243 18.5838C12.6178 18.6904 12.4733 18.7503 12.3226 18.7505H7.36539C7.21471 18.7503 7.07026 18.6904 6.96372 18.5838C6.85717 18.4773 6.79724 18.3329 6.79706 18.1822V17.9125C6.79724 17.7619 6.85717 17.6174 6.96372 17.5109C7.07026 17.4043 7.21471 17.3444 7.36539 17.3442H8.06853ZM7.5002 15.5687C7.50038 15.4181 7.56032 15.2736 7.66686 15.1671C7.7734 15.0605 7.91785 15.0006 8.06853 15.0004H11.6195C11.7702 15.0006 11.9146 15.0605 12.0212 15.1671C12.1277 15.2736 12.1876 15.4181 12.1878 15.5687V15.8384C12.1876 15.989 12.1277 16.1335 12.0212 16.24C11.9146 16.3466 11.7702 16.4065 11.6195 16.4067H8.06853C7.91785 16.4065 7.7734 16.3466 7.66686 16.24C7.56032 16.1335 7.50038 15.989 7.5002 15.8384V15.5687ZM11.4847 22.8698C11.4845 23.0205 11.4246 23.1649 11.318 23.2715C11.2115 23.378 11.067 23.4379 10.9164 23.4381H8.77167C8.621 23.4379 8.47655 23.378 8.37 23.2715C8.26346 23.1649 8.20353 23.0205 8.20335 22.8698V22.6002C8.20353 22.4495 8.26346 22.305 8.37 22.1985C8.47655 22.092 8.621 22.032 8.77167 22.0318H10.9164C11.067 22.032 11.2115 22.092 11.318 22.1985C11.4246 22.305 11.4845 22.4495 11.4847 22.6002V22.8698Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M17.8955 12.0536L16.8255 17.5742C16.8097 17.6556 16.8158 17.7398 16.8431 17.8181C16.8705 17.8964 16.9181 17.966 16.9811 18.0199L18.9148 19.6722C18.9987 19.744 19.1052 19.7838 19.2157 19.7846C19.3261 19.7854 19.4332 19.7473 19.5182 19.6768L21.4519 18.0755C21.516 18.0224 21.5648 17.9532 21.5934 17.875C21.6219 17.7968 21.6291 17.7124 21.6141 17.6305L20.5962 12.0413C20.2899 12.1067 19.9793 12.15 19.6668 12.1708L20.6426 17.5285L19.224 18.7033L17.7978 17.4845L18.8269 12.1751C18.5139 12.1569 18.2026 12.1164 17.8955 12.0536Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M15.1982 11.2503H15.8429C15.4149 10.9919 15.0176 10.6857 14.6587 10.3376C13.0703 10.4707 11.5912 11.2002 10.5188 12.3794C10.4941 12.4659 10.4734 12.5537 10.4444 12.6387C10.3565 12.8956 10.3083 13.1644 10.3015 13.4359C10.4488 13.4867 10.5865 13.5617 10.7091 13.6579C11.1996 12.9165 11.8666 12.3083 12.6501 11.8881C13.4336 11.4679 14.3091 11.2487 15.1982 11.2503Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M23.8034 10.3151C23.4382 10.6725 23.0329 10.9864 22.5954 11.2503H23.7091C25.1188 11.2421 26.4742 11.7934 27.4779 12.7832C28.4816 13.7731 29.0518 15.1206 29.0633 16.5303V22.9826C29.0618 23.1047 29.0121 23.2211 28.9249 23.3065C28.8377 23.3919 28.7202 23.4392 28.5982 23.4381H13.2902C13.2085 23.7797 13.0537 24.0995 12.8365 24.3756H28.5981C28.9687 24.3765 29.3246 24.2303 29.5875 23.9692C29.8505 23.708 29.9991 23.3532 30.0008 22.9826V16.5303C29.9891 14.8886 29.333 13.3172 28.1738 12.1546C27.0146 10.9921 25.445 10.3315 23.8034 10.3151Z\"\n fill=\"#2988FF\"\n />\n </svg>\n </Grid>\n <Grid item xs={5}>\n <Typography variant=\"h6\" className={classes.title}>\n {\" \"}\n Interests\n </Typography>\n <CustomLinearProgress\n variant=\"determinate\"\n value={interestScore}\n />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Grid item>\n <ResponsiveContainer aspect={1} maxHeight={isOnPrintMode ? 320 :266}>\n <RadarChart\n data={data}\n margin={{\n top: 0,\n right: isOnPrintMode ? 0 : 60,\n bottom: 0,\n left: isOnPrintMode ? 0 : 60\n }}\n \n >\n <PolarGrid />\n <PolarAngleAxis dataKey={\"label\"} />\n <PolarRadiusAxis domain={[0, 100]} angle={90} />\n <Radar\n name=\"Required\"\n dataKey=\"value\"\n stroke=\"#ff6505\"\n fill=\"#ff6505\"\n strokeWidth={3}\n fillOpacity={0.1}\n />\n <Radar\n name=\"Candidate Score\"\n dataKey=\"candidate\"\n stroke=\"#696969\"\n fill=\"#000000\"\n strokeWidth={3}\n fillOpacity={0.1}\n />\n <Legend />\n <Tooltip />\n </RadarChart>\n </ResponsiveContainer>\n </Grid>\n </Paper>\n );\n};\n","import {\n Grid,\n LinearProgress,\n Paper,\n withStyles,\n Typography\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst CustomLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: \"#efefef\"\n },\n barColorPrimary: {\n backgroundColor: \"#53D28E\"\n }\n})(LinearProgress);\n\nconst useStyles = makeStyles(theme => ({\n gridmargin: {\n margin: theme.spacing(2)\n },\n paper: {\n padding: theme.spacing(2)\n },\n p: {\n marginBottom: 2,\n marginTop: 1,\n fontSize: 12\n },\n pp: {\n fontSize: 11\n },\n title: {\n marginTop: -4,\n marginBottom: 3,\n fontSize: \"1rem\"\n }\n}));\n\nexport const SkillsPanel = ({ skills, skillScore, isOnPrintMode }) => {\n const classes = useStyles();\n var height = 250;\n if (isOnPrintMode) {\n height = \"auto\";\n }\n return (\n <Paper className={classes.paper}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Grid container direction=\"row\" spacing={2}>\n <Grid item>\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"-4 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.77435 29.5321C4.77435 29.6564 4.82374 29.7756 4.91165 29.8635C4.99956 29.9514 5.11879 30.0008 5.24312 30.0008H7.98303C8.10736 30.0008 8.22659 29.9514 8.3145 29.8635C8.40241 29.7756 8.4518 29.6564 8.4518 29.5321C8.4518 29.4077 8.40241 29.2885 8.3145 29.2006C8.22659 29.1127 8.10736 29.0633 7.98303 29.0633H5.24312C5.11879 29.0633 4.99956 29.1127 4.91165 29.2006C4.82374 29.2885 4.77435 29.4077 4.77435 29.5321Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M6.81109 27.1882H4.46728C4.35468 26.8105 4.10991 26.486 3.77771 26.274C3.44552 26.062 3.0481 25.9766 2.65814 26.0335C2.26818 26.0904 1.91172 26.2857 1.65395 26.5838C1.39619 26.882 1.25433 27.2629 1.25433 27.657C1.25433 28.0511 1.39619 28.432 1.65395 28.7301C1.91172 29.0282 2.26818 29.2236 2.65814 29.2805C3.0481 29.3373 3.44552 29.252 3.77771 29.0399C4.10991 28.8279 4.35468 28.5034 4.46728 28.1257H6.81109C6.93542 28.1257 7.05465 28.0763 7.14256 27.9884C7.23047 27.9005 7.27986 27.7813 7.27986 27.657C7.27986 27.5326 7.23047 27.4134 7.14256 27.3255C7.05465 27.2376 6.93542 27.1882 6.81109 27.1882ZM2.89927 28.3601C2.7602 28.3601 2.62425 28.3189 2.50862 28.2416C2.39299 28.1643 2.30287 28.0545 2.24965 27.9261C2.19643 27.7976 2.18251 27.6562 2.20964 27.5198C2.23677 27.3834 2.30374 27.2581 2.40207 27.1598C2.50041 27.0614 2.6257 26.9945 2.76209 26.9673C2.89849 26.9402 3.03987 26.9541 3.16835 27.0073C3.29683 27.0606 3.40665 27.1507 3.48391 27.2663C3.56117 27.382 3.60241 27.5179 3.60241 27.657C3.60241 27.7495 3.58415 27.8411 3.54867 27.9266C3.51318 28.0121 3.46118 28.0897 3.39564 28.155C3.3301 28.2203 3.25231 28.2721 3.16673 28.3073C3.08115 28.3425 2.98946 28.3604 2.89693 28.3601H2.89927Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M14.2621 22.4537C14.5738 20.2599 16.0176 18.2349 17.4122 16.2942C17.7872 15.7715 18.1388 15.2793 18.4786 14.7707C19.2591 13.5496 20.1568 11.8902 20.1568 9.87214C20.1568 4.42746 15.6356 0 10.0784 0C4.52121 0 0 4.42746 0 9.87214C0.00304187 11.9263 0.672517 13.9241 1.90786 15.5653C2.15865 15.9028 2.41413 16.2356 2.6696 16.5684C4.00792 18.3146 5.27123 19.9623 5.76344 22.0857L5.78453 22.1725C6.01279 23.1728 6.13921 24.1936 6.16188 25.2194H5.24311C5.11879 25.2194 4.99955 25.2688 4.91164 25.3567C4.82373 25.4446 4.77435 25.5639 4.77435 25.6882C4.77435 25.8125 4.82373 25.9317 4.91164 26.0197C4.99955 26.1076 5.11879 26.157 5.24311 26.157H8.40726C8.53158 26.157 8.65081 26.1076 8.73872 26.0197C8.82663 25.9317 8.87602 25.8125 8.87602 25.6882V21.9381C8.87602 21.8138 8.82663 21.6945 8.73872 21.6066C8.65081 21.5187 8.53158 21.4693 8.40726 21.4693C8.28293 21.4693 8.1637 21.5187 8.07579 21.6066C7.98788 21.6945 7.93849 21.8138 7.93849 21.9381V25.2194H7.09941C7.07747 24.1147 6.94239 23.0152 6.69627 21.9381L6.67752 21.8584C6.14079 19.538 4.75325 17.7309 3.41494 15.9825C3.16415 15.6543 2.91102 15.3238 2.66257 14.991C1.54997 13.5157 0.944788 11.7199 0.937525 9.87214C0.937525 4.94545 5.0392 0.937525 10.0784 0.937525C15.1176 0.937525 19.2193 4.94545 19.2193 9.87214C19.2193 11.6487 18.4013 13.1535 17.6958 14.2574C17.3677 14.7449 17.0208 15.2348 16.6411 15.7481C15.1809 17.7895 13.6691 19.9013 13.3246 22.3108L13.3105 22.4092C13.2566 22.7772 13.1136 23.7569 13.0386 24.91C13.0386 24.91 13.0386 24.91 13.0386 24.9241C13.0386 24.9382 13.0386 24.9241 13.0386 24.9382C13.0386 24.9522 13.0386 24.9593 13.0386 24.971C13.0378 24.9874 13.0378 25.0038 13.0386 25.0202C13.0386 25.0343 13.0386 25.0507 13.0386 25.0647C13.0386 25.0788 13.0386 25.0952 13.0527 25.1093C13.0668 25.1233 13.0644 25.1374 13.0714 25.1491L13.0925 25.189L13.1183 25.2241L13.1464 25.2593L13.1793 25.2897L13.2144 25.3202L13.2519 25.3436L13.2918 25.3647L13.334 25.3811L13.3785 25.3952H13.4254H13.4582H18.5536C18.6662 25.7729 18.911 26.0974 19.2432 26.3094C19.5754 26.5215 19.9728 26.6068 20.3628 26.5499C20.7527 26.493 21.1092 26.2977 21.3669 25.9996C21.6247 25.7015 21.7666 25.3205 21.7666 24.9264C21.7666 24.5324 21.6247 24.1514 21.3669 23.8533C21.1092 23.5552 20.7527 23.3599 20.3628 23.303C19.9728 23.2461 19.5754 23.3314 19.2432 23.5435C18.911 23.7555 18.6662 24.08 18.5536 24.4577H14.0207C14.0957 23.567 14.2012 22.8358 14.2551 22.5334L14.2621 22.4537ZM20.1568 24.2397C20.2959 24.2397 20.4318 24.281 20.5474 24.3582C20.6631 24.4355 20.7532 24.5453 20.8064 24.6738C20.8596 24.8023 20.8736 24.9436 20.8464 25.08C20.8193 25.2164 20.7523 25.3417 20.654 25.4401C20.5557 25.5384 20.4304 25.6054 20.294 25.6325C20.1576 25.6596 20.0162 25.6457 19.8877 25.5925C19.7592 25.5393 19.6494 25.4491 19.5721 25.3335C19.4949 25.2179 19.4536 25.0819 19.4536 24.9429C19.4536 24.7564 19.5277 24.5775 19.6596 24.4457C19.7915 24.3138 19.9703 24.2397 20.1568 24.2397Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M3.81807 14.6394C3.81964 14.8632 3.90982 15.0773 4.06886 15.2348L5.15639 16.3223C5.31861 16.4773 5.53436 16.5638 5.75875 16.5638C5.98313 16.5638 6.19888 16.4773 6.36111 16.3223L6.79706 15.8887C6.86737 15.9309 6.94003 15.966 7.01034 16.0059V14.9137H6.99394L6.67283 14.698L5.76109 15.6098L4.80247 14.6512L5.71421 13.7394L5.49858 13.4183C5.08231 12.8035 4.79524 12.1106 4.65481 11.3815L4.58215 11.0018H3.28134V9.63541H4.57043L4.64309 9.25571C4.78353 8.52665 5.07059 7.83372 5.48686 7.21894L5.7025 6.89783L4.79075 5.98609L5.74937 5.02747L6.66111 5.93921L6.98222 5.72358C7.59688 5.30707 8.28986 5.01999 9.01899 4.87981L9.39869 4.80715V3.51571H10.7558V4.80481L11.1355 4.87747C11.8646 5.01765 12.5576 5.30473 13.1722 5.72124L13.4933 5.93687L14.4051 5.02513L15.3637 5.98375L14.4519 6.89549L14.6676 7.21659C15.0839 7.83137 15.3709 8.52431 15.5114 9.25336L15.584 9.63306H16.8755V10.9901H15.5864L15.5137 11.3698C15.3733 12.0989 15.0862 12.7918 14.6699 13.4066L14.4543 13.7277L15.366 14.6394L14.4074 15.5981L13.4957 14.6863L13.1746 14.902L13.1511 14.916V16.0082C13.2238 15.9684 13.2988 15.9309 13.3715 15.8887L13.8051 16.3223C13.9673 16.4773 14.183 16.5638 14.4074 16.5638C14.6318 16.5638 14.8475 16.4773 15.0098 16.3223L16.0879 15.2348C16.1672 15.1557 16.23 15.0619 16.2729 14.9585C16.3158 14.8551 16.3379 14.7443 16.3379 14.6324C16.3379 14.5205 16.3158 14.4097 16.2729 14.3063C16.23 14.203 16.1672 14.1091 16.0879 14.0301L15.6543 13.5941C15.9674 13.0719 16.2041 12.5075 16.3575 11.9183H16.9715C17.1938 11.9152 17.406 11.8256 17.5632 11.6685C17.7203 11.5113 17.8099 11.2991 17.813 11.0769V9.54869C17.8124 9.32323 17.7225 9.10718 17.5631 8.94776C17.4037 8.78834 17.1876 8.6985 16.9622 8.69788H16.3481C16.1948 8.10862 15.958 7.54431 15.6449 7.02205L16.0786 6.58845C16.1578 6.50942 16.2206 6.41553 16.2635 6.31217C16.3064 6.20881 16.3285 6.098 16.3285 5.98609C16.3285 5.87418 16.3064 5.76337 16.2635 5.66001C16.2206 5.55665 16.1578 5.46276 16.0786 5.38373L15.0004 4.30323C14.8382 4.14821 14.6224 4.06171 14.398 4.06171C14.1737 4.06171 13.9579 4.14821 13.7957 4.30323L13.3597 4.73684C12.8375 4.42374 12.2732 4.18696 11.6839 4.03369V3.42899C11.6833 3.20514 11.5948 2.9905 11.4374 2.83134C11.28 2.67218 11.0663 2.58126 10.8425 2.57819H9.31431C9.08885 2.5788 8.87281 2.66864 8.71338 2.82806C8.55396 2.98749 8.46412 3.20353 8.46351 3.42899V4.04307C7.87423 4.19634 7.3099 4.43312 6.78768 4.74621L6.35407 4.31261C6.19185 4.15759 5.9761 4.07108 5.75171 4.07108C5.52733 4.07108 5.31158 4.15759 5.14936 4.31261L4.06886 5.39076C3.98963 5.46979 3.92677 5.56368 3.88388 5.66704C3.84099 5.7704 3.81891 5.88121 3.81891 5.99312C3.81891 6.10503 3.84099 6.21584 3.88388 6.3192C3.92677 6.42256 3.98963 6.51645 4.06886 6.59548L4.50246 7.03143C4.18943 7.55368 3.95265 8.118 3.79932 8.70726H3.19462C2.97077 8.70785 2.75612 8.7964 2.59696 8.9538C2.4378 9.11121 2.34689 9.32486 2.34381 9.54869V11.0792C2.34443 11.3047 2.43427 11.5207 2.59369 11.6801C2.75311 11.8395 2.96916 11.9294 3.19462 11.93H3.80869C3.96203 12.5193 4.1988 13.0836 4.51184 13.6058L4.07823 14.0394C3.99723 14.1172 3.9325 14.2103 3.88784 14.3133C3.84317 14.4163 3.81945 14.5272 3.81807 14.6394Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M8.40724 20.0677C8.53157 20.0677 8.6508 20.0183 8.73871 19.9304C8.82662 19.8425 8.876 19.7233 8.876 19.599V14.5926C9.65842 14.8245 10.4913 14.8245 11.2737 14.5926V27.7625C11.2737 27.8868 11.3231 28.006 11.411 28.0939C11.4989 28.1818 11.6182 28.2312 11.7425 28.2312H14.834C14.9466 28.6089 15.1914 28.9334 15.5235 29.1454C15.8557 29.3575 16.2532 29.4428 16.6431 29.3859C17.0331 29.329 17.3895 29.1337 17.6473 28.8356C17.9051 28.5375 18.0469 28.1565 18.0469 27.7625C18.0469 27.3684 17.9051 26.9874 17.6473 26.6893C17.3895 26.3912 17.0331 26.1959 16.6431 26.139C16.2532 26.0821 15.8557 26.1675 15.5235 26.3795C15.1914 26.5915 14.9466 26.916 14.834 27.2937H12.2112V14.1894C12.8686 13.8146 13.4105 13.2665 13.7777 12.6049C14.1449 11.9432 14.3234 11.1934 14.2936 10.4373C14.2639 9.68117 14.0271 8.94772 13.609 8.31696C13.191 7.68619 12.6078 7.18233 11.923 6.86033C11.8515 6.82582 11.7725 6.81 11.6933 6.81437C11.614 6.81874 11.5372 6.84314 11.47 6.8853C11.4028 6.92746 11.3473 6.98599 11.3089 7.05541C11.2705 7.12483 11.2503 7.20287 11.2503 7.28222V9.70338L10.0784 10.4581L8.90647 9.70338V7.28222C8.90644 7.20287 8.88627 7.12483 8.84784 7.05541C8.80941 6.98599 8.754 6.92746 8.68678 6.8853C8.61956 6.84314 8.54274 6.81874 8.46351 6.81437C8.38428 6.81 8.30525 6.82582 8.2338 6.86033C7.5498 7.1821 6.96716 7.68534 6.54931 8.31526C6.13146 8.94518 5.8944 9.67765 5.86395 10.4329C5.8335 11.1882 6.01081 11.9374 6.37659 12.5989C6.74237 13.2604 7.2826 13.809 7.93848 14.1847V19.599C7.93848 19.7233 7.98787 19.8425 8.07578 19.9304C8.16369 20.0183 8.28292 20.0677 8.40724 20.0677ZM16.4067 27.0593C16.5457 27.0593 16.6817 27.1005 16.7973 27.1778C16.913 27.2551 17.0031 27.3649 17.0563 27.4934C17.1095 27.6219 17.1234 27.7632 17.0963 27.8996C17.0692 28.036 17.0022 28.1613 16.9039 28.2597C16.8055 28.358 16.6802 28.425 16.5439 28.4521C16.4075 28.4792 16.2661 28.4653 16.1376 28.4121C16.0091 28.3589 15.8993 28.2687 15.822 28.1531C15.7448 28.0375 15.7035 27.9015 15.7035 27.7625C15.7035 27.576 15.7776 27.3971 15.9095 27.2653C16.0413 27.1334 16.2202 27.0593 16.4067 27.0593ZM6.79704 10.6034C6.79588 10.13 6.9005 9.66227 7.10325 9.23446C7.30601 8.80665 7.60178 8.42954 7.96895 8.13068V9.95885C7.96908 10.0373 7.98889 10.1144 8.02656 10.1832C8.06423 10.252 8.11856 10.3103 8.18458 10.3526L9.82525 11.4097C9.90104 11.4586 9.98934 11.4847 10.0796 11.4847C10.1698 11.4847 10.2581 11.4586 10.3339 11.4097L11.9745 10.3526C12.0401 10.31 12.094 10.2516 12.1312 10.1829C12.1685 10.1141 12.1879 10.0371 12.1878 9.95885V8.13068C12.555 8.42954 12.8508 8.80665 13.0535 9.23446C13.2563 9.66227 13.3609 10.13 13.3597 10.6034C13.3597 11.4737 13.014 12.3083 12.3986 12.9237C11.7833 13.539 10.9486 13.8847 10.0784 13.8847C9.20812 13.8847 8.37349 13.539 7.75812 12.9237C7.14275 12.3083 6.79704 11.4737 6.79704 10.6034Z\"\n fill=\"#53D28E\"\n />\n </svg>\n </Grid>\n <Grid item xs={5}>\n <Typography variant=\"h6\" className={classes.title}>\n Skills\n </Typography>\n <CustomLinearProgress variant=\"determinate\" value={skillScore} />\n </Grid>\n </Grid>\n </Grid>\n\n <Grid item>\n <div style={{ overflow: \"auto\", height: height }}>\n {isOnPrintMode ? (\n <p className={classes.p}>{skills.join(\", \")}</p>\n ) : (\n skills.map(skill => (\n <p className={classes.p} key={skill}>\n {skill}\n </p>\n ))\n )}\n </div>\n </Grid>\n </Grid>\n </Paper>\n );\n};\n","import {\n Grid,\n LinearProgress,\n Paper,\n Tooltip,\n withStyles,\n Typography\n} from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport React from \"react\";\nimport {\n Legend,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n ResponsiveContainer\n} from \"recharts\";\n\nconst CustomLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: \"#efefef\"\n },\n barColorPrimary: {\n backgroundColor: \"#FF9800\"\n }\n})(LinearProgress);\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n padding: theme.spacing(2)\n },\n title: {\n marginTop: -4,\n marginBottom: 3,\n fontSize: \"1rem\"\n }\n}));\n\nexport const StylesPanel = ({ data, stylesScore, isOnPrintMode }) => {\n const classes = useStyles();\n return (\n <Paper className={classes.paper}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Grid container direction=\"row\" spacing={2}>\n <Grid item>\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"-2 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M25.3132 9.14087H22.5006C22.3763 9.14087 22.2571 9.19026 22.1692 9.27817C22.0812 9.36608 22.0319 9.48531 22.0319 9.60963C22.0319 9.73396 22.0812 9.85319 22.1692 9.9411C22.2571 10.029 22.3763 10.0784 22.5006 10.0784H23.4381V15.7035C23.438 15.8278 23.3886 15.947 23.3007 16.0349C23.2128 16.1228 23.0937 16.1722 22.9694 16.1723H22.5006V17.1098H22.9694C23.3422 17.1094 23.6997 16.9611 23.9633 16.6975C24.227 16.4338 24.3753 16.0764 24.3757 15.7035V10.0784H25.3132C25.4375 10.0784 25.5568 10.029 25.6447 9.9411C25.7326 9.85319 25.782 9.73396 25.782 9.60963C25.782 9.48531 25.7326 9.36608 25.6447 9.27817C25.5568 9.19026 25.4375 9.14087 25.3132 9.14087Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M6.63259 13.5941H19.1493C19.3442 13.5942 19.537 13.5537 19.7154 13.4753C19.8938 13.3969 20.054 13.2822 20.1857 13.1386C20.3174 12.9949 20.4179 12.8255 20.4806 12.641C20.5433 12.4564 20.567 12.2609 20.5501 12.0667L19.3075 1.30535C19.2809 0.951193 19.1217 0.620103 18.8617 0.378147C18.6017 0.136191 18.26 0.00116015 17.9049 0L7.87706 0C7.52508 3.08615e-05 7.18592 0.132064 6.92657 0.370016C6.66721 0.607969 6.50653 0.934536 6.47626 1.28521L5.22998 12.0868C5.21605 12.2795 5.24199 12.473 5.30617 12.6552C5.37035 12.8374 5.4714 13.0045 5.60301 13.1459C5.73463 13.2873 5.89397 13.4001 6.07112 13.4773C6.24826 13.5544 6.43939 13.5942 6.63259 13.5941ZM7.40944 1.37264C7.41835 1.25459 7.47143 1.14423 7.5581 1.06358C7.64478 0.982933 7.75867 0.937921 7.87706 0.937525H17.9049C18.0264 0.939148 18.1428 0.987206 18.2301 1.07185C18.3174 1.15649 18.369 1.27132 18.3743 1.39278L18.7277 4.45324H7.054L7.40944 1.37264ZM6.94583 5.39077H18.836L18.9442 6.32829H6.83766L6.94583 5.39077ZM6.72949 7.26582H19.0525L19.1607 8.20335H6.62132L6.72949 7.26582ZM6.51316 9.14087H19.269L19.617 12.1543C19.6215 12.2185 19.6129 12.283 19.5914 12.3437C19.57 12.4044 19.5363 12.4601 19.4925 12.5072C19.4486 12.5543 19.3955 12.5919 19.3364 12.6176C19.2774 12.6433 19.2137 12.6566 19.1493 12.6566H6.63259C6.56814 12.6569 6.50434 12.6437 6.44524 12.618C6.38615 12.5923 6.33307 12.5545 6.28937 12.5071C6.24713 12.4629 6.21419 12.4107 6.19251 12.3535C6.17083 12.2964 6.16084 12.2354 6.16314 12.1743L6.51316 9.14087Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M12.891 26.7195C12.5665 26.7195 12.2493 26.8157 11.9795 26.996C11.7097 27.1763 11.4994 27.4325 11.3752 27.7323C11.251 28.0321 11.2185 28.362 11.2818 28.6802C11.3451 28.9985 11.5014 29.2908 11.7308 29.5203C11.9603 29.7497 12.2526 29.906 12.5709 29.9693C12.8892 30.0326 13.219 30.0001 13.5188 29.8759C13.8186 29.7518 14.0749 29.5415 14.2551 29.2717C14.4354 29.0019 14.5316 28.6846 14.5316 28.3602C14.5312 27.9252 14.3581 27.5081 14.0506 27.2006C13.743 26.893 13.326 26.72 12.891 26.7195ZM12.891 29.0633C12.7519 29.0633 12.616 29.0221 12.5003 28.9448C12.3847 28.8675 12.2946 28.7577 12.2414 28.6292C12.1881 28.5007 12.1742 28.3594 12.2013 28.223C12.2285 28.0866 12.2954 27.9613 12.3938 27.863C12.4921 27.7646 12.6174 27.6977 12.7538 27.6705C12.8902 27.6434 13.0316 27.6573 13.1601 27.7105C13.2885 27.7638 13.3984 27.8539 13.4756 27.9695C13.5529 28.0851 13.5941 28.2211 13.5941 28.3602C13.5941 28.5466 13.52 28.7255 13.3882 28.8573C13.2563 28.9892 13.0775 29.0633 12.891 29.0633Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M21.5631 26.7885V25.7384C21.5612 25.5334 21.4929 25.3346 21.3686 25.1716C21.2442 25.0087 21.0704 24.8904 20.8732 24.8344L13.3597 22.955V22.0318H13.8285C13.9528 22.0318 14.072 21.9824 14.16 21.8945C14.2479 21.8066 14.2973 21.6874 14.2973 21.563C14.2973 21.4387 14.2479 21.3195 14.16 21.2316C14.072 21.1437 13.9528 21.0943 13.8285 21.0943H13.3597V19.688H12.4222V22.8964L4.65432 24.8399C4.46128 24.8984 4.29206 25.0172 4.17151 25.1789C4.05095 25.3406 3.9854 25.5367 3.98447 25.7384V26.7885C3.60608 26.9011 3.28094 27.1463 3.06865 27.4791C2.85637 27.812 2.77116 28.2102 2.82866 28.6008C2.88616 28.9914 3.08251 29.3481 3.38171 29.6057C3.68091 29.8633 4.06292 30.0044 4.4577 30.0031C4.85249 30.0019 5.2336 29.8584 5.53117 29.5989C5.82875 29.3395 6.02284 28.9815 6.07788 28.5906C6.13291 28.1996 6.0452 27.802 5.83083 27.4704C5.61645 27.1389 5.28977 26.8958 4.91067 26.7856L4.90186 25.744L12.4222 23.8628V25.8267C12.7319 25.767 13.0501 25.767 13.3597 25.8267V23.9214L20.6255 25.7384V26.7885C20.2479 26.9011 19.9234 27.1459 19.7113 27.4781C19.4993 27.8103 19.4139 28.2077 19.4708 28.5977C19.5277 28.9876 19.7231 29.3441 20.0212 29.6018C20.3193 29.8596 20.7002 30.0015 21.0943 30.0015C21.4884 30.0015 21.8693 29.8596 22.1674 29.6018C22.4655 29.3441 22.6609 28.9876 22.7178 28.5977C22.7747 28.2077 22.6893 27.8103 22.4773 27.4781C22.2653 27.1459 21.9407 26.9011 21.5631 26.7885V26.7885ZM5.15638 28.3601C5.15638 28.4992 5.11514 28.6351 5.03788 28.7507C4.96062 28.8664 4.8508 28.9565 4.72232 29.0097C4.59384 29.0629 4.45246 29.0769 4.31606 29.0497C4.17966 29.0226 4.05438 28.9556 3.95604 28.8573C3.8577 28.759 3.79074 28.6337 3.7636 28.4973C3.73647 28.3609 3.7504 28.2195 3.80362 28.091C3.85684 27.9625 3.94696 27.8527 4.06259 27.7755C4.17822 27.6982 4.31417 27.657 4.45324 27.657C4.63972 27.657 4.81857 27.731 4.95044 27.8629C5.0823 27.9948 5.15638 28.1736 5.15638 28.3601ZM21.0943 29.0632C20.9552 29.0632 20.8193 29.022 20.7037 28.9447C20.588 28.8675 20.4979 28.7577 20.4447 28.6292C20.3915 28.5007 20.3775 28.3593 20.4047 28.2229C20.4318 28.0865 20.4988 27.9612 20.5971 27.8629C20.6954 27.7646 20.8207 27.6976 20.9571 27.6705C21.0935 27.6433 21.2349 27.6573 21.3634 27.7105C21.4919 27.7637 21.6017 27.8538 21.679 27.9694C21.7562 28.0851 21.7975 28.221 21.7975 28.3601C21.7975 28.5466 21.7234 28.7254 21.5915 28.8573C21.4596 28.9892 21.2808 29.0632 21.0943 29.0632Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M3.28134 17.1098V16.1723H2.81258C2.68829 16.1722 2.56913 16.1228 2.48125 16.0349C2.39336 15.947 2.34394 15.8278 2.34381 15.7035V10.0784H3.28134C3.40566 10.0784 3.52489 10.029 3.6128 9.9411C3.70071 9.85319 3.7501 9.73396 3.7501 9.60963C3.7501 9.48531 3.70071 9.36608 3.6128 9.27817C3.52489 9.19026 3.40566 9.14087 3.28134 9.14087H0.468763C0.344439 9.14087 0.225207 9.19026 0.137297 9.27817C0.0493874 9.36608 0 9.48531 0 9.60963C0 9.73396 0.0493874 9.85319 0.137297 9.9411C0.225207 10.029 0.344439 10.0784 0.468763 10.0784H1.40629V15.7035C1.40669 16.0764 1.55499 16.4338 1.81863 16.6975C2.08227 16.9611 2.43973 17.1094 2.81258 17.1098H3.28134Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M5.62516 18.7505H20.1568C20.5296 18.7501 20.8871 18.6018 21.1507 18.3381C21.4144 18.0745 21.5627 17.717 21.5631 17.3442V15.9379C21.5627 15.5651 21.4144 15.2076 21.1507 14.944C20.8871 14.6803 20.5296 14.532 20.1568 14.5316H5.62516C5.25231 14.532 4.89486 14.6803 4.63121 14.944C4.36757 15.2076 4.21928 15.5651 4.21887 15.9379V17.3442C4.21928 17.717 4.36757 18.0745 4.63121 18.3381C4.89486 18.6018 5.25231 18.7501 5.62516 18.7505ZM5.1564 15.9379C5.15652 15.8136 5.20595 15.6945 5.29383 15.6066C5.38171 15.5187 5.50087 15.4693 5.62516 15.4691H20.1568C20.2811 15.4693 20.4002 15.5187 20.4881 15.6066C20.576 15.6945 20.6254 15.8136 20.6256 15.9379V17.3442C20.6254 17.4685 20.576 17.5876 20.4881 17.6755C20.4002 17.7634 20.2811 17.8128 20.1568 17.813H5.62516C5.50087 17.8128 5.38171 17.7634 5.29383 17.6755C5.20595 17.5876 5.15652 17.4685 5.1564 17.3442V15.9379Z\"\n fill=\"#FF9800\"\n />\n </svg>\n </Grid>\n <Grid item xs={5}>\n <Typography variant=\"h6\" className={classes.title}>\n Work Styles\n </Typography>\n <CustomLinearProgress variant=\"determinate\" value={stylesScore} />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Grid item>\n <ResponsiveContainer aspect={0.8} maxHeight={isOnPrintMode ? 300 :248}>\n <RadarChart\n data={data}\n margin={{\n top: 0,\n right: isOnPrintMode ? 0 : 80,\n bottom: 0,\n left: isOnPrintMode ? 0 : 80\n }}\n >\n <PolarGrid />\n <PolarAngleAxis dataKey={\"label\"} />\n <PolarRadiusAxis domain={[0, 100]} angle={90} />\n <Radar\n name=\"Required\"\n dataKey=\"value\"\n stroke=\"#ff6505\"\n fill=\"#ff6505\"\n strokeWidth={3}\n fillOpacity={0.1}\n isAnimationActive={!isOnPrintMode}\n />\n <Radar\n name=\"Candidate Score\"\n dataKey=\"candidate\"\n stroke=\"#696969\"\n fill=\"#000000\"\n strokeWidth={3}\n fillOpacity={0.1}\n />\n <Legend />\n <Tooltip />\n </RadarChart>\n </ResponsiveContainer>\n </Grid>\n </Paper>\n );\n};\n","import { AppBar, Grid, Toolbar, Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport { InterestsPanel } from \"./InterestsPanel\";\nimport { SkillsPanel } from \"./SkillsPanel\";\nimport { StylesPanel } from \"./StylesPanel\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles(theme => ({\n gridcont: {\n height: \"100%\"\n },\n griditem: {\n height: \"100%\"\n //padding : theme.spacing(2)\n }\n}));\n\nconst PanelGroup = ({\n isOnPrintMode,\n job,\n candidateInterestsScore,\n candidateStyles\n}) => {\n const classes = useStyles();\n\n if (isOnPrintMode) {\n return (\n <Grid\n container\n direction=\"column\"\n justify=\"space-between\"\n spacing={3}\n className=\"section\"\n >\n <Grid item>\n <Grid container>\n <Grid item xs>\n <SkillsPanel\n isOnPrintMode={isOnPrintMode}\n skills={job.skills}\n skillScore={job.skillScore}\n />\n </Grid>\n </Grid>\n </Grid>\n\n <Grid item>\n <Grid container direction=\"row\" justify=\"space-between\" spacing={3}>\n <Grid item xs={6}>\n <InterestsPanel\n isOnPrintMode={isOnPrintMode}\n interestScore={job.interestScore}\n data={Object.keys(job.interests).map(key => ({\n label: key,\n value: job.interests[key],\n candidate: candidateInterestsScore[key.toLowerCase()]\n }))}\n />\n </Grid>\n <Grid item xs={6}>\n <StylesPanel\n isOnPrintMode={isOnPrintMode}\n stylesScore={job.stylesScore}\n data={Object.keys(job.styles).map(key => {\n if (key === \"Responsiveness to feedback\") {\n return {\n label: \"Responsiveness\",\n value: job.styles[key],\n candidate: candidateStyles.find(\n a => a.name === \"Responsiveness\"\n ).latest\n };\n }\n return {\n label: key,\n value: job.styles[key],\n candidate: candidateStyles.find(a => a.name === key).latest\n };\n })}\n />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n );\n }\n return (\n <Grid container spacing={2} className={classes.gridcont}>\n <Grid item xs={4} className={classes.griditem}>\n <SkillsPanel\n isOnPrintMode={isOnPrintMode}\n skills={job.skills}\n skillScore={job.skillScore}\n />\n </Grid>\n <Grid item xs={4} className={classes.griditem}>\n <InterestsPanel\n isOnPrintMode={isOnPrintMode}\n interestScore={job.interestScore}\n data={Object.keys(job.interests).map(key => ({\n label: key,\n value: job.interests[key],\n candidate: candidateInterestsScore[key.toLowerCase()]\n }))}\n />\n </Grid>\n <Grid item xs={4} className={classes.griditem}>\n <StylesPanel\n isOnPrintMode={isOnPrintMode}\n stylesScore={job.stylesScore}\n data={Object.keys(job.styles).map(key => {\n if (key === \"Responsiveness to feedback\") {\n return {\n label: \"Responsiveness\",\n value: job.styles[key],\n candidate: candidateStyles.find(\n a => a.name === \"Responsiveness\"\n ).latest\n };\n }\n return {\n label: key,\n value: job.styles[key],\n candidate: candidateStyles.find(a => a.name === key).latest\n };\n })}\n />\n </Grid>\n </Grid>\n );\n};\n\nexport const JobMatchesGrid = ({\n jobs,\n classes,\n candidateStyles,\n candidateInterestsScore,\n type,\n isOnPrintMode\n}) => {\n if (jobs.length === 0) {\n return null;\n }\n\n return (\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Top 5 {type === \"normal\" ? \"Normal\" : \"Tech\"} Job Matches\n </Typography>\n </Toolbar>\n </AppBar>\n \n </Grid>\n <Grid item>\n {jobs.map((job, index) => {\n return (<>\n <Grid\n container\n direction=\"column\"\n spacing={1}\n key={job.sector + index}\n >\n <Grid item className=\"pagebreak\">\n \n <Typography\n variant=\"subtitle2\"\n component=\"h1\"\n className={classes.subtitle3}\n >\n Occupation {index + 1}:{\" \"}\n {type === \"normal\" ? (\n job.title\n ) : (\n <a href={job.url} rel=\"noopener noreferrer\" target=\"_blank\">\n {job.title}\n </a>\n )}{\" \"}\n {type === \"normal\" ? null : <>(Sector: {job.sector})</>}\n </Typography>\n </Grid>\n\n <Grid\n item\n className={\n isOnPrintMode\n ? classes.jobpanelcontainerprint\n : classes.jobpanelcontainer\n }\n >\n {\n <PanelGroup\n isOnPrintMode={isOnPrintMode}\n candidateInterestsScore={candidateInterestsScore}\n candidateStyles={candidateStyles}\n job={job}\n />\n }\n </Grid>\n \n </Grid>\n {index %2 === 0 && (<div class=\"pagebreak\" ></div>)}\n \n </>\n );\n })}\n </Grid>\n </Grid>\n );\n};\n","import { Grid } from \"@material-ui/core\";\nimport React, { useEffect } from \"react\";\nimport { JobMatchesGrid } from \"./JobMatchesGrid\";\nimport { bindActionCreators } from \"redux\";\nimport { getCandidateJobMatches } from \"../../../../actions/candidates_actions\";\nimport { connect } from \"react-redux\";\n\nconst JobMatchesComponent = ({\n classes,\n candidates: {\n selectedCandidateData: { normalJobMatches, techJobMatches },\n },\n candidateDetails,\n candidateStyles,\n candidateInterestsScore,\n isOnPrintMode,\n getCandidateJobMatches,\n}) => {\n useEffect(() => {\n async function loadJobs() {\n try {\n getCandidateJobMatches();\n } catch (error) {\n console.log(error);\n }\n }\n if (!techJobMatches) {\n loadJobs();\n }\n }, [getCandidateJobMatches, techJobMatches]);\n\n if (!normalJobMatches || !techJobMatches) {\n return null;\n }\n\n return (\n <Grid container direction=\"column\">\n <Grid item>\n <JobMatchesGrid\n isOnPrintMode={isOnPrintMode}\n type=\"tech\"\n jobs={techJobMatches}\n classes={classes}\n candidateStyles={candidateStyles}\n candidateInterestsScore={candidateInterestsScore}\n />\n </Grid>\n <Grid item xs>\n <JobMatchesGrid\n isOnPrintMode={isOnPrintMode}\n type=\"normal\"\n jobs={normalJobMatches}\n classes={classes}\n candidateStyles={candidateStyles}\n candidateInterestsScore={candidateInterestsScore}\n />\n </Grid>\n </Grid>\n );\n};\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n getCandidateJobMatches,\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nexport const JobMatches = connect(\n mapStateToProps,\n mapDispatchToProps\n)(JobMatchesComponent);\n","var _rect, _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgSkilledit = function SvgSkilledit(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n rx: 4,\n fill: \"#EEFBF4\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.3037 33.764C14.3037 33.876 14.3482 33.9835 14.4275 34.0628C14.5068 34.1421 14.6143 34.1866 14.7264 34.1866H17.1967C17.3088 34.1866 17.4163 34.1421 17.4956 34.0628C17.5748 33.9835 17.6194 33.876 17.6194 33.764C17.6194 33.6519 17.5748 33.5444 17.4956 33.4651C17.4163 33.3858 17.3088 33.3413 17.1967 33.3413H14.7264C14.6143 33.3413 14.5068 33.3858 14.4275 33.4651C14.3482 33.5444 14.3037 33.6519 14.3037 33.764Z\",\n fill: \"#53D28E\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1409 31.6513H14.0277C13.9262 31.3108 13.7055 31.0182 13.406 30.8271C13.1065 30.6359 12.7482 30.5589 12.3966 30.6102C12.045 30.6615 11.7236 30.8377 11.4912 31.1064C11.2588 31.3752 11.1309 31.7187 11.1309 32.074C11.1309 32.4293 11.2588 32.7728 11.4912 33.0415C11.7236 33.3103 12.045 33.4864 12.3966 33.5377C12.7482 33.589 13.1065 33.5121 13.406 33.3209C13.7055 33.1297 13.9262 32.8371 14.0277 32.4966H16.1409C16.253 32.4966 16.3605 32.4521 16.4398 32.3728C16.519 32.2936 16.5636 32.1861 16.5636 32.074C16.5636 31.9619 16.519 31.8544 16.4398 31.7751C16.3605 31.6959 16.253 31.6513 16.1409 31.6513ZM12.614 32.708C12.4886 32.708 12.366 32.6708 12.2617 32.6011C12.1575 32.5314 12.0762 32.4324 12.0283 32.3166C11.9803 32.2008 11.9677 32.0733 11.9922 31.9503C12.0166 31.8273 12.077 31.7144 12.1657 31.6257C12.2543 31.537 12.3673 31.4767 12.4903 31.4522C12.6133 31.4277 12.7407 31.4403 12.8566 31.4883C12.9724 31.5363 13.0714 31.6175 13.1411 31.7218C13.2107 31.826 13.2479 31.9486 13.2479 32.074C13.2479 32.1574 13.2315 32.24 13.1995 32.3171C13.1675 32.3941 13.1206 32.4641 13.0615 32.523C13.0024 32.5819 12.9323 32.6286 12.8551 32.6603C12.7779 32.692 12.6953 32.7082 12.6118 32.708H12.614Z\",\n fill: \"#53D28E\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8561 27.3833C23.1371 25.4057 24.4386 23.5803 25.6957 21.8309C26.0337 21.3598 26.3506 20.9161 26.657 20.4576C27.3605 19.3569 28.1697 17.8611 28.1697 16.042C28.1697 11.1341 24.0942 7.14307 19.0848 7.14307C14.0755 7.14307 10 11.1341 10 16.042C10.0027 17.8937 10.6062 19.6945 11.7198 21.1739C11.9458 21.4781 12.1761 21.7781 12.4064 22.0781C13.6128 23.6521 14.7516 25.1374 15.1953 27.0516L15.2143 27.1297C15.42 28.0314 15.534 28.9516 15.5544 29.8763H14.7262C14.6142 29.8763 14.5067 29.9208 14.4274 30.0001C14.3482 30.0793 14.3037 30.1868 14.3037 30.2989C14.3037 30.4109 14.3482 30.5184 14.4274 30.5976C14.5067 30.6769 14.6142 30.7214 14.7262 30.7214H17.5784C17.6905 30.7214 17.798 30.6769 17.8772 30.5976C17.9565 30.5184 18.001 30.4109 18.001 30.2989V26.9184C18.001 26.8064 17.9565 26.6989 17.8772 26.6197C17.798 26.5404 17.6905 26.4959 17.5784 26.4959C17.4664 26.4959 17.3589 26.5404 17.2797 26.6197C17.2004 26.6989 17.1559 26.8064 17.1559 26.9184V29.8763H16.3995C16.3798 28.8805 16.258 27.8894 16.0361 26.9184L16.0192 26.8466C15.5354 24.755 14.2847 23.1261 13.0783 21.5499C12.8522 21.2542 12.624 20.9563 12.4001 20.6562C11.3972 19.3264 10.8516 17.7076 10.8451 16.042C10.8451 11.601 14.5424 7.98817 19.0848 7.98817C23.6273 7.98817 27.3246 11.601 27.3246 16.042C27.3246 17.6435 26.5872 18.9998 25.9513 19.995C25.6555 20.4344 25.3428 20.876 25.0006 21.3387C23.6843 23.1789 22.3216 25.0825 22.011 27.2544L21.9983 27.3431C21.9497 27.6748 21.8209 28.5579 21.7533 29.5974C21.7533 29.5974 21.7533 29.5974 21.7533 29.6101C21.7533 29.6228 21.7533 29.6101 21.7533 29.6228C21.7533 29.6355 21.7533 29.6418 21.7533 29.6524C21.7525 29.6671 21.7525 29.6819 21.7533 29.6967C21.7533 29.7094 21.7533 29.7242 21.7533 29.7369C21.7533 29.7495 21.7533 29.7643 21.7659 29.777C21.7786 29.7897 21.7765 29.8024 21.7828 29.8129L21.8018 29.8488L21.8251 29.8805L21.8504 29.9122L21.88 29.9397L21.9117 29.9672L21.9455 29.9883L21.9814 30.0073L22.0195 30.0221L22.0596 30.0348H22.1019H22.1314H26.7246C26.8261 30.3752 27.0467 30.6677 27.3462 30.8588C27.6456 31.05 28.0038 31.1269 28.3554 31.0756C28.7069 31.0244 29.0282 30.8483 29.2605 30.5795C29.4929 30.3108 29.6208 29.9675 29.6208 29.6122C29.6208 29.257 29.4929 28.9136 29.2605 28.6449C29.0282 28.3762 28.7069 28.2001 28.3554 28.1488C28.0038 28.0975 27.6456 28.1744 27.3462 28.3656C27.0467 28.5567 26.8261 28.8492 26.7246 29.1897H22.6385C22.7061 28.3868 22.8012 27.7276 22.8498 27.4551L22.8561 27.3833ZM28.1697 28.9932C28.295 28.9932 28.4176 29.0303 28.5218 29.1C28.6261 29.1696 28.7073 29.2686 28.7553 29.3844C28.8032 29.5003 28.8158 29.6277 28.7913 29.7507C28.7669 29.8736 28.7065 29.9865 28.6179 30.0752C28.5292 30.1638 28.4163 30.2242 28.2933 30.2486C28.1704 30.2731 28.0429 30.2606 27.9271 30.2126C27.8113 30.1646 27.7123 30.0834 27.6427 29.9791C27.573 29.8749 27.5359 29.7524 27.5359 29.627C27.5359 29.4589 27.6026 29.2977 27.7215 29.1788C27.8404 29.06 28.0016 28.9932 28.1697 28.9932Z\",\n fill: \"#53D28E\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4417 20.339C13.4431 20.5408 13.5244 20.7337 13.6678 20.8757L14.6481 21.856C14.7943 21.9957 14.9888 22.0737 15.1911 22.0737C15.3933 22.0737 15.5878 21.9957 15.7341 21.856L16.127 21.4651C16.1904 21.5032 16.2559 21.5349 16.3193 21.5708V20.5862H16.3045L16.0151 20.3918L15.1932 21.2137L14.3291 20.3496L15.1509 19.5277L14.9566 19.2383C14.5813 18.6841 14.3226 18.0595 14.196 17.4023L14.1305 17.06H12.9579V15.8283H14.1199L14.1854 15.486C14.312 14.8289 14.5708 14.2042 14.946 13.6501L15.1404 13.3606L14.3185 12.5387L15.1826 11.6746L16.0045 12.4965L16.2939 12.3021C16.848 11.9267 17.4727 11.6679 18.1299 11.5415L18.4722 11.476V10.3119H19.6955V11.4739L20.0377 11.5394C20.695 11.6658 21.3197 11.9246 21.8737 12.3L22.1632 12.4944L22.985 11.6725L23.8491 12.5366L23.0273 13.3585L23.2217 13.6479C23.5969 14.2021 23.8557 14.8267 23.9822 15.4839L24.0477 15.8262H25.2119V17.0495H24.0499L23.9844 17.3917C23.8578 18.0489 23.599 18.6735 23.2238 19.2277L23.0294 19.5172L23.8513 20.339L22.9871 21.2031L22.1653 20.3813L21.8758 20.5757L21.8547 20.5883V21.5729C21.9202 21.537 21.9878 21.5032 22.0533 21.4651L22.4442 21.856C22.5904 21.9957 22.7849 22.0737 22.9871 22.0737C23.1894 22.0737 23.3839 21.9957 23.5301 21.856L24.502 20.8757C24.5734 20.8044 24.6301 20.7198 24.6687 20.6266C24.7074 20.5335 24.7273 20.4336 24.7273 20.3327C24.7273 20.2318 24.7074 20.1319 24.6687 20.0388C24.6301 19.9456 24.5734 19.861 24.502 19.7897L24.1111 19.3967C24.3933 18.926 24.6067 18.4173 24.745 17.8861H25.2985C25.4988 17.8834 25.6901 17.8026 25.8318 17.6609C25.9734 17.5193 26.0542 17.328 26.057 17.1276V15.7501C26.0564 15.5469 25.9754 15.3521 25.8317 15.2084C25.688 15.0647 25.4933 14.9838 25.29 14.9832H24.7365C24.5983 14.452 24.3849 13.9433 24.1027 13.4726L24.4935 13.0817C24.565 13.0105 24.6216 12.9258 24.6603 12.8327C24.6989 12.7395 24.7188 12.6396 24.7188 12.5387C24.7188 12.4379 24.6989 12.338 24.6603 12.2448C24.6216 12.1516 24.565 12.067 24.4935 11.9958L23.5217 11.0218C23.3754 10.882 23.181 10.8041 22.9787 10.8041C22.7764 10.8041 22.5819 10.882 22.4357 11.0218L22.0427 11.4126C21.572 11.1304 21.0633 10.917 20.5321 10.7788V10.2337C20.5316 10.0319 20.4518 9.83846 20.3099 9.69499C20.168 9.55152 19.9754 9.46957 19.7736 9.4668H18.3961C18.1929 9.46735 17.9981 9.54833 17.8544 9.69204C17.7107 9.83575 17.6298 10.0305 17.6292 10.2337V10.7873C17.098 10.9254 16.5893 11.1389 16.1186 11.4211L15.7277 11.0302C15.5815 10.8905 15.387 10.8125 15.1847 10.8125C14.9825 10.8125 14.788 10.8905 14.6418 11.0302L13.6678 12.0021C13.5964 12.0733 13.5397 12.158 13.501 12.2511C13.4624 12.3443 13.4425 12.4442 13.4425 12.5451C13.4425 12.646 13.4624 12.7458 13.501 12.839C13.5397 12.9322 13.5964 13.0168 13.6678 13.0881L14.0586 13.481C13.7765 13.9518 13.563 14.4605 13.4248 14.9917H12.8797C12.6779 14.9922 12.4845 15.072 12.341 15.2139C12.1975 15.3558 12.1156 15.5484 12.1128 15.7501V17.1298C12.1134 17.333 12.1943 17.5277 12.338 17.6714C12.4817 17.8151 12.6765 17.8961 12.8797 17.8967H13.4333C13.5715 18.4279 13.7849 18.9365 14.0671 19.4073L13.6762 19.7982C13.6032 19.8682 13.5449 19.9522 13.5046 20.045C13.4643 20.1379 13.443 20.2378 13.4417 20.339Z\",\n fill: \"#53D28E\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5783 25.2326C17.6904 25.2326 17.7979 25.1881 17.8771 25.1088C17.9563 25.0296 18.0009 24.9221 18.0009 24.81V20.2972C18.7061 20.5062 19.4569 20.5062 20.1622 20.2972V32.1688C20.1622 32.2808 20.2067 32.3883 20.286 32.4676C20.3652 32.5468 20.4727 32.5913 20.5848 32.5913H23.3715C23.473 32.9318 23.6936 33.2243 23.9931 33.4154C24.2925 33.6065 24.6507 33.6835 25.0023 33.6322C25.3538 33.5809 25.6751 33.4048 25.9075 33.1361C26.1398 32.8674 26.2677 32.524 26.2677 32.1688C26.2677 31.8135 26.1398 31.4702 25.9075 31.2014C25.6751 30.9327 25.3538 30.7566 25.0023 30.7053C24.6507 30.6541 24.2925 30.731 23.9931 30.9221C23.6936 31.1133 23.473 31.4058 23.3715 31.7462H21.0073V19.9338C21.5999 19.596 22.0883 19.1019 22.4193 18.5055C22.7503 17.909 22.9112 17.2332 22.8844 16.5516C22.8576 15.87 22.6441 15.2088 22.2673 14.6403C21.8905 14.0717 21.3647 13.6175 20.7474 13.3272C20.683 13.2961 20.6118 13.2819 20.5404 13.2858C20.469 13.2897 20.3997 13.3117 20.3391 13.3497C20.2785 13.3877 20.2286 13.4405 20.1939 13.5031C20.1593 13.5657 20.1411 13.636 20.1411 13.7075V15.89L19.0847 16.5703L18.0283 15.89V13.7075C18.0283 13.636 18.0101 13.5657 17.9755 13.5031C17.9408 13.4405 17.8909 13.3877 17.8303 13.3497C17.7697 13.3117 17.7004 13.2897 17.629 13.2858C17.5576 13.2819 17.4864 13.2961 17.422 13.3272C16.8054 13.6173 16.2802 14.0709 15.9035 14.6387C15.5269 15.2065 15.3132 15.8668 15.2857 16.5476C15.2583 17.2285 15.4181 17.9038 15.7478 18.5001C16.0776 19.0964 16.5645 19.5908 17.1558 19.9296V24.81C17.1558 24.9221 17.2003 25.0296 17.2795 25.1088C17.3588 25.1881 17.4662 25.2326 17.5783 25.2326ZM24.7891 31.5349C24.9145 31.5349 25.037 31.5721 25.1413 31.6418C25.2455 31.7114 25.3267 31.8104 25.3747 31.9262C25.4227 32.042 25.4352 32.1695 25.4108 32.2924C25.3863 32.4154 25.326 32.5283 25.2373 32.617C25.1487 32.7056 25.0357 32.766 24.9128 32.7904C24.7898 32.8149 24.6624 32.8023 24.5466 32.7544C24.4308 32.7064 24.3318 32.6251 24.2621 32.5209C24.1925 32.4167 24.1553 32.2941 24.1553 32.1688C24.1553 32.0007 24.2221 31.8395 24.341 31.7206C24.4598 31.6017 24.621 31.5349 24.7891 31.5349ZM16.1268 16.7013C16.1258 16.2745 16.2201 15.8529 16.4029 15.4673C16.5856 15.0817 16.8522 14.7417 17.1832 14.4723V16.1203C17.1833 16.191 17.2012 16.2605 17.2352 16.3225C17.2691 16.3846 17.3181 16.4371 17.3776 16.4752L18.8565 17.4281C18.9248 17.4722 19.0044 17.4957 19.0858 17.4957C19.1671 17.4957 19.2467 17.4722 19.315 17.4281L20.7939 16.4752C20.853 16.4368 20.9016 16.3842 20.9352 16.3222C20.9688 16.2602 20.9863 16.1908 20.9862 16.1203V14.4723C21.3172 14.7417 21.5838 15.0817 21.7665 15.4673C21.9493 15.8529 22.0436 16.2745 22.0426 16.7013C22.0426 17.4858 21.7309 18.2381 21.1762 18.7928C20.6215 19.3475 19.8692 19.6592 19.0847 19.6592C18.3002 19.6592 17.5479 19.3475 16.9932 18.7928C16.4385 18.2381 16.1268 17.4858 16.1268 16.7013Z\",\n fill: \"#53D28E\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSkilledit, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/skilledit.3f4725f7.svg\";\nexport { ForwardRef as ReactComponent };","import {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n Slider,\n Button\n} from \"@material-ui/core\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport React, { useEffect, useState } from \"react\";\n\nconst useStyles = makeStyles((theme) => ({\n slider_root: {\n color: \"#53D28E\",\n height: 10,\n marginTop: -7,\n marginRight: 10,\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: -14\n }\n },\n slider_root_orange: {\n color: \"#FF6A14;\",\n height: 10,\n marginTop: -7,\n marginRight: 10,\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: -14\n }\n },\n slider_thumb: {\n height: 14,\n width: 14,\n backgroundColor: \"#fff\",\n border: \"3px solid currentColor\",\n marginTop: -2,\n marginLeft: 0,\n \"&:focus, &:hover, &$active\": {\n boxShadow: \"inherit\",\n },\n },\n slider_active: {},\n slider_valueLabel: {\n left: \"calc(-50% + 4px)\",\n },\n slider_track: {\n height: 10,\n borderRadius: 10,\n paddingRight: 12,\n },\n slider_rail: {\n height: 10,\n borderRadius: 10,\n paddingRight: 12,\n backgroundColor: \"#dedede\",\n },\n slider_mark: {\n backgroundColor: \"#DDE0E5\",\n height: 4,\n width: 4,\n borderRadius: 4,\n marginTop: 3,\n marginLeft: 4,\n },\n slider_markActive: {\n backgroundColor: \"#53D28E\",\n },\n slider_markActiveOrange: {\n backgroundColor: \"#FF6A14\",\n },\n}));\n\nconst SkillRow = ({ skill, proficiency, projectedLevel, description, pendingValidationRequest, classes, editSkillLevel, hasUpdates, setHasUpdates, createValidationRequest }) => {\n const proficiencyLevel = {undefined: \"not set\", 0:\"beginner\", 1:\"beginner\", 2:\"proficient\", 3:\"experienced\", 4:\"expert\"}\n return (\n <TableRow>\n <TableCell component=\"th\" scope=\"row\">\n <ExpansionPanel\n style={{\n padding: \"0\",\n boxShadow: \"none\",\n }}\n >\n <ExpansionPanelSummary\n aria-controls=\"panel1a-content\"\n id=\"panel2a-header\"\n style={{ padding: \"0\" }}\n >\n <Typography style={{ borderBottom: \"1px dashed #000\" }}>\n {skill}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails style={{ padding: \"0\" }}>\n {description}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </TableCell>\n <TableCell align=\"left\" style={{width:\"50%\"}}>\n {\"User Expertise Level: \" + proficiencyLevel[proficiency]}\n <Slider\n value={proficiency}\n aria-labelledby=\"discrete-slider\"\n /*valueLabelDisplay=\"auto\"*/\n step={1}\n marks\n min={1}\n classes={{\n root: classes.slider_root,\n track: classes.slider_track,\n rail: classes.slider_rail,\n thumb: classes.slider_thumb,\n mark: classes.slider_mark,\n markActive: classes.slider_markActive,\n }}\n max={4}\n />\n {\"Your Expertise Evaluation Level: \" + proficiencyLevel[projectedLevel]}\n <Slider\n value={projectedLevel ? projectedLevel : 0}\n aria-labelledby=\"discrete-slider\"\n /*valueLabelDisplay=\"auto\"*/\n step={1}\n marks\n min={1}\n classes={{\n root: classes.slider_root_orange,\n track: classes.slider_track,\n rail: classes.slider_rail,\n thumb: classes.slider_thumb,\n mark: classes.slider_mark,\n markActive: classes.slider_markActiveOrange,\n }}\n onChange={(event, newValue) => {\n editSkillLevel(skill, newValue)\n setHasUpdates([...hasUpdates, skill]);\n }}\n max={4}\n \n />\n {/* {str} <LinearProgress variant=\"determinate\" value={proficiency*25} style={{marginTop:10}}/>{\" \"} */}\n </TableCell>\n <TableCell>\n <Button variant=\"contained\" disabled={pendingValidationRequest} color=\"primary\" size=\"small\" onClick={() => createValidationRequest(skill)}>\n Request Validation\n </Button>\n </TableCell>\n </TableRow>\n );\n};\n\nconst SkillProficiencyTable = ({ skills, classes, editSkillLevel, hasUpdates, setHasUpdates, createValidationRequest }) => (\n <Table>\n <TableHead>\n <TableRow>\n <TableCell>Skill</TableCell>\n <TableCell style={{width:\"40%\"}} align=\"right\">Expertise</TableCell>\n <TableCell style={{width:\"10%\"}} align=\"right\"></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {skills.map((skill) => (\n <SkillRow key={\"_\" + skill.skill} {...skill} classes={classes} editSkillLevel={editSkillLevel} hasUpdates={hasUpdates} setHasUpdates={setHasUpdates} createValidationRequest={createValidationRequest}/>\n ))}\n </TableBody>\n </Table>\n);\n\nconst SkillsExpansionPanel = ({ job, defaultExpanded, editSkillLevel, hasUpdates, setHasUpdates, saveSkills, createValidationRequest }) => {\n const [isExpanded, toggleExpansion] = useState(false);\n const [subPannelExpanded, setSubPanelExpanded] = useState(\"skill\");\n const classes = useStyles();\n\n useEffect(() => {\n toggleExpansion(defaultExpanded);\n }, [defaultExpanded]);\n\n return (\n <ExpansionPanel\n expanded={isExpanded}\n onChange={(_, isExpanded) => toggleExpansion(isExpanded)}\n >\n <ExpansionPanelSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n {\n ((job.title.includes(\"Manually Added\") || job.title.includes(\"Resource Added Skills\")) ? (\n <Typography>{job.title}</Typography>\n ) : (\n <Typography>Skill Summary for {job.title}</Typography>\n )\n )}\n {hasUpdates && hasUpdates.length > 0 && (\n <div style={{width:\"100%\", display:\"flex\", flexDirection:\"row-reverse\"}}>\n <Button\n variant=\"contained\" \n color=\"primary\" \n onClick={(event) => {\n event.stopPropagation()\n saveSkills(hasUpdates);\n setHasUpdates([])\n }}\n > Save Changes </Button>\n </div>\n )}\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <div>\n <ExpansionPanel\n expanded={subPannelExpanded === \"skill\" ? true : false}\n onChange={(_, isExpanded) => subPannelExpanded === \"skill\" ? setSubPanelExpanded(\"\") : setSubPanelExpanded(\"skill\")}\n >\n <ExpansionPanelSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography>Skills</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <SkillProficiencyTable skills={job.skills} classes={classes} editSkillLevel={editSkillLevel} hasUpdates={hasUpdates} setHasUpdates={setHasUpdates} createValidationRequest={createValidationRequest}/>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n <ExpansionPanel\n expanded={subPannelExpanded === \"optional\" ? true : false}\n onChange={(_, isExpanded) => subPannelExpanded === \"optional\" ? setSubPanelExpanded(\"\") : setSubPanelExpanded(\"optional\")}\n >\n <ExpansionPanelSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography>Optional Skills</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <SkillProficiencyTable skills={job.optionalSkills} classes={classes} editSkillLevel={editSkillLevel} hasUpdates={hasUpdates} setHasUpdates={setHasUpdates} createValidationRequest={createValidationRequest}/>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n <ExpansionPanel\n expanded={subPannelExpanded === \"deleted\" ? true : false}\n onChange={(_, isExpanded) => subPannelExpanded === \"deleted\" ? setSubPanelExpanded(\"\") : setSubPanelExpanded(\"deleted\")}\n >\n <ExpansionPanelSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography>Removed Skills</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <SkillProficiencyTable skills={job.deletedSkills} classes={classes} editSkillLevel={editSkillLevel} hasUpdates={hasUpdates} setHasUpdates={setHasUpdates} createValidationRequest={createValidationRequest}/>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n );\n};\n\nexport const SkillsBackpackSummary = ({\n skillsInfo,\n isOnPrintMode,\n groupSkillsBackpack,\n editSkillLevel,\n saveSkills,\n createValidationRequest\n}) => {\n const [hasUpdates, setHasUpdates] = useState([]);\n\n if (!skillsInfo) {\n return null;\n }\n if (groupSkillsBackpack) {\n return (\n <div style={{ paddingLeft: \"1em\" }}>\n {skillsInfo.map((backpack) => {\n const proficientLevels = Array.from(\n new Set(backpack.skills.map((skill) => skill.proficiency))\n );\n const groupedSkills = proficientLevels.reduce(\n (acl, curr) =>\n Object.assign({}, acl, {\n [curr]: backpack.skills\n .filter((skill) => skill.proficiency === curr)\n .map((a) => a.skill),\n }),\n {}\n );\n return (\n <>\n <p>\n Skills Backpack for <b>{backpack.title}</b>\n </p>\n {Object.keys(groupedSkills).map((proficiency) => (\n <p key={proficiency}>\n {proficiency} in: {groupedSkills[proficiency].join(\", \")}\n </p>\n ))}\n </>\n );\n })}\n </div>\n );\n }\n return (\n <>\n {skillsInfo.map((job, i) => (\n <SkillsExpansionPanel\n job={job}\n key={job.title + \"_\" + i}\n defaultExpanded={isOnPrintMode}\n editSkillLevel={editSkillLevel}\n setHasUpdates={setHasUpdates}\n hasUpdates={hasUpdates}\n saveSkills={saveSkills}\n createValidationRequest={createValidationRequest}\n />\n ))}\n </>\n );\n};\n","import React, { Component, useState } from \"react\";\nimport { withStyles, makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport {\n Grid,\n Dialog,\n Typography,\n IconButton,\n Button,\n useMediaQuery,\n Tooltip\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport _ from \"lodash\";\n// import { OccupationSearch } from '../Main/OccupationSearch'\nimport {EntitiesAutoComplete} from \"../../../Common/EntitiesAutoComplete\"\nimport { ReactComponent as SkillsEditIcon } from \"./icons/skilledit.svg\";\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: 20\n },\n titleContainer:{\n backgroundColor: \"white\",\n borderBottom: \"1px solid #EDEFF2\",\n textAlign: \"center\",\n },\n titleRow:{\n width:\"100%\",\n justifyContent:\"space-between\"\n },\n bodyContainer:{\n padding: 20\n },\n title:{\n fontSize: 16,\n fontWeight: \"bold\",\n color: \"#5A6375\",\n textTransform: \"capitalize\",\n alignItems: \"center\",\n display: \"flex\"\n },\n icon: {\n marginInline: \"10px\",\n },\n skillRow:{\n borderTop: \"1px solid #EDEFF2\",\n },\n skillName:{\n fontSize: 14,\n color: \"#5A6375\",\n textTransform: \"capitalize\",\n },\n buttonContainer:{\n display:\"flex\",\n flexDirection: \"row-reverse\"\n }\n}));\n\n\nexport default function NewSkills({open, closePanel, existingSkills}){\n const classes = useStyles();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n const [newSkillList, setNewSkillList] = useState([]);\n return (\n <Dialog \n closePanel={() => {\n setNewSkillList([])\n closePanel()\n }}\n open={open}\n fullScreen={fullScreen}\n >\n <Grid\n container\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n className={classes.container}\n >\n <Grid item xs={12} className={classes.titleContainer}>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n className={classes.titleRow}\n >\n <Grid item>\n <Typography variant=\"h6\" className={classes.title}>\n <SkillsEditIcon className={classes.icon} />\n Add new skills\n </Typography>\n </Grid>\n <Grid item>\n <IconButton\n aria-label=\"close\"\n className={`close-button`}\n onClick={() => {\n closePanel();\n }}\n >\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={12} className={classes.bodyContainer}>\n <EntitiesAutoComplete\n size={\"large\"}\n classes={classes}\n type={\"skills\"}\n placeholder=\"Add new Skills\"\n onSelect={async (value)=>{\n if (value){\n setNewSkillList([...new Set([...newSkillList, value])]);\n }\n }}\n />\n </Grid>\n <Grid item xs={12} className={classes.list}>\n {newSkillList.map((skill) => ( \n <Grid\n container\n direction=\"row\"\n justify=\"space-between\"\n alignItems=\"center\"\n spacing={1}\n className={classes.skillRow}\n >\n <Grid item xs={2}>\n <Tooltip title={\"Remove Skill\"} arrow placement=\"top-start\">\n <IconButton\n aria-label=\"delete\"\n className={`skill-delete-${skill.replace(/ /gi,\"-\")}`}\n onClick={() => setNewSkillList(newSkillList.filter(item => skill !== item))}\n >\n <DeleteForeverIcon />\n </IconButton>\n </Tooltip> \n </Grid>\n <Grid item xs={10}>\n <Typography variant=\"h6\" className={classes.skillName}>\n {existingSkills.includes(skill) ? skill + \" (You already have this skill)\" : skill}\n </Typography>\n </Grid>\n </Grid>\n ))}\n </Grid>\n <Grid item xs={12} className={classes.buttonContainer}>\n <Button \n variant=\"contained\" \n color=\"primary\" \n size=\"small\" \n onClick={async () => {\n closePanel(newSkillList.filter(item => !existingSkills.includes(item)))\n setNewSkillList([])\n }}\n >\n Save Skills\n </Button>\n </Grid>\n </Grid>\n </Dialog>\n );\n}","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgRewardShield = function SvgRewardShield(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 51,\n height: 59,\n viewBox: \"0 0 51 59\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.9366 9.03833C32.9366 9.03833 39.4354 9.8006 50.6481 0C50.6481 0 53.0459 9.45576 45.321 10.2906L50.0214 11.9604C50.0214 11.9604 46.1521 20.6539 31.9829 13.7753L32.9366 9.03833Z\",\n fill: \"#FFB61C\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.0633 9.03833C18.0633 9.03833 11.5645 9.8006 0.351786 0C0.351786 0 -2.04607 9.45576 5.67885 10.2906L0.978499 11.9604C0.978499 11.9604 4.84777 20.6539 19.0169 13.7753L18.0633 9.03833Z\",\n fill: \"#FFB61C\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.4755 22.112C30.6639 22.112 34.87 17.9232 34.87 12.756C34.87 7.58876 30.6639 3.3999 25.4755 3.3999C20.2871 3.3999 16.0811 7.58876 16.0811 12.756C16.0811 17.9232 20.2871 22.112 25.4755 22.112Z\",\n fill: \"#FF5255\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.8705 12.756C34.8705 13.6521 34.7445 14.5125 34.5105 15.337C33.3767 19.2443 29.7593 22.112 25.476 22.112C21.1927 22.112 17.5573 19.2443 16.4415 15.337C16.2075 14.5125 16.0815 13.6521 16.0815 12.756C16.0815 7.594 20.2929 3.3999 25.476 3.3999C30.6592 3.3999 34.8705 7.594 34.8705 12.756Z\",\n fill: \"#FF6A14\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.4758 22.9185C20.9406 22.9185 16.9092 19.8894 15.6674 15.552C15.4155 14.6379 15.2715 13.7058 15.2715 12.7559C15.2715 7.14583 19.8427 2.59326 25.4758 2.59326C31.1089 2.59326 35.6802 7.14583 35.6802 12.7559C35.6802 13.7058 35.5542 14.6558 35.2842 15.552C34.0424 19.8894 30.0111 22.9185 25.4758 22.9185ZM25.4758 4.20638C20.7426 4.20638 16.8912 8.04201 16.8912 12.7559C16.8912 13.5624 16.9992 14.3511 17.2152 15.1218C18.259 18.7603 21.6604 21.3233 25.4758 21.3233C29.2912 21.3233 32.6926 18.7782 33.7365 15.1218C33.9524 14.3511 34.0604 13.5624 34.0604 12.7559C34.0604 8.04201 30.209 4.20638 25.4758 4.20638Z\",\n fill: \"#FFB61C\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.4755 57.4421C23.0819 55.9544 19.5364 53.7319 17.2328 52.0112C9.81803 46.5087 5.80469 41.6335 5.80469 31.686V17.6698C11.1858 17.383 18.8886 16.1463 25.4755 11.8984C32.0804 16.1463 39.7652 17.401 45.1463 17.6698V31.686C45.1463 41.6515 41.1329 46.5266 33.7181 52.0112C31.4145 53.714 27.8691 55.9365 25.4755 57.4421Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.4755 15.8599C30.9646 18.9248 36.8856 20.2511 41.7268 20.7888V31.6684C41.7268 35.8267 40.953 39.017 39.2972 41.7414C37.8215 44.1611 35.5358 46.4195 31.6845 49.2693C29.9747 50.5419 27.4012 52.1908 25.4755 53.4096C23.5498 52.1908 20.9942 50.5419 19.2665 49.2693C15.4151 46.4015 13.1295 44.1611 11.6537 41.7414C9.998 39.035 9.22413 35.8267 9.22413 31.6684V20.7888C14.0653 20.2511 19.9864 18.9069 25.4755 15.8599ZM25.4755 11.8809C18.8706 16.1287 11.1858 17.3834 5.80469 17.6522V31.6684C5.80469 41.6339 9.81803 46.5091 17.2328 51.9937C19.5364 53.7143 23.0819 55.9368 25.4755 57.4245C27.8691 55.9368 31.4145 53.7143 33.7181 51.9937C41.1329 46.4912 45.1463 41.616 45.1463 31.6684V17.6522C39.7652 17.3655 32.0804 16.1287 25.4755 11.8809Z\",\n fill: \"#F5F6F7\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.4754 58.9657C25.1875 58.9657 24.9175 58.894 24.6656 58.7326C21.786 56.9403 18.5466 54.8791 16.3149 53.2301C8.68418 47.5663 4.2749 42.2251 4.2749 31.6682V17.652C4.2749 16.8454 4.9048 16.1643 5.73266 16.1285C10.8618 15.8596 18.3126 14.6767 24.6656 10.5901C25.1695 10.2675 25.8174 10.2675 26.3213 10.5901C32.6563 14.6767 40.1071 15.8596 45.2542 16.1285C46.0641 16.1643 46.712 16.8454 46.712 17.652V31.6682C46.712 42.2251 42.3027 47.5663 34.6719 53.2301C32.4403 54.8791 29.2008 56.9403 26.3213 58.7326C26.0334 58.876 25.7634 58.9657 25.4754 58.9657ZM7.3344 19.0859V31.6682C7.3344 41.0421 10.9698 45.4513 18.1506 50.7746C20.0763 52.2085 22.8659 54.0008 25.4754 55.6319C28.085 54.0008 30.8746 52.2085 32.8003 50.7746C39.9811 45.4513 43.6165 41.0421 43.6165 31.6682V19.0859C38.4513 18.6736 31.5944 17.3652 25.4754 13.673C19.3564 17.3473 12.4996 18.6736 7.3344 19.0859Z\",\n fill: \"#53D28E\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.0589 39.0588L21.9556 40.4876C22.0047 40.5664 22.0907 40.6226 22.1766 40.6339L23.9331 40.9714C24.191 41.0164 24.2893 41.3089 24.1173 41.489L22.9136 42.7153C22.8522 42.7828 22.8153 42.8728 22.8276 42.9628L23.0119 44.6054C23.0364 44.8417 22.7785 45.0217 22.5328 44.9205L20.887 44.2454C20.801 44.2117 20.7027 44.2117 20.6045 44.2454L18.9586 44.9205C18.7129 45.0217 18.455 44.8417 18.4796 44.6054L18.6638 42.9628C18.6761 42.8728 18.6392 42.7828 18.5778 42.7153L17.3741 41.489C17.2022 41.3089 17.3004 41.0164 17.5584 40.9714L19.3148 40.6339C19.413 40.6114 19.4867 40.5664 19.5359 40.4876L20.4325 39.0588C20.5922 38.845 20.9238 38.845 21.0589 39.0588Z\",\n fill: \"#FFB61C\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.0959 39.0588L30.8804 40.4876C30.9234 40.5664 30.9986 40.6226 31.0739 40.6339L32.6107 40.9714C32.8364 41.0164 32.9224 41.3089 32.772 41.489L31.7187 42.7153C31.665 42.7828 31.6327 42.8728 31.6435 42.9628L31.8047 44.6054C31.8262 44.8417 31.6005 45.0217 31.3855 44.9205L29.9454 44.2454C29.8702 44.2117 29.7842 44.2117 29.6982 44.2454L28.2581 44.9205C28.0431 45.0217 27.8174 44.8417 27.8389 44.6054L28.0001 42.9628C28.0109 42.8728 27.9786 42.7828 27.9249 42.7153L26.8717 41.489C26.7212 41.3089 26.8072 41.0164 27.0329 40.9714L28.5697 40.6339C28.6557 40.6114 28.7202 40.5664 28.7632 40.4876L29.5478 39.0588C29.6982 38.845 29.9884 38.845 30.0959 39.0588Z\",\n fill: \"#FFB61C\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25.4431 39.7813L26.3778 41.3902C26.4239 41.4821 26.5162 41.5395 26.6085 41.5625L28.4317 41.9418C28.6971 41.9992 28.801 42.321 28.6164 42.5279L27.3701 43.9069C27.3009 43.9759 27.2663 44.0793 27.2778 44.1827L27.474 46.0214C27.4971 46.2972 27.2317 46.4926 26.9778 46.3777L25.2815 45.6192C25.1892 45.5733 25.0854 45.5733 24.9931 45.6192L23.2968 46.3777C23.0429 46.4926 22.766 46.2858 22.8006 46.0214L22.9968 44.1827C23.0083 44.0793 22.9737 43.9873 22.9045 43.9069L21.6582 42.5279C21.4736 42.321 21.5775 41.9992 21.8429 41.9418L23.6661 41.5625C23.7699 41.5395 23.8507 41.4821 23.8968 41.3902L24.8315 39.7813C24.9584 39.5514 25.3046 39.5514 25.4431 39.7813Z\",\n fill: \"#FFB61C\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.1317 39.6089C25.2471 39.6089 25.374 39.6664 25.4432 39.7813L26.3779 41.3902C26.4241 41.4821 26.5164 41.5396 26.6087 41.5626L28.4319 41.9418C28.6973 41.9993 28.8011 42.321 28.6165 42.5279L27.3703 43.9069C27.301 43.9759 27.2664 44.0793 27.278 44.1828L27.4741 46.0215C27.4972 46.2398 27.3241 46.4122 27.128 46.4122C27.0818 46.4122 27.0356 46.4007 26.9779 46.3777L25.2817 45.6193C25.2355 45.5963 25.1894 45.5848 25.1317 45.5848C25.0855 45.5848 25.0278 45.5963 24.9817 45.6193L23.2854 46.3777C23.2392 46.4007 23.1931 46.4122 23.1354 46.4122C22.9392 46.4122 22.7661 46.2398 22.7892 46.0215L22.9854 44.1828C22.9969 44.0793 22.9623 43.9874 22.8931 43.9069L21.6468 42.5279C21.4622 42.321 21.5661 41.9993 21.8315 41.9418L23.6547 41.5626C23.7585 41.5396 23.8393 41.4821 23.8854 41.3902L24.8201 39.7813C24.8894 39.6664 25.0163 39.6089 25.1317 39.6089ZM25.1317 39.2642C24.8778 39.2642 24.647 39.3906 24.5201 39.6089L23.5854 41.2178L21.7622 41.597C21.5199 41.6545 21.3237 41.8269 21.243 42.0682C21.1622 42.3095 21.2199 42.5624 21.393 42.7462L22.6392 44.1253C22.6392 44.1253 22.6392 44.1253 22.6392 44.1368L22.443 45.9755C22.42 46.1709 22.4892 46.3662 22.6161 46.5156C22.7546 46.665 22.9392 46.7455 23.1354 46.7455C23.2392 46.7455 23.3316 46.7225 23.4239 46.688L25.1201 45.9295H25.1317L26.8279 46.688C26.9202 46.734 27.0126 46.7455 27.1164 46.7455C27.3126 46.7455 27.5087 46.665 27.6357 46.5156C27.7626 46.3662 27.8318 46.1709 27.8088 45.9755L27.6126 44.1368C27.6126 44.1368 27.6126 44.1368 27.6126 44.1253L28.8588 42.7462C29.0319 42.5624 29.0781 42.2981 29.0088 42.0682C28.9281 41.8269 28.7319 41.6545 28.4896 41.597L26.6664 41.2178L25.7317 39.6089C25.6163 39.3906 25.3855 39.2642 25.1317 39.2642Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.6079 22.6316C22.8627 22.6316 23.092 22.5538 23.2704 22.45L24.468 23.5138C24.417 23.6694 24.3661 23.8251 24.3661 24.0067C24.3661 24.1884 24.3916 24.37 24.468 24.5257L21.8689 26.8867C21.6905 26.7829 21.4612 26.7311 21.2319 26.7311C20.4929 26.7311 19.8813 27.3538 19.8813 28.1062C19.8813 28.8586 20.4929 29.4813 21.2319 29.4813C21.9708 29.4813 22.5824 28.8586 22.5824 28.1062C22.5824 27.9246 22.5569 27.7429 22.4804 27.5873L25.0796 25.2262C25.2579 25.33 25.4873 25.3819 25.7166 25.3819C26.4555 25.3819 27.0671 24.7592 27.0671 24.0067C27.0671 23.2543 26.4555 22.6316 25.7166 22.6316C25.4618 22.6316 25.2324 22.7094 25.0541 22.8132L23.8564 21.7494C23.9074 21.5938 23.9584 21.4381 23.9584 21.2565C23.9584 20.504 23.3468 19.8813 22.6079 19.8813C21.8689 19.8813 21.2573 20.504 21.2573 21.2565C21.2573 22.0349 21.8689 22.6316 22.6079 22.6316ZM28.4176 24.4478C28.4176 23.6954 29.0292 23.0727 29.7681 23.0727C30.5071 23.0727 31.1186 23.6954 31.1186 24.4478V34.904C31.1186 35.6564 30.5071 36.2791 29.7681 36.2791C29.0292 36.2791 28.4176 35.6564 28.4176 34.904V24.4478ZM25.7421 27.1721C25.0031 27.1721 24.3916 27.7948 24.3916 28.5473V34.9299C24.3916 35.6824 25.0031 36.3051 25.7421 36.3051C26.481 36.3051 27.0926 35.6824 27.0926 34.9299V28.5473C27.0671 27.7948 26.481 27.1721 25.7421 27.1721ZM21.2573 30.3635C20.5184 30.3635 19.9068 30.9862 19.9068 31.7386V34.9299C19.9068 35.6824 20.5184 36.3051 21.2573 36.3051C21.9963 36.3051 22.6079 35.6824 22.6079 34.9299V31.7386C22.6079 30.9862 21.9963 30.3635 21.2573 30.3635Z\",\n fill: \"#EDEFF2\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRewardShield, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/rewardShield.4cffc8aa.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgSmallCoin = function SvgSmallCoin(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 0C3.13451 0 0 3.13451 0 7C0 10.8655 3.13451 14 7 14C10.8655 14 14 10.8655 14 7C14 3.13451 10.8655 0 7 0Z\",\n fill: \"#FFB61C\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.9999 0.0874023C10.8181 0.0874023 13.9124 3.18172 13.9124 6.9999C13.9124 10.8181 10.8181 13.9124 6.9999 13.9124C3.18172 13.9124 0.0874023 10.8181 0.0874023 6.9999C0.0874023 3.18172 3.18172 0.0874023 6.9999 0.0874023Z\",\n fill: \"#FCD116\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.82289 1.10253C7.80671 1.41166 7.54298 1.64914 7.23384 1.63295C6.92471 1.61676 6.68723 1.35304 6.70342 1.0439C6.7196 0.734765 6.98333 0.497289 7.29247 0.513476C7.60158 0.529664 7.83905 0.793388 7.82289 1.10253Z\",\n fill: \"#FEBC1A\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.20229 12.9565C7.1861 13.2657 6.92237 13.5031 6.61324 13.487C6.3041 13.4708 6.06662 13.207 6.08281 12.8979C6.099 12.5888 6.36272 12.3513 6.67186 12.3675C6.981 12.3837 7.21847 12.6474 7.20229 12.9565Z\",\n fill: \"#FEBC1A\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.8948 7.48573C12.5852 7.48966 12.3311 7.24192 12.3272 6.93238C12.3233 6.62283 12.571 6.36873 12.8805 6.36479C13.1901 6.36085 13.4442 6.6086 13.4481 6.91814C13.452 7.22766 13.2043 7.48179 12.8948 7.48573Z\",\n fill: \"#FEBC1A\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.02515 7.63612C0.715603 7.64005 0.461503 7.39231 0.457566 7.08277C0.453628 6.77322 0.70137 6.51912 1.01092 6.51518C1.32046 6.51125 1.57456 6.75899 1.5785 7.06853C1.58241 7.37808 1.33467 7.63218 1.02515 7.63612Z\",\n fill: \"#FEBC1A\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.4077 9.4055C12.1139 9.3078 11.955 8.99046 12.0527 8.69672C12.1504 8.40299 12.4678 8.24409 12.7615 8.34179C13.0552 8.4395 13.2141 8.75684 13.1164 9.05057C13.0187 9.34431 12.7014 9.50321 12.4077 9.4055Z\",\n fill: \"#FEBC1A\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.14399 5.65892C0.850252 5.56121 0.691352 5.24388 0.78906 4.95014C0.886768 4.6564 1.2041 4.4975 1.49784 4.59521C1.79158 4.69292 1.95048 5.01025 1.85277 5.30399C1.75503 5.59773 1.43773 5.75663 1.14399 5.65892Z\",\n fill: \"#FEBC1A\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1194 3.8611C11.8795 4.05675 11.5264 4.02087 11.3307 3.78098C11.1351 3.54108 11.171 3.18802 11.4109 2.99237C11.6508 2.79672 12.0038 2.83259 12.1995 3.07249C12.3951 3.31239 12.3593 3.66545 12.1194 3.8611Z\",\n fill: \"#FEBC1A\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.58322 11.0086C2.34333 11.2042 1.99026 11.1683 1.79461 10.9284C1.59896 10.6885 1.63484 10.3355 1.87474 10.1398C2.11463 9.94418 2.46769 9.98005 2.66334 10.22C2.85899 10.4598 2.82312 10.8129 2.58322 11.0086Z\",\n fill: \"#FEBC1A\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7198 5.48995C12.4291 5.59621 12.1073 5.44661 12.001 5.15588C11.8947 4.86511 12.0443 4.54329 12.3351 4.43703C12.6258 4.33078 12.9477 4.48038 13.0539 4.77111C13.1602 5.06187 13.0106 5.3837 12.7198 5.48995Z\",\n fill: \"#FEBC1A\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.57043 9.56417C1.27966 9.67042 0.957839 9.52083 0.851585 9.23009C0.74533 8.93933 0.894926 8.61751 1.18566 8.51125C1.47642 8.405 1.79825 8.5546 1.9045 8.84533C2.01076 9.13609 1.86116 9.45792 1.57043 9.56417Z\",\n fill: \"#FEBC1A\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.89741 12.8866C7.81985 12.587 7.9999 12.2811 8.29959 12.2036C8.59927 12.126 8.90509 12.3061 8.98267 12.6057C9.06022 12.9054 8.88018 13.2112 8.58049 13.2888C8.2808 13.3664 7.97499 13.1863 7.89741 12.8866Z\",\n fill: \"#FEBC1A\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.9228 1.39495C4.84524 1.09526 5.02529 0.789444 5.32498 0.711861C5.62466 0.634307 5.93048 0.814353 6.00806 1.11404C6.08564 1.41373 5.90557 1.71954 5.60588 1.79712C5.30619 1.87471 5.00038 1.69463 4.9228 1.39495Z\",\n fill: \"#FEBC1A\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.91869 11.3897C3.10579 11.1431 3.4574 11.0949 3.704 11.282C3.95061 11.4691 3.99885 11.8207 3.81174 12.0673C3.62464 12.3139 3.27304 12.3621 3.02643 12.175C2.77983 11.9879 2.73159 11.6363 2.91869 11.3897Z\",\n fill: \"#FEBC1A\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0935 1.93366C10.2806 1.68705 10.6322 1.63881 10.8788 1.82592C11.1254 2.01302 11.1737 2.36462 10.9866 2.61123C10.7995 2.85783 10.4479 2.90607 10.2013 2.71897C9.95462 2.53187 9.90638 2.18029 10.0935 1.93366Z\",\n fill: \"#FEBC1A\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.99597 2.06738C4.2741 2.06738 2.06738 4.27407 2.06738 6.99594C2.06738 9.7178 4.27413 11.9245 6.99597 11.9245C9.7178 11.9245 11.9246 9.7178 11.9246 6.99594C11.9246 4.27407 9.71783 2.06738 6.99597 2.06738Z\",\n fill: \"#F39C12\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.99608 2.08789C9.70665 2.08789 11.9038 4.28502 11.9038 6.99559C11.9038 9.70616 9.70665 11.9033 6.99608 11.9033C4.2855 11.9033 2.08838 9.70616 2.08838 6.99559C2.08838 4.28502 4.2855 2.08789 6.99608 2.08789Z\",\n fill: \"#FFB61C\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.99599 1.896C4.18033 1.896 1.896 4.18027 1.896 6.99593C1.896 9.81159 4.18036 12.0959 6.99599 12.0959C9.81166 12.0959 12.096 9.81159 12.096 6.99593C12.096 4.18027 9.81166 1.896 6.99599 1.896ZM6.99599 2.06265C9.72159 2.06265 11.9293 4.27034 11.9293 6.99593C11.9293 9.72153 9.72159 11.9293 6.99599 11.9293C4.27043 11.9293 2.06265 9.72153 2.06265 6.99593C2.06268 4.27034 4.27043 2.06265 6.99599 2.06265Z\",\n fill: \"#F39C12\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.43745 3.83398V3.86257V4.70566C5.82463 4.96787 5.46291 5.6315 5.57566 6.30312C5.69589 7.01916 6.33003 7.54999 7.0517 7.52065L7.04698 7.52042C7.20976 7.54075 7.34596 7.66511 7.37834 7.85787C7.41553 8.07942 7.28676 8.27677 7.09688 8.33064C6.90587 8.3848 6.71716 8.2926 6.63937 8.08386L6.6294 8.05702L5.64275 8.42464L5.65278 8.45142C5.79474 8.83245 6.08591 9.12348 6.43742 9.27645V10.1573H7.49028V9.30676C8.14207 9.06488 8.53334 8.3785 8.41667 7.68363C8.29674 6.96925 7.66522 6.43967 6.94562 6.46633C6.78267 6.44615 6.64637 6.3217 6.61397 6.12876C6.57678 5.90721 6.70561 5.70993 6.89549 5.65606C7.08647 5.60186 7.27515 5.69415 7.35294 5.90289L7.36297 5.92973L8.34956 5.56211L8.33959 5.53533C8.18903 5.1312 7.87059 4.82836 7.49028 4.68413V3.83398H6.43745Z\",\n fill: \"#FFB61C\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.02678 5.18149C6.11329 5.18149 6.19441 5.15841 6.26432 5.11808L6.69332 5.48579C6.67274 5.53903 6.66145 5.59689 6.66145 5.6574C6.66145 5.72199 6.67432 5.78358 6.69763 5.83974L5.77823 6.6672C5.71064 6.63036 5.63314 6.60942 5.55074 6.60942C5.28786 6.60942 5.07474 6.82254 5.07474 7.08542C5.07474 7.34831 5.28786 7.56142 5.55074 7.56142C5.81363 7.56142 6.02674 7.34831 6.02674 7.08542C6.02674 7.02081 6.01387 6.95921 5.99055 6.90304L6.90993 6.0756C6.97752 6.11245 7.05504 6.1334 7.13745 6.1334C7.40034 6.1334 7.61345 5.92028 7.61345 5.6574C7.61345 5.39451 7.40034 5.1814 7.13745 5.1814C7.05091 5.1814 6.96977 5.20449 6.89984 5.24485L6.47088 4.87717C6.49148 4.82391 6.50278 4.76602 6.50278 4.70549C6.50278 4.4426 6.28967 4.22949 6.02678 4.22949C5.76389 4.22949 5.55078 4.4426 5.55078 4.70549C5.55078 4.96838 5.76389 5.18149 6.02678 5.18149ZM8.08936 5.81623C8.08936 5.55335 8.30247 5.34023 8.56536 5.34023C8.82824 5.34023 9.04136 5.55335 9.04136 5.81623V9.46557C9.04136 9.72846 8.82824 9.94157 8.56536 9.94157C8.30247 9.94157 8.08936 9.72846 8.08936 9.46557V5.81623ZM7.13741 6.76826C6.87453 6.76826 6.66141 6.98137 6.66141 7.24426V9.4656C6.66141 9.72848 6.87453 9.9416 7.13741 9.9416C7.4003 9.9416 7.61341 9.72848 7.61341 9.4656V7.24426C7.61341 6.98137 7.4003 6.76826 7.13741 6.76826ZM5.55071 7.87876C5.28782 7.87876 5.07471 8.09187 5.07471 8.35476V9.46543C5.07471 9.72831 5.28782 9.94143 5.55071 9.94143C5.81359 9.94143 6.02671 9.72831 6.02671 9.46543V8.35476C6.02671 8.09187 5.81359 7.87876 5.55071 7.87876Z\",\n fill: \"#D89E22\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.96864 5.09946C6.05515 5.09946 6.13627 5.07638 6.20618 5.03604L6.63518 5.40376C6.6146 5.457 6.60331 5.51486 6.60331 5.57537C6.60331 5.63996 6.61617 5.70155 6.63948 5.75771L5.72009 6.58517C5.6525 6.54833 5.575 6.52739 5.4926 6.52739C5.22971 6.52739 5.0166 6.7405 5.0166 7.00339C5.0166 7.26628 5.22971 7.47939 5.4926 7.47939C5.75549 7.47939 5.9686 7.26628 5.9686 7.00339C5.9686 6.93878 5.95573 6.87718 5.93241 6.82101L6.85178 5.99357C6.91938 6.03042 6.9969 6.05137 7.07931 6.05137C7.3422 6.05137 7.55531 5.83825 7.55531 5.57537C7.55531 5.31248 7.3422 5.09937 7.07931 5.09937C6.99277 5.09937 6.91162 5.12246 6.8417 5.16282L6.41274 4.79514C6.43334 4.74188 6.44464 4.68399 6.44464 4.62346C6.44464 4.36057 6.23153 4.14746 5.96864 4.14746C5.70575 4.14746 5.49264 4.36057 5.49264 4.62346C5.49264 4.88635 5.70575 5.09946 5.96864 5.09946ZM8.03129 5.7342C8.03129 5.47132 8.2444 5.2582 8.50729 5.2582C8.77017 5.2582 8.98329 5.47132 8.98329 5.7342V9.38354C8.98329 9.64642 8.77017 9.85954 8.50729 9.85954C8.2444 9.85954 8.03129 9.64642 8.03129 9.38354V5.7342ZM7.07934 6.68623C6.81646 6.68623 6.60334 6.89934 6.60334 7.16223V9.38356C6.60334 9.64645 6.81646 9.85956 7.07934 9.85956C7.34223 9.85956 7.55534 9.64645 7.55534 9.38356V7.16223C7.55534 6.89934 7.34223 6.68623 7.07934 6.68623ZM5.49264 7.79673C5.22975 7.79673 5.01664 8.00984 5.01664 8.27273V9.3834C5.01664 9.64628 5.22975 9.8594 5.49264 9.8594C5.75553 9.8594 5.96864 9.64628 5.96864 9.3834V8.27273C5.96864 8.00984 5.75553 7.79673 5.49264 7.79673Z\",\n fill: \"#F39C12\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.35428 7.02309C4.35428 7.25724 4.16446 7.44706 3.93031 7.44706C3.69616 7.44706 3.50635 7.25724 3.50635 7.02309C3.50635 6.78894 3.69616 6.59912 3.93031 6.59912C4.16446 6.59912 4.35428 6.78894 4.35428 7.02309Z\",\n fill: \"#D89E22\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.89428 6.55273C3.6524 6.55273 3.45605 6.74908 3.45605 6.99096C3.45605 7.23284 3.6524 7.42925 3.89428 7.42925C4.13616 7.42925 4.33251 7.23284 4.33251 6.99096C4.33251 6.74908 4.13616 6.55273 3.89428 6.55273Z\",\n fill: \"#F39C12\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5437 7.02309C10.5437 7.25724 10.3539 7.44706 10.1198 7.44706C9.88562 7.44706 9.6958 7.25724 9.6958 7.02309C9.6958 6.78894 9.88562 6.59912 10.1198 6.59912C10.3539 6.59912 10.5437 6.78894 10.5437 7.02309Z\",\n fill: \"#D89E22\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0842 6.55273C9.84235 6.55273 9.646 6.74908 9.646 6.99096C9.646 7.23284 9.84235 7.42925 10.0842 7.42925C10.3261 7.42925 10.5225 7.23284 10.5225 6.99096C10.5225 6.74908 10.3261 6.55273 10.0842 6.55273Z\",\n fill: \"#F39C12\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2776 11.1032C11.034 10.9122 10.9914 10.5598 11.1824 10.3162C11.3735 10.0726 11.7258 10.03 11.9694 10.221C12.213 10.412 12.2556 10.7644 12.0646 11.008C11.8736 11.2516 11.5212 11.2942 11.2776 11.1032C11.2776 11.1032 11.2776 11.1032 11.2776 11.1032Z\",\n fill: \"#FEBC1A\"\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.93636 3.77895C1.69276 3.58794 1.65012 3.2356 1.84113 2.992C2.03214 2.7484 2.38447 2.70579 2.62807 2.8968C2.87167 3.08782 2.91432 3.44015 2.7233 3.68375C2.53226 3.92735 2.17996 3.96996 1.93636 3.77895Z\",\n fill: \"#FEBC1A\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.69426 12.2942C9.5267 12.0339 9.60186 11.687 9.86215 11.5195C10.1224 11.3519 10.4693 11.4271 10.6368 11.6873C10.8044 11.9476 10.7292 12.2945 10.469 12.462C10.2087 12.6296 9.86183 12.5544 9.69426 12.2942Z\",\n fill: \"#FEBC1A\"\n })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.26848 2.31271C3.10092 2.05243 3.17608 1.70558 3.43637 1.53801C3.69665 1.37045 4.0435 1.44562 4.21106 1.7059C4.37862 1.96618 4.30346 2.31303 4.04318 2.48059C3.7829 2.64816 3.43605 2.57299 3.26848 2.31271Z\",\n fill: \"#FEBC1A\"\n })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.50454 1.61225C9.39893 1.90324 9.07742 2.05351 8.78643 1.9479C8.49543 1.84229 8.34516 1.52078 8.45078 1.22978C8.55639 0.938789 8.87789 0.788522 9.16889 0.894135C9.45988 0.999747 9.61015 1.32125 9.50454 1.61225Z\",\n fill: \"#FEBC1A\"\n })), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.45473 12.77C5.34912 13.061 5.02762 13.2112 4.73662 13.1056C4.44562 13 4.29536 12.6785 4.40097 12.3875C4.50658 12.0965 4.82809 11.9462 5.11908 12.0518C5.41008 12.1575 5.56035 12.479 5.45473 12.77Z\",\n fill: \"#FEBC1A\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSmallCoin, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/smallCoin.fe829fd7.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\n\nimport { ReactComponent as Shield } from \"./icons/rewardShield.svg\";\nimport { ReactComponent as SmallCoin } from \"./icons/smallCoin.svg\";\n\nconst styles = (theme) => ({\n container: {\n height: 300,\n },\n orangepaper: {\n backgroundColor: \"#FF6A14\",\n //paddingLeft: theme.spacing(3),\n marginBottom: theme.spacing(2),\n marginTop: 0,\n minHeight: 60,\n },\n shield: {\n marginLeft: 20,\n marginTop: 16,\n marginBottom: 16,\n marginRight: 16,\n },\n coinIcon: {\n marginRight: 4,\n marginBottom: 10,\n },\n coinText: {\n fontSize: 36,\n fontWeight: \"bold\",\n color: \"#FFFFFF\",\n fontFamily: [\n \"Spectral\",\n \"Inter\",\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n '\"Segoe UI\"',\n \"Roboto\",\n '\"Helvetica Neue\"',\n \"Arial\",\n \"sans-serif\",\n ].join(\",\"),\n marginRight: theme.spacing(2),\n },\n coinsmalltitle: {\n fontSize: 10,\n color: \"white\",\n textAlign: \"right\",\n marginRight: theme.spacing(2),\n marginTop: -5,\n fontWeight: 600,\n marginLeft: 20,\n },\n rightcoins: {\n marginLeft: 30,\n },\n levelTitle: {\n color: \"#ffffff\",\n fontSize: 20,\n fontWeight: 600,\n marginTop: 0,\n },\n progress: {\n height: 12,\n borderRadius: 24,\n backgroundColor: \"#DB5305\",\n marginBottom: 4,\n marginTop: 3,\n width: \"80%\",\n [theme.breakpoints.down(\"sm\")]: {\n height: 8,\n },\n },\n leftprogress: {\n backgroundColor: \"#FDEFE7\",\n borderRadius: 24,\n },\n leftcoinsprogress: {\n textAlign: \"left\",\n fontSize: 10,\n color: \"white\",\n marginTop: 9\n },\n});\n\nclass CoinLevels extends Component {\n componentDidMount() {}\n\n render() {\n const { data = {}, classes } = this.props;\n const { coins = 0, level = 0, toNextLevel = 0, levelRange = 0, totalEarnedCoins = 0 } = data;\n return (\n <Paper className={classes.orangepaper} elevation={0} style={{marginTop: 30}} >\n <Grid\n container\n direction=\"row\"\n justify=\"space-between\"\n alignItems=\"center\"\n >\n <Grid item>\n <Shield className={classes.shield} />\n </Grid>\n <Grid item xs zeroMinWidth>\n <Typography variant=\"h5\" className={classes.levelTitle}>\n Level {level}\n </Typography>\n <LinearProgress\n variant=\"determinate\"\n value={((levelRange - toNextLevel) / levelRange) * 100}\n className={classes.progress}\n classes={{ barColorPrimary: classes.leftprogress }}\n />\n <Typography variant=\"body1\" className={classes.leftcoinsprogress}>\n {toNextLevel} COINS FOR NEXT LEVEL\n </Typography>\n </Grid>\n\n <Grid item>\n <Typography variant=\"h5\" className={classes.coinText}>\n <SmallCoin className={classes.coinIcon} />\n {totalEarnedCoins}\n </Typography>\n <Typography variant=\"body1\" className={classes.coinsmalltitle}>\n TOTAL COINS EARNED\n </Typography>\n </Grid>\n <Hidden smDown>\n <Grid item className={classes.rightcoins}>\n <Typography variant=\"h5\" className={classes.coinText}>\n <SmallCoin className={classes.coinIcon} />\n {coins}\n </Typography>\n <Typography variant=\"body1\" className={classes.coinsmalltitle}>\n CURRENT COINS\n </Typography>\n </Grid>\n </Hidden>\n </Grid>\n </Paper>\n );\n }\n}\n\nexport default withStyles(styles)(CoinLevels);\n","import {\n AppBar,\n Button,\n CircularProgress,\n Divider,\n Grid,\n Paper,\n Toolbar,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport moment from \"moment\";\nimport React, { useEffect } from \"react\";\nimport { Can } from \"../../../Abilities\";\nimport AssessmentCard from \"../../../Common/AssessmentCard\";\nimport SummaryRadarCard from \"../../../Common/SummaryRadarCard\";\nimport { getDefinition, getSkill } from \"../definitions\";\nimport { ConstructExpansionPanel } from \"./ContructExpansionPanel\";\nimport { DimensionDetail } from \"./DimensionDetail\";\nimport { InterestPieChart } from \"./InterestsPieChart\";\nimport { interestTypes } from \"./interestTypes\";\nimport { JobMatches } from \"./JobMatches\";\nimport { SkillsBackpackSummary } from \"./JobSkillSummary\";\nimport NewSkills from \"./NewSkills\";\nimport CoinLevels from \"./CoinLevels\";\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n\n title: {\n marginLeft: 20,\n marginTop: 10,\n fontSize: 28,\n },\n subtitle: {\n //fontSize: 28\n marginLeft: 20,\n marginTop: 8,\n },\n subtitle2: {\n fontSize: 16,\n marginLeft: 0,\n marginTop: 30,\n marginBottom: 10,\n },\n subtitle3: {\n fontSize: 16,\n marginLeft: 0,\n marginTop: 10,\n marginBottom: 10,\n },\n sectionTitle: {\n marginTop: 40,\n marginBottom: 20,\n },\n center: {\n display:\"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n textAlign: \"center\",\n border: \"1px solid #ddd\",\n },\n centerSkill:{\n display:\"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n textAlign: \"center\",\n border: \"1px solid #ddd\",\n },\n graphBg: {\n backgroundColor: \"#fbfbfb\",\n border: \"1px solid #e8e8e8\",\n padding: 15\n },\n subheading: {\n marginLeft: 20,\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#444\",\n },\n heading: {\n fontWeight: 500,\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(16),\n flexBasis: \"10%\",\n flexShrink: 0,\n },\n heading1: {\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(16),\n marginLeft: 20,\n },\n subheading1: {\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#666\",\n marginLeft: 10,\n display: \"inline-block\",\n },\n\n resultText: {\n fontSize: theme.typography.pxToRem(14),\n },\n resultText1: {\n fontSize: theme.typography.pxToRem(14),\n marginTop: 20,\n marginBottom: 20,\n marginLeft: 20,\n },\n divid: {\n marginBottom: 20,\n marginTop: 20,\n },\n reassess: {\n marginLeft: 15,\n marginTop: 15,\n },\n itemre: {\n marginTop: 10,\n marginBottom: 5,\n },\n header: {\n padding: theme.spacing(3),\n },\n avatarlarge: {\n width: theme.spacing(7),\n height: theme.spacing(7),\n marginRight: theme.spacing(1),\n },\n light: {\n color: \"#666\",\n },\n smallicons: {\n color: \"#666\",\n },\n itemtitle: {\n fontSize: 12,\n },\n prog: {\n marginTop: -12,\n },\n itemgrid: {\n minHeight: 22,\n marginBottom: theme.spacing(1),\n },\n name: {\n maxWidth: 400,\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n jobpanelcontainer: {\n height: 360,\n //overflow : \"hidden\"\n //marginBottom: theme.spacing(3)\n },\n jobpanelcontainerprint: {\n height: \"auto\",\n //marginBottom: theme.spacing(3)\n pageBreakAfter: \"always\",\n },\n});\n\nexport const CandidateSummaryView = withStyles(styles)(\n (props) => {\n const {\n candidate,\n classes,\n user,\n triggerReassessment,\n isOnPrintMode,\n groupSkillsBackpack = false,\n getSkillsInfo: gsb,\n rewards,\n addNewSkill,\n editSkillLevel,\n saveSkills,\n createValidationRequest\n } = props;\n const { skills_names = [], userID} = candidate;\n let [newSkillPanel, newSkillPanelSet] = React.useState(false);\n let [currentCandidate, setCurrentCandidate] = React.useState(false);\n useEffect(() => {\n async function getSkillsInfo() {\n if (candidate && userID !== currentCandidate) {\n setCurrentCandidate(userID)\n gsb();\n }\n }\n getSkillsInfo();\n }, [candidate, gsb]);\n\n if (!candidate) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <CircularProgress size={25} thickness={4} />\n </Grid>\n </Grid>\n );\n }\n if (!candidate.assessmentCompleted && !candidate.reAssessmentDue) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <Typography variant=\"subtitle2\">\n This candidate has not completed the assessment yet.\n </Typography>\n </Grid>\n </Grid>\n );\n }\n\n const {\n latestAssessmentResult: {\n interests: { results = {}, interestsOriginal = {} },\n } = {},\n assessmentCreatedAt,\n latestAssessmentCreatedAt,\n reassessmentTriggeredAt,\n isInterventionOngoing,\n } = candidate;\n const hasDoneMultipleAssessments =\n assessmentCreatedAt !== latestAssessmentCreatedAt;\n const mostMatchedInterestProfile = results[0];\n const candidateInterestsScore = Object.keys(interestsOriginal).reduce(\n (acl, curr) =>\n Object.assign({}, acl, {\n [curr.toLowerCase()]: Math.round((interestsOriginal[curr] / 7) * 100),\n }),\n {}\n );\n const interestChartData = Object.keys(interestsOriginal).map(\n (interest) => ({\n name: interest,\n value: interestsOriginal[interest],\n })\n );\n return (\n <Grid>\n {latestAssessmentCreatedAt ? (\n <Can I=\"do\" this=\"REASSESSMENT\">\n <Grid item className={classes.itemre}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n triggerReassessment(user);\n }}\n disabled={\n isInterventionOngoing || candidate.reAssessmentDue === true\n }\n >\n Reassessment\n </Button>\n {isInterventionOngoing ? (\n <span style={{ paddingLeft: \"1em\" }}>\n Candidate has an intervention in progress\n </span>\n ) : null}\n {reassessmentTriggeredAt ? (\n <span style={{ paddingLeft: \"1em\" }}>\n Requested {moment(reassessmentTriggeredAt).fromNow()}\n </span>\n ) : null}\n </Grid>\n </Can>\n ) : null}\n {user.organisation === \"sds\" ? (\n <>\n <Grid item xs>\n <JobMatches\n isOnPrintMode={isOnPrintMode}\n classes={classes}\n candidateDetails={candidate}\n candidateStyles={candidate.radarData}\n candidateInterestsScore={candidateInterestsScore}\n />\n </Grid>\n </>\n ) : null}\n {candidate.radarData ? (\n <>\n <Grid item>\n <CoinLevels data={rewards}/>\n </Grid>\n {(candidate.skillsInfo || []).length ? (\n <Grid item xs>\n <Grid container direction=\"column\">\n <Grid item xs>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.centerSkill}>\n <Typography variant=\"h6\" color=\"inherit\">\n Skills\n </Typography>\n <Button style={{\"marginLeft\": 5}} variant=\"contained\" color=\"primary\" size=\"small\" onClick={() => newSkillPanelSet(true)}>\n Add New Skills\n </Button>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item xs>\n <SkillsBackpackSummary\n isOnPrintMode={isOnPrintMode}\n skillsInfo={candidate.skillsInfo}\n groupSkillsBackpack={groupSkillsBackpack}\n editSkillLevel={editSkillLevel}\n saveSkills={saveSkills}\n createValidationRequest={createValidationRequest}\n />\n </Grid>\n </Grid>\n </Grid>\n ) : null}\n <NewSkills \n open={newSkillPanel} \n closePanel={async (newSkills) => {\n newSkillPanelSet(false)\n if(newSkills && newSkills.length > 0){\n await addNewSkill(newSkills)\n }\n }} \n existingSkills={skills_names}\n />\n <Grid item xs>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Work Styles\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item xs>\n <Grid container justify=\"center\" alignItems=\"center\">\n <Grid item xs>\n <SummaryRadarCard data={candidate.radarData} dataKey=\"name\" />\n </Grid>\n </Grid>\n </Grid>\n </>\n ) : null}\n\n {candidate.assessmentCompleted ||\n (candidate.reAssessmentDue && !candidate.assessmentCompleted) ? (\n <>\n <Grid item xs>\n <Typography\n variant=\"subtitle2\"\n color=\"inherit\"\n className={classes.subtitle2}\n >\n Brainpower\n </Typography>\n <Paper square elevation={0} className={classes.graphBg}>\n <AssessmentCard\n data={candidate.ACdata}\n dataKey=\"name\"\n hasDoneMultipleAssessments={hasDoneMultipleAssessments}\n />\n </Paper>\n <Typography\n variant=\"subtitle2\"\n color=\"inherit\"\n className={classes.subtitle2}\n >\n Agility\n </Typography>\n <Paper square elevation={0} className={classes.graphBg}>\n <AssessmentCard\n data={candidate.LAdata}\n dataKey=\"name\"\n hasDoneMultipleAssessments={hasDoneMultipleAssessments}\n />\n </Paper>\n <Typography\n variant=\"subtitle2\"\n color=\"inherit\"\n className={classes.subtitle2}\n >\n Resilience\n </Typography>\n <Paper square elevation={0} className={classes.graphBg}>\n <AssessmentCard\n data={candidate.REdata}\n dataKey=\"name\"\n hasDoneMultipleAssessments={hasDoneMultipleAssessments}\n />\n </Paper>\n <div style={{ marginTop: \"2em\" }}>\n <ConstructExpansionPanel\n defaultExpanded={isOnPrintMode}\n constructTitle=\"Brainpower\"\n constructDescription=\"The ability to solve complex problems quickly and accurately.\"\n constructSummary={getDefinition(\n \"analytical_capacity\",\n candidate.latestAssessmentResult.results\n .analytical_capacity,\n user.firstName\n )}\n classes={classes}\n >\n <DimensionDetail\n title=\"Complexity\"\n description={`Spotting patterns, recognizing connections, dealing with\n complex issues.`}\n classes={classes}\n summary={getSkill(\n \"SPC\",\n candidate.latestAssessmentResult.results.SPC.talent,\n user.firstName\n )}\n />\n\n <Divider className={classes.divid} />\n\n <DimensionDetail\n title=\"Speed\"\n description={`Analysing and making decisions at speed.`}\n classes={classes}\n summary={getSkill(\n \"DMA\",\n candidate.latestAssessmentResult.results.DMA.talent,\n user.firstName\n )}\n />\n\n <Divider className={classes.divid} />\n\n <DimensionDetail\n title=\"Accuracy\"\n description={`Solving problems accurately.`}\n classes={classes}\n summary={getSkill(\n \"PSA\",\n candidate.latestAssessmentResult.results.PSA.talent,\n user.firstName\n )}\n />\n </ConstructExpansionPanel>\n\n <ConstructExpansionPanel\n defaultExpanded={isOnPrintMode}\n constructTitle=\"Agility\"\n constructDescription={`The ability to take onboard feedback, adapt to new and\n unfamiliar tasks, and leverage a range of learning styles.`}\n constructSummary={getDefinition(\n \"learning_agility\",\n candidate.latestAssessmentResult.results.learning_agility,\n user.firstName\n )}\n classes={classes}\n >\n <DimensionDetail\n title=\"Responsiveness\"\n description={`Responding positively to feedback and taking on-board\n advice from others.`}\n classes={classes}\n summary={getSkill(\n \"RTF\",\n candidate.latestAssessmentResult.results.RTF.talent,\n user.firstName\n )}\n />\n\n <Divider className={classes.divid} />\n <DimensionDetail\n title=\"Adaptability\"\n description={`Adapting effectively to new situations and challenges.`}\n classes={classes}\n summary={getSkill(\n \"ADY\",\n candidate.latestAssessmentResult.results.ADY.talent,\n user.firstName\n )}\n />\n <Divider className={classes.divid} />\n <DimensionDetail\n title=\"Learning\"\n description={`Learning quickly and applying a range of learning styles.`}\n classes={classes}\n summary={getSkill(\n \"RLS\",\n candidate.latestAssessmentResult.results.RLS.talent,\n user.firstName\n )}\n />\n </ConstructExpansionPanel>\n\n <ConstructExpansionPanel\n defaultExpanded={isOnPrintMode}\n constructTitle=\"Resilience\"\n constructDescription={`The ability to retain emotional control despite setbacks, set\n and achieve challenging goals, and demonstrate the confidence\n to succeed.`}\n constructSummary={getDefinition(\n \"resilience\",\n candidate.latestAssessmentResult.results.resilience,\n user.firstName\n )}\n classes={classes}\n >\n <DimensionDetail\n title=\"Control\"\n description={` Managing emotions and demonstrating optimism despite\n setbacks.`}\n classes={classes}\n summary={getSkill(\n \"CONT\",\n candidate.latestAssessmentResult.results.CONT.talent,\n user.firstName\n )}\n />\n <Divider className={classes.divid} />\n <DimensionDetail\n title=\"Commitment\"\n description={`Setting difficult goals and showing determination in\n achieving them.`}\n classes={classes}\n summary={getSkill(\n \"COMM\",\n candidate.latestAssessmentResult.results.COMM.talent,\n user.firstName\n )}\n />\n <Divider className={classes.divid} />\n <DimensionDetail\n title=\"Confidence\"\n description=\"Belief in own abilities to succeed.\"\n classes={classes}\n summary={getSkill(\n \"CONF\",\n candidate.latestAssessmentResult.results.CONF.talent,\n user.firstName\n )}\n />\n </ConstructExpansionPanel>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Interests\n </Typography>\n </Toolbar>\n </AppBar>\n <InterestPieChart interests={interestChartData} />\n <div style={{ marginTop: 20 }}> </div>\n <ConstructExpansionPanel\n defaultExpanded={isOnPrintMode}\n constructTitle=\"Interests\"\n constructDescription={\n interestTypes[mostMatchedInterestProfile].summary\n }\n constructSummary={() => (\n <span\n dangerouslySetInnerHTML={{\n __html:\n interestTypes[mostMatchedInterestProfile].description,\n }}\n />\n )}\n classes={classes}\n ></ConstructExpansionPanel>\n </div>\n </Grid>\n <Grid item xs></Grid>\n </>\n ) : null}\n </Grid>\n );\n }\n);\n","import moment from \"moment\";\nimport React from \"react\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n // Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n \n} from \"recharts\";\n\nexport const CandidateActivityBarChart = ({\n data,\n dateKey = \"date\",\n valueKey = \"duration\"\n}) => {\n const dateTickFormatter = tick => {\n // if (data.length < 15) {\n return moment(tick).format(\"DD\");\n // }\n // return new Date(tick).get();\n };\n\n\n return (\n <div style={{ height: \"10em\" }}>\n <ResponsiveContainer>\n <BarChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis interval={0} dataKey={dateKey} tickFormatter={dateTickFormatter} />\n <Tooltip\n wrapperStyle={{\n background: \"rgba(0,0,0,0.5)\",\n padding: \"0.5em\",\n color: \"white\"\n }}\n content={props => {\n if (props.payload.length > 0) {\n const [{ dataKey, payload }] = props.payload;\n return <div>{payload[dataKey]} minutes</div>;\n }\n return null;\n }}\n />\n <YAxis />\n <Bar dataKey={valueKey} fill=\"#8884d8\" />\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","import { Tooltip, withStyles } from \"@material-ui/core\";\nimport React from \"react\";\n\nconst styles = (theme) => ({\n missionTitle: {\n textTransform: \"capitalize\",\n cursor: \"pointer\",\n textDecoration: \"none\",\n color: \"rgba(0, 0, 0, 0.87)\",\n },\n missionTooltip: {\n fontSize: \"14px !important\",\n },\n});\n\nexport const MissionHoverView = withStyles(styles)(\n ({ classes, time, description, title, url }) => {\n return (\n <Tooltip\n classes={{ tooltip: classes.missionTooltip }}\n title={`${description} (${time} Mins)`}\n placement=\"bottom-start\"\n >\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={url}\n className={classes.missionTitle}\n >\n {title}\n </a>\n </Tooltip>\n );\n }\n);\n","import React from \"react\";\nimport {\n Pie,\n PieChart,\n ResponsiveContainer,\n Cell,\n Legend,\n Tooltip,\n} from \"recharts\";\n\nconst COLORS = [\n \"#D89E22\",\n \"#948BFF\",\n \"#34CFFF\",\n \"#FFB61C\",\n \"#FF5255\",\n \"#53D28E\",\n];\n\nexport const AnalyticsPieChart = ({ chartData }) => {\n const chart = Object.keys(chartData).map((item) => ({\n name: item,\n value: chartData[item],\n }));\n\n return (\n <div style={{ height: \"20em\" }}>\n <ResponsiveContainer>\n <PieChart>\n <Pie\n data={chart}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n paddingAngle={0}\n cy=\"50%\"\n innerRadius={0}\n outerRadius={100}\n fill=\"#82ca9d\"\n cornerRadius={0}\n animationDuration={600}\n >\n {chart.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={COLORS[index % COLORS.length]}\n />\n ))}\n </Pie>\n <Legend />\n <Tooltip />\n </PieChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","import { Grid, Typography, withStyles, Divider } from \"@material-ui/core\";\nimport React from \"react\";\nimport { AnalyticsPieChart } from \"./AnalyticsPieChart\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Button from \"@material-ui/core/Button\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\n\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n\n subheading: {\n marginLeft: 20,\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#444\",\n },\n heading: {\n fontWeight: 500,\n fontSize: 18,\n },\n subheading1: {\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#666\",\n marginLeft: 10,\n display: \"inline-block\",\n },\n cardroot: {\n width: \"100%\",\n },\n title: {\n fontSize: 14,\n },\n titleNumber: {\n textAlign: \"right\",\n fontWeight: 600,\n color: theme.palette.primary.main,\n float: \"right\",\n },\n hr: {\n height: 1,\n width: \"100%\",\n backgroundColor: \"#e4e1e1\",\n marginBottom: 10\n },\n marginTop10: {\n marginTop: 10\n }\n});\n\nexport const CandidateAnalytics = withStyles(styles)(\n ({ jobsApplied, jobsSaved, jobsViewed, classes, isQual = false }) => {\n\n const getBackGroundColor = (index) => {\n if (jobsApplied.lastItemsStatus[index].unsuccessful){\n return \"#AC693B\"\n } else {\n return \"#87D190\";\n }\n }\n\n const getTextForButton = (index) => {\n if (!isQual){\n if (jobsApplied.lastItemsStatus[index].started){\n return \"Started\";\n }\n if (jobsApplied.lastItemsStatus[index].interviewed){\n return \"Interviewed\";\n }\n if (jobsApplied.lastItemsStatus[index].unsuccessful){\n return \"Interviewed\";\n }\n return \"Applied\";\n } else {\n if (jobsApplied.lastItemsStatus[index].started){\n return \"Enrolled\"\n }\n if (jobsApplied.lastItemsStatus[index].interviewed){\n return \"Accepted\"\n }\n if (jobsApplied.lastItemsStatus[index].unsuccessful){\n return \"Accepted\";\n }\n return \"Applied\";\n }\n }\n\n let arr = [];\n _.each(jobsViewed.chart, (index, key) => {\n arr.push({name: key, value: index});\n });\n let orderBy = _.orderBy(arr, \"value\", \"desc\");\n let assoArrChart = {};\n _.each(orderBy.slice(0, 10), (index) => {\n assoArrChart[index.name] = index.value;\n });\n\n\n const momentDate = (unix) => {\n return moment.unix(unix / 1000).format(\"DD/MM/YYYY\");\n }\n\n\n return (\n <>\n {jobsViewed.count > 0 && (\n <Grid\n container\n direction=\"row\"\n spacing={0}\n justify=\"center\"\n alignItems=\"flex-start\"\n style={{ marginTop: 20 }}\n >\n <Grid item xs={6}>\n <Typography variant=\"h5\" style={{fontSize:14, textAlign: \"center\"}}>Top 10 Viewed Jobs By Occupation</Typography>\n <AnalyticsPieChart chartData={assoArrChart} />\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"h5\" style={{fontSize:14, textAlign: \"center\"}}>Top Jobs By Sector</Typography>\n <AnalyticsPieChart chartData={jobsViewed.tierChart} />\n </Grid>\n </Grid>\n )}\n\n <Grid\n container\n direction=\"row\"\n spacing={2}\n justify=\"center\"\n alignItems=\"flex-start\"\n style={{ marginTop: 20 }}\n >\n <Grid item xs={4}>\n <Card className={classes.cardroot}>\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n {isQual ? \"Qualifications Viewed\" : \"Jobs Viewed\"}\n </Typography>\n <Typography variant=\"h6\" component=\"h2\">\n {isQual ? \"Total Qualifications Viewed\" : \"Total Jobs Viewed\"}\n <span className={classes.titleNumber}>\n {jobsViewed.count}\n </span>\n </Typography>\n </CardContent>\n <Divider />\n\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n {isQual\n ? \"Last 5 Qualifications Viewed\"\n : \"Last 5 Jobs Viewed\"}\n </Typography>\n\n {isQual &&\n <List dense={true}>\n {jobsViewed.lastItems.slice(0, 5).map((item,index) => (\n <ListItem key={\"jv_\" + item} style={{ paddingLeft: 0 }}>\n <ListItemText primary={item} />\n </ListItem>\n ))}\n </List>\n }\n\n\n {!isQual &&\n <List dense={true}>\n {jobsViewed.lastItems.slice(0, 5).map((item,index) => (\n <ListItem key={\"jv_\" + item} style={{ paddingLeft: 0 }}>\n <ListItemText primary={item+\" - \"+momentDate(jobsViewed.lastItemsCreatedAt[index])} />\n </ListItem>\n ))}\n </List>\n }\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={4}>\n <Card className={classes.cardroot}>\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n {isQual ? \"Qualifications Saved\" : \"Jobs Saved\"}\n </Typography>\n <Typography variant=\"h5\" component=\"h2\">\n {isQual ? \"Total Qualifications Saved\" : \"Total Jobs Saved\"}\n <span className={classes.titleNumber}>{jobsSaved.count}</span>\n </Typography>\n </CardContent>\n <Divider />\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n {isQual ? \"Last 5 Qualifications Saved\" : \"Last 5 Jobs Saved\"}\n </Typography>\n\n {isQual &&\n <List dense={true}>\n {jobsSaved.lastItems.slice(0, 5).map((item, index) => (\n <ListItem key={\"js_\" + item} style={{ paddingLeft: 0 }}>\n <ListItemText primary={item} />\n </ListItem>\n ))}\n </List>\n }\n\n {!isQual &&\n <List dense={true}>\n {jobsSaved.lastItems.slice(0, 5).map((item, index) => (\n <ListItem key={\"js_\" + item} style={{ paddingLeft: 0 }}>\n <ListItemText primary={item+\" - \"+momentDate(jobsSaved.lastItemsCreatedAt[index])} />\n </ListItem>\n ))}\n </List>\n }\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={4}>\n <Card className={classes.cardroot}>\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n \n {isQual ? \"Qualifications Inquiries\" : \"Jobs Applied\"}\n </Typography>\n <Typography variant=\"h5\" component=\"h2\">\n {isQual ? \"Total Qualifications Inquiries\" : \"Total Jobs Applied\"}\n <span className={classes.titleNumber}>\n {jobsApplied.count}\n </span>\n </Typography>\n </CardContent>\n <Divider />\n <CardContent>\n <Typography\n className={classes.title}\n color=\"textSecondary\"\n gutterBottom\n >\n {isQual ? \"Last 5 Qualifications Inquiries\" : \"Last 5 Jobs Applied\"}\n </Typography>\n\n {isQual && \n <List dense={true}>\n {jobsApplied.lastItems.slice(0, 5).map((item, index) => (\n <ListItem key={\"ja_\" + item} style={{ paddingLeft: 0 }}>\n <Grid alignItems=\"center\" container spacing={3}>\n <Grid item xs={12} sm={12} md={8}>\n <ListItemText className={classes.marginTop10} primary={item} />\n </Grid>\n <Grid item xs={12} sm={12} md={4}>\n <Button variant=\"contained\" style={{color: \"#F9F9F9\", backgroundColor: getBackGroundColor(index)}}> {getTextForButton(index)}</Button>\n </Grid>\n <div className={classes.hr}> </div>\n </Grid>\n </ListItem>\n ))}\n </List>\n }\n\n {!isQual &&\n <List dense={true}>\n {jobsApplied.lastItems.slice(0, 5).map((item, index) => (\n <ListItem key={\"ja_\" + item} style={{ paddingLeft: 0 }}>\n <Grid alignItems=\"center\" container spacing={3}>\n <Grid item xs={12} sm={12} md={8}>\n <ListItemText className={classes.marginTop10} primary={item+\" - \"+momentDate(jobsApplied.lastItemsCreatedAt[index])} />\n </Grid>\n <Grid item xs={12} sm={12} md={4}>\n <Button variant=\"contained\" style={{color: \"#F9F9F9\", backgroundColor: getBackGroundColor(index)}}> {getTextForButton(index)}</Button>\n </Grid>\n <div className={classes.hr}> </div>\n </Grid>\n </ListItem>\n ))}\n </List>\n }\n \n </CardContent>\n </Card>\n </Grid>\n </Grid>\n </>\n );\n }\n);\n","import {\n AppBar,\n /*eslint-disable */\n Button,\n /*eslint-enable */\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Toolbar,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\n\n/*eslint-disable */\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\n/*eslint-enable */\nimport moment from \"moment\";\nimport React, { useEffect } from \"react\";\nimport { CandidateActivityBarChart } from \"./CandidateActivityBarChart\";\nimport { MissionHoverView } from \"./CandidateSummaryView/MissionHoverView\";\nimport { CandidateAnalytics } from \"./CandidateAnalytics\";\nimport _ from 'lodash';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n\n title: {\n marginLeft: 20,\n marginTop: 10,\n fontSize: 28,\n },\n subtitle: {\n //fontSize: 28\n marginLeft: 20,\n marginTop: 8,\n },\n subtitle2: {\n fontSize: 16,\n marginLeft: 0,\n marginTop: 30,\n marginBottom: 10,\n },\n sectionTitle: {\n marginTop: 40,\n marginBottom: 20,\n },\n center: {\n textAlign: \"center\",\n display: \"block\",\n paddingTop: 14,\n border: \"1px solid #ddd\",\n },\n graphBg: {\n backgroundColor: \"#fbfbfb\",\n border: \"1px solid #e8e8e8\",\n },\n subheading: {\n marginLeft: 20,\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#444\",\n },\n heading: {\n fontWeight: 500,\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(16),\n flexBasis: \"10%\",\n flexShrink: 0,\n },\n heading1: {\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(16),\n marginLeft: 20,\n },\n subheading1: {\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#666\",\n marginLeft: 10,\n display: \"inline-block\",\n },\n\n resultText: {\n fontSize: theme.typography.pxToRem(14),\n },\n resultText1: {\n fontSize: theme.typography.pxToRem(14),\n marginTop: 20,\n marginBottom: 20,\n marginLeft: 20,\n },\n divid: {\n marginBottom: 20,\n marginTop: 20,\n },\n reassess: {\n marginLeft: 15,\n marginTop: 15,\n },\n itemre: {\n marginTop: 10,\n marginBottom: 5,\n },\n header: {\n padding: theme.spacing(3),\n },\n avatarlarge: {\n width: theme.spacing(7),\n height: theme.spacing(7),\n marginRight: theme.spacing(1),\n },\n light: {\n color: \"#666\",\n },\n smallicons: {\n color: \"#666\",\n },\n itemtitle: {\n fontSize: 12,\n },\n prog: {\n marginTop: -12,\n },\n itemgrid: {\n minHeight: 22,\n marginBottom: theme.spacing(1),\n },\n name: {\n maxWidth: 400,\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n tableCell: {\n width: \"15em\",\n },\n challengesTable: {\n width: \"100%\",\n },\n missionsTable: {\n width: \"100%\",\n },\n iconPosition: {\n position: \"absolute\",\n top: 18,\n right: 35\n }\n});\n\nexport const CandidateEngagement = withStyles(styles)(\n ({\n candidate,\n missions,\n classes,\n getCandidateEngagements,\n portaldetails,\n \n }) => {\n let [showResources, setShowResources] = React.useState(false);\n let [showCourses, setShowCourses] = React.useState(false);\n let [showMissions, setShowMissions] = React.useState(false);\n let [showChallenges, setShowChallenges] = React.useState(false);\n let [showEngagement, setShowEngagement] = React.useState(true);\n let [showJobs, setShowJobs] = React.useState(true);\n\n\n useEffect(() => {\n async function fetchEngagements() {\n try {\n await getCandidateEngagements();\n } catch (error) {}\n }\n fetchEngagements();\n }, [getCandidateEngagements]);\n\n if (!candidate.assessmentCompleted) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <Typography variant=\"subtitle2\">\n This candidate has not completed the assessment yet.\n </Typography>\n </Grid>\n </Grid>\n );\n }\n const appEngagements = candidate.engagements;\n\n\n const { jobsApplied, jobsSaved, jobsViewed, qualsViewed, qualsSaved, qualsApplied, resourceViewed = [], coursesViewed = [] } = candidate;\n\n const type3Interventions = portaldetails.interventions.filter(\n ({ type }) => type === 3\n );\n\n let orgcontracts = portaldetails.orgcontracts;\n let hideQualifications = true;\n\n _.each(orgcontracts,(contract) => {\n if (contract.jobsType > 0) {\n hideQualifications = false;\n }\n });\n\n \n let d = new Date();\n let [chartYear, setChartYear] = React.useState(d.getFullYear());\n let [chartMonth, setChartMonth] = React.useState(d.getMonth());\n let dates = [];\n const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\n const getDaysInMonth = function(month,year) {\n return new Date(year, month, 0).getDate();\n };\n\n \n if (appEngagements && appEngagements.chartData) {\n let days = getDaysInMonth(chartYear, chartMonth); \n\n for (var i = 1; i !== days + 1; i++) {\n let d = new Date(chartYear, chartMonth , i ).toISOString();\n let m = new Date(chartYear, chartMonth , i ).getMonth();\n if (m !== chartMonth) continue;\n let findD = _.find(appEngagements.chartData, (data) => {\n return data.date === d;\n });\n let duration = (findD && findD.duration) ? findD.duration : 0;\n dates.push({date: d, duration: duration})\n }\n }\n \n\n const goBackMonth = () => {\n chartMonth = chartMonth - 1;\n if (chartMonth === -1) {\n chartMonth = 11;\n chartYear = chartYear - 1; \n setChartMonth(chartMonth);\n setChartYear(chartYear);\n } else {\n setChartMonth(chartMonth); \n }\n }\n\n const goForwardMonth = () => {\n chartMonth = chartMonth + 1;\n if (chartMonth === 12) {\n chartMonth = 1;\n chartYear = chartYear + 1; \n setChartMonth(chartMonth);\n setChartYear(chartYear);\n } else {\n setChartMonth(chartMonth); \n }\n }\n \n const getMonthYear = () => {\n return monthNames[chartMonth] + \" \" + chartYear;\n }\n\n const showQualifications = () => {\n\n if (!hideQualifications){\n return <><Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Qualifications and Training\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item style={{ marginTop: 10 }}>\n {qualsViewed && (\n <CandidateAnalytics\n jobsViewed={qualsViewed}\n jobsApplied={qualsApplied}\n jobsSaved={qualsSaved}\n isQual={true}\n />\n )}\n </Grid></>\n } else {\n return <></>\n }\n }\n\n\n return (\n <>\n {/*\n\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\">\n Rewards\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n */}\n\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showJobs){\n setShowJobs(false);\n } else {\n setShowJobs(true);\n }\n }}>{\"Jobs & Occupations\"}\n {showJobs ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <div style={{display: (showJobs) ? \"block\" : \"none\"}}>\n <Grid item style={{ marginTop: 10 }}>\n {jobsViewed && (\n <CandidateAnalytics\n jobsViewed={jobsViewed}\n jobsApplied={jobsApplied}\n jobsSaved={jobsSaved}\n />\n )}\n </Grid>\n {showQualifications()}\n </div>\n\n {appEngagements ? (\n <>\n <Grid item>\n {appEngagements.chartData.length > 0 ? (\n <>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showEngagement){\n setShowEngagement(false);\n } else {\n setShowEngagement(true);\n }\n }}>\n Engagement\n {showEngagement ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <div style={{display: (showEngagement) ? \"block\" : \"none\"}}>\n <Grid item >\n <AppBar position=\"static\" color=\"default\" elevation={0}>\n <Grid\n container\n direction=\"row\"\n justify=\"space-around\"\n alignItems=\"baseline\"\n style={{ padding: \"1em\" }}\n >\n {/* <Grid item xs>\n <p>First Session</p>\n <p>First Session</p>\n </Grid> */}\n <Grid item>\n <Typography>Last Login Activity</Typography>\n <Typography>\n <strong>\n {\" \"}\n {moment(candidate.lastAuthenticatedAt).format(\n \"DD/MM/YYYY hh:mm:ss a\"\n )}\n </strong>\n </Typography>\n </Grid>\n\n <Grid item>\n <Typography>No. of Sessions</Typography>\n <Typography>\n <strong>{appEngagements.numberOfSessions}</strong>\n </Typography>\n </Grid>\n <Grid item>\n <Typography>Overall Duration</Typography>\n <Typography>\n <strong>\n {appEngagements.totalDurationFormatted}\n </strong>\n </Typography>\n </Grid>\n <Grid item>\n {/*\n <Typography>Av. Usage Duration (Day)</Typography>\n <Typography>\n <strong>{appEngagements.averageDurationDay}</strong>\n </Typography>\n */}\n </Grid>\n </Grid>\n </AppBar>\n </Grid>\n <Grid container justify=\"center\" style={{marginTop:10}}>\n <Grid item>\n <Button variant=\"contained\" onClick={goBackMonth}>Previous Month</Button>\n </Grid>\n <Grid item style={{marginTop: 6,paddingLeft: 20,paddingRight: 20}}>\n <Typography> {getMonthYear()} </Typography>\n </Grid>\n <Grid item > \n <Button variant=\"contained\" onClick={goForwardMonth}>Next Month</Button>\n </Grid>\n </Grid>\n <Grid item style={{ marginTop: 10 }}>\n <CandidateActivityBarChart\n data={dates}\n valueKey=\"duration\"\n />\n </Grid>\n </div>\n </>\n ) : null}\n </Grid>\n </>\n ) : null}\n {missions ? (\n <>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showChallenges){\n setShowChallenges(false);\n } else {\n setShowChallenges(true)\n }\n }}>\n Challenges\n {showChallenges ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item style={{display: (showChallenges) ? \"block\" : \"none\"}}>\n <Table className={classes.challengesTable} size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n <TableCell>Status</TableCell>\n {/*<TableCell>Push</TableCell>*/}\n </TableRow>\n </TableHead>\n <TableBody>\n {type3Interventions.map((row) => {\n let status = \"Not Started\";\n\n const candidateIntervention = candidate.interventions\n ? candidate.interventions[row.sort]\n : null;\n\n if (candidateIntervention) {\n status = \"Started\";\n }\n if (\n candidateIntervention &&\n candidateIntervention.status === \"Complete\"\n ) {\n status = \"Complete\";\n }\n\n return (\n <TableRow key={row.sort}>\n <TableCell className={classes.tableCell}>\n {row.title}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {status}\n </TableCell>\n\n { /* <TableCell className={classes.tableCell}>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n className={classes.button}\n endIcon={<ArrowForwardIcon />}\n >\n Send\n </Button>\n </TableCell>*/\n }\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </Grid>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showMissions){\n setShowMissions(false);\n } else {\n setShowMissions(true)\n }\n }}>\n Missions\n {showMissions ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item style={{ marginTop: \"2em\", display: (showMissions) ? \"block\" : \"none\"}}>\n <Table className={classes.missionsTable} size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n <TableCell>Status</TableCell>\n <TableCell>Dimension</TableCell>\n <TableCell>Score</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {missions.map((row) => (\n <TableRow key={row.id}>\n <TableCell className={classes.tableCell}>\n <MissionHoverView {...row} />\n </TableCell>\n <TableCell className={classes.tableCell}>\n {row.status}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {row.dimensionText}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {row.score}%\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Grid>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showResources){\n setShowResources(false);\n } else {\n setShowResources(true)\n }\n }}>\n Resources\n {showResources ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item style={{ marginTop: \"2em\", display: (showResources) ? \"block\" : \"none\"}}>\n {resourceViewed.length === 0 &&\n <h4 style={{textAlign:\"center\"}}> No resources has been viewed </h4>\n }\n {resourceViewed.length > 0 &&\n <Table className={classes.missionsTable} size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Title</TableCell>\n <TableCell>Link</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {resourceViewed.map((row) => (\n <TableRow key={row.sort}>\n <TableCell className={classes.tableCell}>\n {row.title}\n </TableCell>\n <TableCell className={classes.tableCell}>\n <a href={row.link} target=\"_blank\" rel=\"noopener noreferrer\">View here</a>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n }\n </Grid>\n <Grid item>\n <AppBar\n position=\"static\"\n color=\"default\"\n elevation={0}\n className={classes.sectionTitle}\n >\n <Toolbar variant=\"dense\" className={classes.center}>\n <Typography variant=\"h6\" color=\"inherit\" onClick={() => {\n if (showCourses){\n setShowCourses(false);\n } else {\n setShowCourses(true)\n }\n }}>\n Courses\n {showCourses ? \n (\n <ExpandMoreIcon className={classes.iconPosition} />\n ):\n ( \n <ExpandLessIcon className={classes.iconPosition} />\n )}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n <Grid item style={{ marginTop: \"2em\", display: (showCourses) ? \"block\" : \"none\", paddingBottom:\"50px\"}}>\n {coursesViewed.length === 0 &&\n <h4 style={{textAlign:\"center\"}}> No courses has been viewed </h4>\n }\n {coursesViewed.length > 0 &&\n <Table className={classes.missionsTable} size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Title</TableCell>\n <TableCell>Occupation</TableCell>\n <TableCell>Viewed On</TableCell>\n <TableCell>Provider</TableCell>\n <TableCell>Link</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {coursesViewed.map((row) => (\n <TableRow key={row.sort}>\n <TableCell className={classes.tableCell}>\n {row.name}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {row.occupation}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {moment(row.createdAt).format(\"DD/MM/YYYY\")}\n </TableCell>\n <TableCell className={classes.tableCell}>\n {row.provider}\n </TableCell>\n <TableCell className={classes.tableCell}>\n <a href={row.url} target=\"_blank\" rel=\"noopener noreferrer\">View here</a>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n }\n </Grid>\n \n\n\n\n </>\n ) : null}\n </>\n );\n }\n);\n","// Actions related to authentication\nexport const AUTH_USER = \"AUTH_USER\";\nexport const AUTH_MFA = \"AUTH_MFA\";\nexport const AUTH_NEW_PASSWORD_REQUIRED = \"AUTH_NEW_PASSWORD_REQUIRED\";\nexport const UNAUTH_USER = \"UNAUTH_USER\";\nexport const REGISTER_USER = \"REGISTER_USER\";\nexport const REGISTER_USER_CONFIRM = \"REGISTER_USER_CONFIRM\";\nexport const REGISTER_MFA = \"REGISTER_MFA\";\nexport const REGISTER_USER_ERROR = \"REGISTER_USER_ERROR\";\nexport const FORGOT_PASSWORD = \"FORGOT_PASSWORD\";\nexport const FORGOT_PASSWORD_CONFIRM = \"FORGOT_PASSWORD_CONFIRM\";\nexport const AUTH_ERROR = \"AUTH_ERROR\";\nexport const AUTH_ERROR_CLEAR = \"AUTH_ERROR_CLEAR\";\n\n//CANDIDATES\nexport const FETCH_CANDIDATES = \"candidates/FETCH\";\nexport const FETCH_CANDIDATE_DETAILS = \"candidates/FETCH_CANDIDATE_DETAILS\";\nexport const EMPTY_CANDIDATE_DETAILS = \"candidates/EMPTY_CANDIDATE_DETAILS\";\nexport const EMPTY_CANDIDATES = \"candidates/EMPTY\";\nexport const SET_NEW_SKILLS = \"candidates/SET_NEW_SKILLS\";\nexport const EMPTY_CANDIDATES_SELECTION =\n \"candidates/CANDIDATE_PAGE_EMPTY_SELECTION\";\nexport const FETCH_CANDIDATE_BACKPACK = \"candidates/CANDIDATE_BACKPACK\";\nexport const FETCH_CANDIDATE_MATCHES = \"candidates/FETCH_CANDIDATE_MATCHES\";\nexport const FETCH_CANDIDATE_SKILLS_INFO = \"candidates/CANDIDATE_SKILLS_INFO\";\nexport const FETCH_CANDIDATE_ENGAGEMENTS = \"candidates/CANDIDATE_ENGAGEMENTS\";\nexport const FETCH_CANDIDATE_JOB_MATCHES = \"candidates/CANDIDATE_JOB_MATCHES\";\nexport const PORTAL_SELECT_LINEMANAGER = \"candidates/PORTAL_SELECT_LINEMANAGER\";\nexport const PORTAL_DESELECT_LINEMANAGER = \"candidates/PORTAL_DESELECT_LINEMANAGER\";\nexport const PORTAL_SELECT_DEPARTMENT = \"candidates/PORTAL_SELECT_DEPARTMENT\";\nexport const PORTAL_DESELECT_DEPARTMENT = \"candidates/PORTAL_DESELECT_DEPARTMENT\";\nexport const FETCH_VALIDATION_REQUESTS = \"candidates/FETCH_VALIDATION_REQUESTS\";\n\n\n//ADMIN /KEYWORKER\nexport const OPEN_KEYWORKER_DIALOG = \"orgadmin/OPEN_KEYWORKER_DIALOG\";\nexport const CLOSE_KEYWORKER_DIALOG = \"orgadmin/CLOSE_KEYWORKER_DIALOG\";\nexport const ADD_KEYWORKER_CONTRACT = \"orgadmin/ADD_KEYWORKER_CONTRACT\";\n\nexport const FETCH_PORTAL_USERS = `/orgadmin/PORTALUSERS`;\n\n//PORTAL USER\nexport const PORTAL_DETAILS = \"portal/DETAILS\";\nexport const FETCH_INTERVENTIONS = \"portal/FETCH_INTERVENTIONS\";\nexport const FETCH_MISSIONS = \"portal/GET_MISSIONS\";\nexport const SET_RECENTLY_VIEWED = \"portal/SET_RECENTLY_VIEWED\";\nexport const PORTAL_LOCATION_LIST = \"portal/PORTAL_LOCATION_LIST\";\nexport const CUSTOMER_CHECK = \"portal/CUSTOMER_CHECK\";\nexport const SET_HELP_VIDEOS = \"portal/SET_HELP_VIDEOS\";\n\n//EMPLOYER / VACANCIES\nexport const FETCH_VACANCIES = \"vacancies/FETCH_VACANCIES\";\nexport const ADD_VACANCY = \"vacancies/ADD_VACANCY\";\nexport const EDIT_VACANCY = \"vacancies/EDIT_VACANCY\";\nexport const FETCH_VACANCIES_CANDIDATES = \"vacancies/FETCH_VACANCIES_CANDIDATES\";\nexport const FIND_VACANCIES_STATUSES = \"vacancies/FIND_VACANCIES_STATUSES\";\nexport const SET_CANDIDATE_DETAILS = \"vacancies/SET_CANDIDATE_DETAILS\";\nexport const UPDATE_CANDIDATE_INFO = \"vacancies/UPDATE_CANDIDATE_INFO\";\nexport const SET_VACANCY_BY_ID = \"vacancies/SET_VACANCY_BY_ID\";\nexport const ADD_SEARCH = \"vacancies/ADD_SEARCH\";\nexport const FETCH_SEARCHES = \"vacancies/FETCH_SEARCHES\";\nexport const REMOVE_SEARCH = \"vacancies/REMOVE_SEARCH\";\nexport const EDIT_SEARCH = \"vacancies/EDIT_SEARCH\";\nexport const FETCH_SEARCH_CANDIDATES = \"vacancies/FETCH_SEARCH_CANDIDATES\";\nexport const FETCH_SEARCH_SHORTLIST = \"vacancies/FETCH_SEARCH_SHORTLIST\";\nexport const UPDATE_SEARCH_SHORTLIST = \"vacancies/UPDATE_SEARCH_SHORTLIST\";\nexport const FILTER_SEARCH_CANDIDATES = \"vacancies/FILTER_SEARCH_CANDIDATES\";\nexport const FETCH_BOT_TEMPLATE = \"vacancies/FETCH_BOT_TEMPLATE\";\nexport const EDIT_TEMPLATE = \"vacancies/EDIT_TEMPLATE\";\nexport const ADD_TEMPLATE = \"vacancies/ADD_TEMPLATE\";\nexport const REMOVE_TEMPLATE = \"vacancies/REMOVE_TEMPLATE\";\nexport const UPDATE_VIEWED_CANDIDATES = \"vacancies/UPDATE_VIEWED_CANDIDATES\";\nexport const REMOVE_VACANCY = \"vacancies/REMOVE_VACANCY\";\nexport const UPDATE_SNACKBAR = \"vacancies/UPDATE_SNACKBAR\";\nexport const FETCH_VACANCIES_CANDIDATES_MONSTER = \"vacancies/FETCH_VACANCIES_CANDIDATES_MONSTER\";\nexport const REMOVE_VACANCIES_CANDIDATES = \"vacancies/REMOVE_VACANCIES_CANDIDATES\";\nexport const GET_VIEW_PREFS = \"vacancies/GET_VIEW_PREFS\";\n\n//QUALIFICATIONS \nexport const UPDATE_QUALIFICATION = \"qualification/UPDATE_QUALIFICATION\";\nexport const LOADING_QUALIFICATION = \"qualification/LOADING\";\nexport const ADD_QUALIFICATION = \"qualification/ADD\";\nexport const FETCH_QUALIFICATIONS = \"qualification/FETCH_QUALIFICATIONS\";\n\nexport const PORTAL_SELECT_CONTRACT = \"portal/SELECT_CONTRACT\";\nexport const PORTAL_LIST_CONTRACTS = \"portal/LIST_CONTRACTS\";\nexport const LIST_KEYWORKER_CONTRACTS = \"portal/LIST_KEYWORKER_CONTRACTS\";\n\nexport const PORTAL_SELECT_KEYWORKER = \"portal/SELECT_KEYWORKER\";\nexport const PORTAL_SELECT_KEYWORKERS = \"portal/SELECT_KEYWORKERS\";\nexport const PORTAL_DESELECT_KEYWORKER = \"portal/PORTAL_DESELECT_KEYWORKER\";\n\nexport const PORTAL_SELECT_PROVIDER = \"portal/PORTAL_SELECT_PROVIDER\";\n\nexport const PORTAL_CASELOAD = `portal/CASELOAD`;\nexport const PORTAL_CASELOAD_ENDDATE = `portal/CASELOAD/ENDDATE`;\nexport const PORTAL_ORGADMIN_CASELOAD = `orgadmin/CASELOAD`;\nexport const PORTAL_ORGADMIN_CASELOAD_GLOBAL = \"orgadmin/CASELOAD/GLOBAL\";\nexport const PORTAL_ORGADMIN_CASELOAD_ENDDATE = `orgadmin/CASELOAD/ENDDATE`;\nexport const PORTAL_DASHBOARD_CASELOAD = `portal/DASHBOARD_CASELOAD`;\nexport const PORTAL_DASHBOARD_CASELOADS = `portal/DASHBOARD_CASELOADS`;\nexport const PORTAL_SUPPLY_DATA = `portal/PORTAL_SUPPLY_DATA`;\nexport const PORTAL_SUPPLY_LOW = `portal/PORTAL_SUPPLY_LOW`;\nexport const PORTAL_ADZUNA_CATEGORY = `portal/PORTAL_ADZUNA_CATEGORY`;\nexport const PORTAL_ADZUNA_HISTORICAL_CATEGORY = `portal/PORTAL_ADZUNA_HISTORICAL_CATEGORY`;\nexport const PORTAL_ADZUNA_HISTOGRAM_CATEGORY = `portal/PORTAL_ADZUNA_HISTOGRAM_CATEGORY`;\nexport const PORTAL_ADZUNA_REGION_DATA = `portal/PORTAL_ADZUNA_REGION_DATA`;\n\n//RESET\nexport const RESET_APP = \"RESET_APP\";\n\n//SUPER ADMIN\nexport const SA_FETCH_ORGS = \"sa/FETCH_ORGS\";\nexport const SA_FETCH_ORGADMINS = \"sa/FETCH_ORGADMINS\";\nexport const SA_FETCH_KEYWORKERS = \"sa/FETCH_KEYWORKERS\";\nexport const SA_FETCH_PARTNERS = \"sa/SA_FETCH_PARTNERS\";\nexport const SA_FETCH_EMPLOYERS = \"sa/SA_FETCH_EMPLOYERS\";\nexport const SA_FETCH_FLEXIBLE = \"sa/SA_FETCH_FLEXIBLE\";\nexport const SA_FETCH_HRMANAGERS = \"sa/SA_FETCH_HRMANAGERS\";\nexport const SA_FETCH_LINEMANAGERS = \"sa/SA_FETCH_LINEMANAGERS\";\nexport const SA_FETCH_FLEXIBLE_USER_DETAILS = \"sa/SA_FETCH_FLEXIBLE_USER_DETAILS\";\nexport const SA_PROVIDER_FETCH_DETAILS = \"sa/SA_PROVIDER_FETCH_DETAILS\";\nexport const SA_SELECT_ORG = \"sa/SELECT_ORG\";\nexport const SA_ERROR = \"sa/ERROR\";\nexport const SA_DELETE = \"sa/DELETE\";\nexport const SA_LOADING = \"sa/LOADING\";\nexport const SA_FETCH_DUMMYKWS = \"sa/FETCH_DUMMYKWS\";\nexport const SA_FETCH_CASELOAD = \"sa/FETCH_CASELOAD\";\nexport const SA_FEEDBACK = \"sa/FEEDBACK\";\nexport const SA_FEEDBACK_DELETE = \"sa/FEEDBACK/DELETE\";\nexport const SA_DISPLAY_TOAST = \"sa/SA_DISPLAY_TOAST\";\nexport const SA_FEEDBACK_USER = \"sa/FEEDBACK/USER\";\nexport const SA_UNFULFILLED_ORDERS = \"sa/ORDERS/UNFULFILLED\";\n\n//REWARDS\nexport const FETCH_COINS = \"rewards/FETCH_COINS\";\nexport const RESET_COINS = \"rewards/RESET_COINS\";\n\n//\n\nexport const FETCH_ALL_OCCUPATIONS = \"occupation/FETCH_All\";\n\n// caseload\nexport const CL_FETCH_CONTRACT_AND_PROVIDERS = \"caseload/FETCH_CONTRACT_AND_PROVIDERS\";\nexport const CL_FETCH_CASELOAD = \"caseload/CL_FETCH_CASELOAD\";\nexport const CL_FETCH_EVENTS = \"caseload/CL_FETCH_EVENTS\";\nexport const CL_FETCH_EXCEPTION_REPORT = \"caseload/CL_FETCH_EXCEPTION_REPORT\";\nexport const CL_RESET_EXCEPTION_REPORT = \"caseload/CL_RESET_EXCEPTION_REPORT\";\nexport const CL_FETCH_KEYWORKERS = \"caseload/CL_FETCH_KEYWORKERS\";\nexport const CL_FETCH_ORG_DATA = \"caseload/CL_FETCH_ORG_DATA\";\nexport const CLEAR_CASELOAD = \"caseload/CLEAR_CASELOAD\";\n\n\n// jobs \n\nexport const INDEED_DESCRIPTION = \"jobs/INDEED_DESCRIPTION\";\n\n// bulk upload\nexport const UPDATE_BULK_UPLOAD_PROGRESS = \"orgadmin/UPDATE_BULK_UPLOAD_PROGRESS\";\nexport const SET_BULK_EMAIL_TEMPLATE = \"orgadmin/SET_BULK_EMAIL_TEMPLATE\";\n\n// internalMobility\nexport const SET_ROLES = \"im/SET_ROLES\";\nexport const SET_LOCATIONS = \"im/SET_LOCATIONS\";\nexport const SET_DEPARTMENTS = \"im/SET_DEPARTMENTS\";\nexport const SET_DEMOGRAPHICS = \"im/SET_DEMOGRAPHICS\";\nexport const SET_LINEMANAGERS = \"im/SET_LINEMANAGERS\";\nexport const SET_UNVERIFIED = \"im/SET_UNVERIFIED\";","import { Grid, Tab, Tabs } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport React, { useState, useEffect } from \"react\";\n\nconst useStyles = makeStyles((theme) => ({\n tabsRoot: {\n borderBottom: \"1px solid #e8e8e8\",\n marginTop: 20,\n marginBottom: 10,\n },\n}));\n\nexport function TabControl({ panels, defaultTab, onTabChange }) {\n const classes = useStyles();\n const tabLabels = Array.from(new Set(panels.map(({ label }) => label))).filter((item) => !item.disabled);\n const defaultTabIndex = defaultTab\n ? tabLabels.findIndex((label) => label === defaultTab)\n : 0;\n const [currentTabIndex, changeTabIndex] = useState(defaultTabIndex);\n const [useDefault, setUseDefault] = useState(true);\n\n useEffect(() => {\n setUseDefault(true);\n }, [defaultTab]);\n\n useEffect(() => {\n defaultTab &&\n useDefault &&\n changeTabIndex(tabLabels.findIndex((label) => label === defaultTab) || 0);\n }, [defaultTab, tabLabels, useDefault]);\n\n function handleChange(event, newValue) {\n changeTabIndex(newValue);\n setUseDefault(false);\n //onTabChange(newValue);\n }\n\n return (\n <Grid>\n <Grid item>\n <Tabs\n value={currentTabIndex}\n onChange={handleChange}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n className={`${classes.tabsRoot} hide-on-print`}\n >\n {tabLabels.map((label) => (\n <Tab key={label} label={label} />\n ))}\n </Tabs>\n </Grid>\n <Grid item>{panels[currentTabIndex].render()}</Grid>\n </Grid>\n );\n}\n","import { API, Logger } from \"aws-amplify\";\nimport _ from \"lodash\";\nimport config from \"../config/\";\nimport {\n EMPTY_CANDIDATES,\n EMPTY_CANDIDATE_DETAILS,\n FETCH_CANDIDATES,\n FETCH_CANDIDATE_BACKPACK,\n FETCH_CANDIDATE_DETAILS,\n FETCH_CANDIDATE_ENGAGEMENTS,\n FETCH_CANDIDATE_JOB_MATCHES,\n FETCH_CANDIDATE_MATCHES,\n FETCH_CANDIDATE_SKILLS_INFO,\n FETCH_COINS,\n FETCH_ALL_OCCUPATIONS,\n SET_NEW_SKILLS,\n FETCH_VALIDATION_REQUESTS\n} from \"./types\";\n\nconst logger = new Logger(\"CANDIDATES.ACTIONS\", \"INFO\");\n\n// Cognito - Auth.signIn()\nexport function fetchCandidates() {\n return async function (dispatch, getState) {\n var contractID = null;\n const state = getState();\n if (\n state.portaldetails.selectedContract &&\n state.portaldetails.selectedContract.contractID\n ) {\n contractID = state.portaldetails.selectedContract.contractID;\n }\n\n try {\n if (!contractID) {\n dispatch({ type: EMPTY_CANDIDATES, candidates: null });\n return;\n }\n let data = null;\n\n const currentKeyWorkerId = state.portaldetails.currentKeyWorker\n ? state.portaldetails.currentKeyWorker\n : state.portaldetails.user.userID;\n data = await API.get(\n config.API_NAME,\n `/keyworker/${currentKeyWorkerId}/candidates/${contractID}`\n );\n if (data.data && !_.isEmpty(data.data)) {\n dispatch({ type: FETCH_CANDIDATES, candidates: data.data });\n } else {\n dispatch({ type: FETCH_CANDIDATES, candidates: [] });\n }\n } catch (e) {\n dispatch({ type: FETCH_CANDIDATES, candidates: [] });\n }\n };\n}\n\nexport function fetchCandidatesIM(lineManagerID, departmentID) {\n return async function (dispatch, getState) {\n try {\n const data = await API.post(config.API_NAME, \"/keyworker/candidates/getIM\",\n {\n body: {\n lineManagerID: lineManagerID,\n departmentID: departmentID\n },\n }\n );\n if (data.data && !_.isEmpty(data.data)) {\n dispatch({ type: FETCH_CANDIDATES, candidates: data.data });\n } else {\n dispatch({ type: FETCH_CANDIDATES, candidates: [] });\n }\n } catch (e) {\n dispatch({ type: FETCH_CANDIDATES, candidates: [] });\n }\n };\n}\n\nexport function fetchCandidateDetails(candidate, keyworkerId) {\n return async function (dispatch, getState) {\n const state = getState();\n dispatch({\n type: EMPTY_CANDIDATE_DETAILS,\n selectedCandidate: null,\n });\n\n try {\n if (candidate) {\n let currentKeyWorkerId = state.portaldetails.currentKeyWorker\n ? state.portaldetails.currentKeyWorker\n : state.portaldetails.user.userID;\n\n if (keyworkerId){\n currentKeyWorkerId = keyworkerId;\n }\n let data = await API.get(\n config.API_NAME,\n `/keyworker/${currentKeyWorkerId}/candidate/${candidate.userID}`\n );\n \n if (data.data) {\n await dispatch({\n type: FETCH_CANDIDATE_DETAILS,\n selectedCandidate: data.data,\n });\n dispatch(fetchValidationRequests());\n const { candidates: { selectedCandidateData } } = getState();\n\n let {\n latestAssessmentResult,\n desiredExp,\n desiredOccupations,\n occupationsExtended,\n desiredOccupationsExtended,\n occupations,\n qualifications,\n skills_names,\n occupationsOriginal,\n desiredOccupationsOriginal,\n userID,\n coinsObject} = selectedCandidateData;\n \n let payload = {\n latestAssessmentResult,\n desiredOccupations,\n occupationsExtended,\n occupations,\n desiredExp,\n qualifications,\n calculateQualifications: false,\n skills_names,\n userID,\n occupationsOriginal,\n desiredOccupationsOriginal,\n };\n\n const new_jobs_cats = await API.post(\n config.API_NAME,\n \"/jobs/query/all_occupations\",\n {\n body: {\n data: payload,\n },\n }\n );\n \n dispatch({\n type: FETCH_ALL_OCCUPATIONS,\n new_jobs_cats\n })\n\n dispatch({\n type: FETCH_COINS,\n data: coinsObject\n });\n } else {\n dispatch({ type: FETCH_CANDIDATE_DETAILS, selectedCandidate: {} });\n }\n }\n } catch (e) {\n logger.error(\"fetchCandidateDetails():\", e);\n dispatch({ type: FETCH_CANDIDATE_DETAILS, selectedCandidate: {} });\n }\n };\n}\n\nexport const inviteToVacancy = (userId, vacancy) => {\n let body = {\n userId: userId,\n jobId: vacancy.jobId,\n jobTitle: vacancy.jobTitle,\n employer: vacancy.employerName,\n location : vacancy.original_location,\n salary : vacancy.annual_salary_min.toString(),\n invited : true ,\n rangeKey : vacancy.rangeKey\n };\n return async (dispatch) => {\n try {\n /*eslint-disable */\n let data = await API.post(config.API_NAME, \"/keyworker/invite/candidate/\", {\n body: body\n });\n\n let saveItem = await API.post(config.API_NAME, \"/keyworker/invite/candidate/saved/\", {\n body: {\n userID: userId,\n rangeKey : vacancy.rangeKey,\n jobitem : vacancy\n }\n });\n /*eslint-enable */\n } catch (e) {\n logger.error(\"inviteToVacancy():\", e);\n }\n }\n}\n\nexport function triggerReassessment(candidate) {\n return async function (dispatch, getState) {\n try {\n await dispatch(fetchCandidateDetails(candidate, true));\n const {\n candidates: { selectedCandidateData },\n } = getState();\n if (!selectedCandidateData.isInterventionOngoing) {\n let data = await API.get(\n config.API_NAME,\n \"/keyworker/candidate/\" + candidate.userID + \"/reassessment\"\n );\n\n if (data.data) {\n //if got data, then refresh candidate details\n dispatch(fetchCandidateDetails(candidate, true));\n }\n }\n } catch (e) {\n logger.error(\"triggerReassessment():\", e);\n }\n };\n}\n\nexport const getBestBackpacks = () => async (dispatch, getState) => {\n try {\n const {\n candidates: {\n selectedCandidateData: {\n occupations,\n desiredExp,\n desiredOccupations,\n qualifications,\n skills_names\n },\n },\n } = getState();\n \n if ( \n !occupations &&\n !desiredOccupations &&\n !qualifications &&\n !skills_names){\n return false;\n }\n\n const { jobs: bestBackpack } = await API.post(\n config.API_NAME,\n \"/jobs/query/skills_backpack_occupations\",\n {\n body: {\n data: {\n occupations,\n desiredExp,\n desiredOccupations,\n qualifications,\n skills_names\n },\n },\n }\n );\n\n dispatch({ type: FETCH_CANDIDATE_BACKPACK, bestBackpack });\n\n // setBestBackpack(bestBackpack);\n } catch (e) {\n console.log(\"error\", e);\n }\n};\n\nexport const getMatches = (type = \"interest\") => async (dispatch, getState) => {\n try {\n const {\n candidates: {\n selectedCandidateData: {\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n desiredExp,\n desiredOccupations,\n qualifications,\n skills_names\n },\n },\n } = getState();\n const url =\n type === \"interest\"\n ? `/jobs/query/interest_jobs_query`\n : `/jobs/query/styles_jobs_query`;\n \n // no data to make these calls.\n if (!latestAssessmentResult && \n !occupationsExtended && \n !occupations &&\n !desiredOccupations &&\n !qualifications &&\n !skills_names){\n return false;\n }\n const { jobs: matches } = await API.post(config.API_NAME, url, {\n body: {\n data: {\n occupations,\n latestAssessmentResult,\n occupationsExtended,\n desiredOccupations,\n desiredExp,\n qualifications,\n skills_names\n },\n },\n });\n\n dispatch({ type: FETCH_CANDIDATE_MATCHES, payload: { matches, type } });\n\n // setBestBackpack(bestBackpack);\n } catch (e) {\n console.log(\"error\", e);\n }\n};\n\nexport const getSkillsInfo = () => async (dispatch, getState) => {\n try {\n const {\n candidates: {\n selectedCandidateData: { occupations, desiredOccupations, occupationSkills } = {},\n skilValidationRequests = {}\n },\n } = getState();\n const { requests= [], completed= []} = skilValidationRequests;\n\n if (!desiredOccupations && !occupations) {\n return false;\n }\n \n let payload = {\n skills: []\n }; \n occupationSkills.forEach((skill, i) => {\n payload.skills.push(...skill.skills.map((individual_skill) => individual_skill.name))\n payload.skills.push(...skill.optionalSkills.map((individual_skill) => individual_skill.name))\n if(skill.deletedSkills){\n payload.skills.push(...skill.deletedSkills.map((individual_skill) => individual_skill.name))\n }\n })\n const { data } = await API.post(\n config.API_NAME,\n \"/data/skills/description\",\n {\n body: payload\n }\n );\n \n function getDesc(skill_name){\n const f = data[skill_name.toLowerCase()];\n if (f) {\n return f;\n }\n else{\n return \"No description available\"\n }\n }\n function skillLoop(skill_list){\n return skill_list.map((individual_skill_object) => ({\n skill:individual_skill_object.name,\n proficiency: individual_skill_object.level,\n projectedLevel: individual_skill_object.projectedLevel,\n description: getDesc(individual_skill_object.name),\n pendingValidationRequest: requests.find((item) => item.skill === individual_skill_object.name) ? true : false,\n }))\n }\n\n let skillsInfo = occupationSkills.map((skillObj) => {\n const skills = skillLoop(skillObj.skills)\n const optionalSkills = skillObj.optionalSkills ? skillLoop(skillObj.optionalSkills) : []\n const deletedSkills = skillObj.deletedSkills ? skillLoop(skillObj.deletedSkills) : []\n return {\n title: skillObj['occupation'],\n skills,\n optionalSkills,\n deletedSkills\n };\n });\n\n skillsInfo.push(...skillsInfo.splice(skillsInfo.findIndex(obj => (obj.title.includes(\"Manually Added\") || obj.title.includes(\"Resource Added Skills\"))), 1))\n \n dispatch({ type: FETCH_CANDIDATE_SKILLS_INFO, skillsInfo });\n } catch (e) {\n console.log(\"error\", e);\n }\n};\n\nexport const getCandidateEngagements = () => async (dispatch, getState) => {\n\n try {\n const {\n auth: { role },\n portaldetails: {\n currentKeyWorker,\n user: { userID },\n },\n candidates: {\n selectedCandidateData: { userID: candidateUserId },\n },\n } = getState();\n\n const keyworkerId = role === \"org-admin\" ? currentKeyWorker : userID;\n\n\n const {\n data: {\n engagement,\n jobsApplied,\n jobsSaved,\n jobsViewed,\n quals = {},\n jobs = {},\n qualsApplied,\n qualsSaved,\n qualsViewed,\n resourceViewed,\n coursesViewed\n },\n } = await API.get(\n config.API_NAME,\n `/keyworker/${keyworkerId}/candidate/${candidateUserId}/engagement`\n );\n\n\n //TODO: move this to reducer\n if (engagement) {\n\n const dates = Object.keys(engagement).filter((key) =>\n key.match(/\\d{4}-\\d{1,2}-\\d{1,2}/gm)\n );\n const engagementData = dates.map((dateString) => {\n const [year, month, date] = dateString.split(\"-\");\n return {\n date: new Date(year, month - 1, date).toISOString(),\n duration: Math.round(engagement[dateString] / 60),\n };\n });\n engagementData.sort((a, b) => new Date(a.date) - new Date(b.date));\n\n const totalDuration = dates.reduce(\n (acl, curr) => acl + engagement[curr],\n 0\n );\n\n const xmins = Math.floor(totalDuration / 60);\n const xhours = Math.floor(xmins / 60);\n\n var totalDurationFormatted =\n String(xhours) + \" hours \" + String(xmins - xhours * 60) + \" minutes\";\n\n if (xmins <= 60) {\n totalDurationFormatted = String(xmins) + \" minutes\";\n }\n\n dispatch({\n type: FETCH_CANDIDATE_ENGAGEMENTS,\n engagements: {\n chartData: engagementData,\n numberOfSessions: engagement.numberOfSessions,\n averageDurationSession: dates.length\n ? Math.round(totalDuration / 60 / engagement.numberOfSessions) +\n \" mins\"\n : \"Not started\",\n averageDurationDay: dates.length\n ? Math.round(totalDuration / 60 / dates.length) + \" mins\"\n : \"Not started\",\n totalDuration,\n totalDurationFormatted,\n },\n jobsViewed,\n jobsApplied,\n jobsSaved,\n qualsApplied,\n qualsSaved,\n qualsViewed,\n quals,\n jobs,\n resourceViewed,\n coursesViewed\n });\n } else {\n dispatch({\n type: FETCH_CANDIDATE_ENGAGEMENTS,\n engagements: null,\n jobsViewed,\n jobsApplied,\n jobsSaved,\n qualsApplied,\n qualsSaved,\n qualsViewed,\n resourceViewed: [],\n coursesViewed: []\n });\n }\n\n // setBestBackpack(bestBackpack);\n } catch (e) {\n console.log(\"error\", e);\n }\n};\n\nexport const getCandidateJobMatches = () => async (dispatch, getState) => {\n try {\n const {\n candidates: {\n selectedCandidateData: {\n latestAssessmentResult,\n occupations,\n occupationsExtended,\n qualifications,\n },\n },\n } = getState();\n const {\n jobs: {\n sb_tech_backpack: [backpack],\n tech_int_styles: {\n Interests: [interestOne, interestTwo],\n Styles: [stylesOne, stylesTwo],\n },\n sb_backpack: [normalBackpack],\n normal_int_styles: {\n added_occs_styles: [normalStyleOne, normalStyleTwo],\n added_occs_interests: [normalInterestOne, normalInterestTwo],\n },\n },\n } = await API.post(config.API_NAME, \"/jobs/int_styles\", {\n body: {\n data: {\n latestAssessmentResult,\n occupations,\n htmlStrip: true,\n occupationsExtended,\n qualifications,\n },\n },\n });\n\n const techJobMatches = []\n .concat({\n url: backpack.url,\n sector: backpack.sector,\n interestScore: backpack.interests_score,\n stylesScore: backpack.styles_score,\n title: backpack.most_similar_occ,\n interests: backpack.interests_normal,\n styles: backpack.styles_normal,\n skills: backpack.similarity_in_skills,\n skillScore: backpack.similarity,\n })\n .concat(\n [interestOne, interestTwo, stylesOne, stylesTwo].map(\n ([\n title,\n stylesScore,\n interestScore,\n skillScore,\n sector,\n url,\n interests,\n styles,\n skills,\n ]) => ({\n url,\n sector,\n skillScore,\n interestScore,\n stylesScore,\n title,\n interests,\n styles,\n skills,\n })\n )\n );\n\n const normalJobMatches = []\n .concat({\n interestScore: normalBackpack.interests_score,\n stylesScore: normalBackpack.styles_score,\n title: normalBackpack.most_similar_occ,\n interests: normalBackpack.interests_normal,\n styles: normalBackpack.styles_normal,\n skills: normalBackpack.similarity_in_skills,\n skillScore: normalBackpack.similarity,\n })\n .concat(\n [\n normalInterestOne,\n normalInterestTwo,\n normalStyleOne,\n normalStyleTwo,\n ].map(\n ([\n title,\n stylesScore,\n interestScore,\n skillScore,\n interests,\n styles,\n skills = [],\n ]) => ({\n skillScore,\n interestScore,\n stylesScore,\n title,\n interests,\n styles,\n skills,\n })\n )\n );\n\n dispatch({\n type: FETCH_CANDIDATE_JOB_MATCHES,\n payload: { techJobMatches, normalJobMatches },\n });\n\n // setBestBackpack(bestBackpack);\n } catch (e) {\n console.log(\"error\", e);\n }\n};\n\nexport function addNewSkill(skills) {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { userID, occupationSkills=[] } = selectedCandidateData;\n let newOccupationSkills = occupationSkills\n let skillObjIdx = null\n let newSkillList = skills.map((item) => {return {\"name\": item, \"level\": 1}})\n\n occupationSkills.forEach(function (item, index) {\n if (item.occupation === \"Manually Added: Skills\"){\n skillObjIdx = index\n }\n });\n \n if(skillObjIdx){\n newOccupationSkills[skillObjIdx].skills.push(...newSkillList)\n }\n else{\n skillObjIdx = newOccupationSkills.length\n newOccupationSkills.push({'occupation': \"Manually Added: Skills\", 'expertise': \"Beginner\", 'skills': newSkillList, 'optionalSkills': [], 'deletedSkills':[]})\n }\n\n\n const data = await API.post(\n config.API_NAME,\n \"/keyworker/candidateskills\",\n {\n body: {\n userID: userID,\n occupationSkills: newOccupationSkills\n },\n }\n );\n await dispatch({\n type: SET_NEW_SKILLS,\n newOccupationSkills: newOccupationSkills,\n });\n await dispatch(getSkillsInfo());\n\n } catch (e) {\n logger.error(\"addNewSkill():\", e);\n }\n }\n}\n\nexport function editSkillLevel(skill, level) {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { occupationSkills=[], skillsInfo=[] } = selectedCandidateData;\n function skillLoop(skill_list){\n return skill_list.map((_item) => {\n if(_item.skill === skill || _item.name === skill){\n return {..._item, projectedLevel: level}\n }\n else{\n return _item\n }\n })\n }\n\n const newSkillsInfo = skillsInfo.map((item) => {\n return {...item, skills: skillLoop(item.skills), optionalSkills: item.optionalSkills ? skillLoop(item.optionalSkills) : [], deletedSkills: item.deletedSkills ? skillLoop(item.deletedSkills) : []}\n })\n\n const newOccupationSkills = occupationSkills.map((item) => {\n return {...item, skills: skillLoop(item.skills), optionalSkills: item.optionalSkills ? skillLoop(item.optionalSkills) : [], deletedSkills: item.deletedSkills ? skillLoop(item.deletedSkills) : []}\n })\n\n console.log(newOccupationSkills)\n console.log(newSkillsInfo)\n\n await dispatch({type: SET_NEW_SKILLS, newOccupationSkills: newOccupationSkills});\n dispatch({ type: FETCH_CANDIDATE_SKILLS_INFO, skillsInfo: newSkillsInfo });\n\n } catch (e) {\n logger.error(\"editSkillLevel():\", e);\n }\n }\n}\n\n\nexport function saveSkills(skills) {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { userID, occupationSkills=[] } = selectedCandidateData;\n\n const data = await API.post(\n config.API_NAME,\n \"/keyworker/candidateskills\",\n {\n body: {\n userID: userID,\n occupationSkills: occupationSkills\n },\n }\n );\n\n dispatch(setSkillUpdates(skills))\n\n } catch (e) {\n logger.error(\"saveSkills():\", e);\n }\n }\n}\n\n\nexport function fetchValidationRequests() {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { userID } = selectedCandidateData;\n\n const data = await API.post(\n config.API_NAME,\n \"/keyworker/validationrequests/get\",\n {\n body: {\n userID: userID\n },\n }\n );\n if(data && data.success){\n dispatch({ type: FETCH_VALIDATION_REQUESTS, data: data.data });\n }\n else{\n dispatch({ type: FETCH_VALIDATION_REQUESTS, data: []});\n }\n } catch (e) {\n logger.error(\"fetchValidationRequests():\", e);\n }\n }\n}\n\nexport function createValidationRequest(skill) {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { userID, skillsInfo } = selectedCandidateData;\n\n const data = await API.post(\n config.API_NAME,\n \"/keyworker/validationrequests/set\",\n {\n body: {\n userID: userID,\n skill: skill\n },\n }\n );\n if(data && data.success){\n dispatch({ type: FETCH_VALIDATION_REQUESTS, data: data.data });\n\n function skillLoop(skill_list){\n return skill_list.map((individual_skill_object) => ({\n ...individual_skill_object,\n pendingValidationRequest: data.data.requests.find((item) => item.skill === individual_skill_object.skill) ? true : false,\n }))\n }\n\n let newSkillsInfo = skillsInfo.map((skillObj) => {\n const skills = skillLoop(skillObj.skills)\n const optionalSkills = skillObj.optionalSkills ? skillLoop(skillObj.optionalSkills) : []\n const deletedSkills = skillObj.deletedSkills ? skillLoop(skillObj.deletedSkills) : []\n return {\n ...skillObj,\n skills: skills,\n optionalSkills: optionalSkills,\n deletedSkills: deletedSkills\n };\n });\n console.log(newSkillsInfo)\n dispatch({ type: FETCH_CANDIDATE_SKILLS_INFO, skillsInfo:newSkillsInfo });\n\n }\n else{\n dispatch({ type: FETCH_VALIDATION_REQUESTS, data: {}});\n }\n\n } catch (e) {\n logger.error(\"createValidationRequest():\", e);\n }\n }\n}\n\nexport function setSkillUpdates(skills) {\n return async function (dispatch, getState) {\n try {\n const { candidates: { selectedCandidateData = {} } } = getState();\n const { userID } = selectedCandidateData;\n\n const data = await API.post(\n config.API_NAME,\n \"/keyworker/projectedskills/set\",\n {\n body: {\n userID: userID,\n skills: skills\n },\n }\n );\n } catch (e) {\n logger.error(\"setSkillUpdates():\", e);\n }\n }\n}","export const DEFAULT = \"/\";\nexport const LOGIN = \"/login\";\nexport const FORGET = \"/forget\";\nexport const MAIN = \"/portal\";\nexport const PRINT = \"/print\";\nexport const PROFILE = \"/portal/profile\";\nexport const FAQ = \"/portal/faq\";\nexport const PRICING = \"/pricing\";\nexport const CANDIDATES = \"/portal/candidates\";\nexport const SKILLZMINER = \"/portal/skillzminer\";//not use?\nexport const SKILLZMINER_RESULTS = \"/portal/skillzminer/job-results\";//not use?\nexport const VACANCIES = \"/portal/vacancies\";\nexport const DASHBOARDS = \"/portal/dashboards\";//not use?\n\nexport const INSIGHTS = \"/portal/insights\"; //not use?\nexport const CASELOADS = \"/portal/caseloads\";\n\n//SUPER ADMIN\nexport const SUPER_ADMIN = \"/portal/super-admin\";\nexport const SUPER_ADMIN_FEEDBACK = \"/portal/super-admin/feedback\";\nexport const SUPER_ADMIN_FEEDBACK_SKILLS = \"/portal/super-admin/skillsasessmentfeedbacks\";\nexport const SUPER_ADMIN_BRANDING = \"/portal/super-admin/branding\";\nexport const SUPER_ADMIN_PROVIDERS = \"/portal/super-admin/providers\";\nexport const SUPER_ADMIN_CONTRACTS = \"/portal/super-admin/contracts\";\nexport const SUPER_ADMIN_OAUSERS = \"/portal/super-admin/oausers\";\nexport const SUPER_ADMIN_CASELOAD = \"/portal/super-admin/caseload\";\nexport const SUPER_ADMIN_CREDITS = \"/portal/super-admin/credits\";\nexport const SUPER_ADMIN_COINS = \"/portal/super-admin/coins\";\n\n//ADMIN stuff\n\nexport const ADMIN = \"/portal/admin\";\nexport const QUALIFICATIONS = '/portal/admin/qualifications';\nexport const MANAGE_USER = '/portal/admin/users';\nexport const NEW_USER = '/portal/admin/createuser';\nexport const ORGANISATION = '/portal/admin/organisation';\nexport const CONTRACTS = '/portal/admin/contracts';\nexport const INTERVENTIONS = '/portal/admin/interventions';\nexport const PROVIDERS = '/portal/admin/providers';\nexport const BULK_INVITE = '/portal/admin/bulkinvite';\n\n//HR manager/Line Manager\nexport const ROLES = '/portal/admin/roles';\nexport const DEPARTMENTS = '/portal/admin/departments';\nexport const LOCATIONS = '/portal/admin/locations';\nexport const DEMOGRAPHICS = '/portal/admin/demographics';\nexport const LINEMANAGERS = '/portal/admin/linemanagers';\n\n//KEYWORKER MOSTLY\nexport const NEW_CANDIDATE = \"/portal/admin/createcandidate\";\nexport const MANAGE_CANDIDATES = \"/portal/admin/candidates\";","var _rect, _path, _path2;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgInterests = function SvgInterests(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 35,\n viewBox: \"0 0 36 35\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n width: 35,\n height: 35,\n rx: 4,\n fill: \"#EAF4FF\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.1702 18.1633L25.2406 18.2333C24.7478 19.4237 24.1611 20.4739 23.7152 21.0808C22.8938 22.1777 22.4949 22.9946 22.4479 23.7414C22.3541 25.4919 22.6591 27.1957 23.504 29.5063C23.6682 29.9731 21.0164 31 17.9891 31C15.3138 31 12.615 30.2531 12.7089 29.5063C12.8262 28.5494 12.662 27.4291 12.4273 26.6822C12.263 26.1921 11.6529 25.842 11.0662 25.8187C10.104 25.7953 9.25916 26.0987 7.75724 25.8187C6.98281 25.6786 7.02975 24.535 7.21749 23.7414C7.40523 22.9479 6.7716 22.7845 6.79507 22.4578C6.79507 22.2711 6.72466 22.131 7.17055 21.8743C6.32572 21.4308 6.63079 21.0107 6.7716 20.6606C7.31135 19.4703 6.7012 19.4703 6.46652 19.377C6.23185 19.2836 5.57476 19.1669 5.50435 18.6301C5.43395 18.0933 6.23185 17.1131 6.86547 16.2495C7.4991 15.4093 7.80417 14.5924 7.45216 13.7755C7.00628 12.7719 7.45216 12.4918 7.73377 10.9281C8.01538 9.36437 8.83675 7.54389 10.6672 6.37692C12.4977 5.20995 14.821 4.90654 17.684 5.02324C19.3267 5.09326 20.946 5.63006 22.3071 6.47028C21.6031 6.657 20.9695 7.03043 20.4532 7.54389C19.6553 8.33743 19.2329 9.36437 19.2329 10.4847C19.2329 11.605 19.6788 12.6552 20.4532 13.4254L20.5705 13.5421L25.1702 18.1633Z\",\n fill: \"#2988FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5435 12.8421L30.4262 12.9588L25.85 17.5333L25.6388 17.3232L21.2504 12.9821L21.1331 12.8654C19.8658 11.6051 19.8658 9.55123 21.1331 8.2909C21.4851 7.94081 21.9075 7.68408 22.3534 7.5207C22.4003 7.49736 22.4472 7.47402 22.4942 7.47402C22.7992 7.38066 23.1043 7.33398 23.4094 7.33398H23.4329C23.7849 7.33398 24.1604 7.404 24.5124 7.5207C24.7001 7.59072 24.9113 7.68408 25.0991 7.77743C25.1929 7.82411 25.2868 7.89413 25.3807 7.96415C25.5215 8.05751 25.6388 8.1742 25.7562 8.2909L25.8735 8.4076L25.9908 8.2909C26.6245 7.66074 27.4458 7.35732 28.2907 7.35732C29.112 7.35732 29.9569 7.68408 30.5905 8.2909C31.8108 9.52789 31.8108 11.5818 30.5435 12.8421Z\",\n fill: \"#89BEFF\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgInterests, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/interests.df0c36b6.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgSkill = function SvgSkill(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 35,\n height: 35,\n viewBox: \"0 0 35 35\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 35,\n height: 35,\n rx: 4,\n fill: \"#EEFBF4\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.029 21.0484C24.8381 19.9972 26.0639 17.5911 26.5052 15.5354L25.6471 14.7178L22.9994 17.264C22.6071 17.6378 22.0923 17.848 21.5284 17.848C20.9645 17.848 20.4497 17.6378 20.0574 17.264C19.2484 16.4932 19.2484 15.2551 20.0574 14.4842L22.7297 11.9379L21.4058 10.6531C21.3077 10.5596 21.2342 10.4662 21.1852 10.3494C21.0626 10.3027 20.94 10.2326 20.8419 10.1158L19.9839 9.29819C19.6897 9.01786 19.5181 8.6441 19.469 8.27034C19.42 7.82649 19.5671 7.40601 19.8858 7.10232L20.7194 6.30807C20.94 6.12119 21.2342 5.98103 21.5529 5.93431C20.3761 5.42038 19.0768 5.09334 17.7529 5.02326C14.7374 4.90646 12.3349 5.21014 10.3981 6.37815C8.48583 7.54617 7.62777 9.36827 7.33358 10.9334C7.03938 12.4985 6.57358 12.7789 7.03938 13.7834C7.40712 14.601 7.08841 15.4186 6.42648 16.2595C5.76455 17.0772 4.931 18.0816 5.00455 18.6189C5.0781 19.1562 5.76455 19.273 6.00971 19.3665C6.25487 19.4599 6.89229 19.4599 6.32842 20.6513C6.18132 20.9783 5.86261 21.3988 6.74519 21.866C6.27938 22.1463 6.35293 22.2865 6.35293 22.45C6.35293 22.7771 7.01487 22.9406 6.81874 23.7348C6.62261 24.5291 6.57358 25.6737 7.38261 25.8139C8.92712 26.0942 9.83422 25.7905 10.8394 25.8139C11.4523 25.8139 12.0897 26.1643 12.2613 26.6782C12.5065 27.4258 12.6781 28.5471 12.5555 29.5048C12.4574 30.2523 15.3013 30.9999 18.0716 30.9999C21.2342 30.9999 24.029 29.972 23.8329 29.5048C22.9503 27.1922 22.6316 25.4869 22.7297 23.7348C22.7542 22.9873 23.171 22.1697 24.029 21.0484ZM25.7697 10.3494L26.0394 10.6064L25.7697 10.3494ZM23.6613 8.36378C23.6368 8.36378 23.6368 8.38714 23.6613 8.36378V8.36378Z\",\n fill: \"#53D28E\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.416 12.5918L20.7438 15.1381C20.3025 15.5586 20.3025 16.1893 20.7438 16.6098C20.9644 16.82 21.2341 16.9135 21.5038 16.9135C21.7735 16.9135 22.0676 16.82 22.2638 16.6098L24.9115 14.0635L23.416 12.5918ZM21.4547 16.2828C21.2341 16.2828 21.087 16.1192 21.087 15.9324C21.087 15.7455 21.2586 15.582 21.4547 15.582C21.6509 15.582 21.8225 15.7455 21.8225 15.9324C21.8225 16.1192 21.6509 16.2828 21.4547 16.2828ZM30.2315 11.0033C29.7902 11.4472 29.1773 11.6808 28.5889 11.7042L25.8922 9.13452C25.9167 8.55051 26.1618 7.98987 26.6276 7.56938C26.8238 7.3825 27.0444 7.21898 27.2896 7.12554C27.3631 7.10218 27.4122 7.05546 27.4857 7.0321C27.5592 7.00874 27.6328 6.98538 27.7309 6.96202C27.976 6.89194 28.2212 6.86858 28.4663 6.86858C28.7605 6.86858 29.0547 6.9153 29.3489 7.00874L28.0986 8.20011C27.8534 8.43371 27.8534 8.8542 28.0986 9.0878L28.687 9.64845C28.8096 9.76525 28.9812 9.83533 29.1528 9.83533C29.3244 9.83533 29.496 9.76525 29.6186 9.64845L30.8689 8.45707C31.1631 9.29804 30.967 10.3025 30.2315 11.0033ZM23.1954 8.03659L21.6754 9.48493C21.6509 9.50829 21.6264 9.50828 21.6018 9.50828C21.5773 9.50828 21.5283 9.48492 21.5038 9.46156L20.6457 8.64396C20.376 8.38699 20.327 7.98987 20.5476 7.77963L21.4302 6.98538C21.5283 6.89194 21.6509 6.84521 21.798 6.84521C21.9941 6.84521 22.1902 6.9153 22.3373 7.07882L23.1954 7.89643C23.2444 7.94315 23.2444 8.01323 23.1954 8.03659ZM29.6186 14.1336L28.0741 15.6053C28.0496 15.6287 28.0496 15.6287 28.0251 15.6287C28.0005 15.6287 27.9515 15.6053 27.927 15.582L27.7063 15.3717L26.6522 14.3672L26.3334 14.0635L25.647 13.4094L24.1025 11.9378L23.416 11.2837L22.3128 10.2091L22.0922 9.99885C22.0431 9.95213 22.0431 9.88205 22.0676 9.85869L23.5876 8.41035L23.6122 8.38699H23.6367H23.6612C23.6857 8.38699 23.6857 8.38699 23.7102 8.38699C23.7347 8.38699 23.7347 8.41035 23.7593 8.41035L23.9799 8.62059L24.936 9.53165L26.0638 10.6062L27.3386 11.821L28.1967 12.6386L29.398 13.7832L29.6186 13.9935C29.6431 14.0402 29.6431 14.0869 29.6186 14.1336ZM30.9915 16.8668C30.9915 16.8668 30.9915 16.8901 30.967 16.8901C30.9425 16.9135 30.918 16.9135 30.8934 16.9135C30.8689 16.9135 30.8689 16.9135 30.8444 16.9135L28.8341 16.1893L28.5644 16.0959C28.4909 16.0725 28.4418 15.9791 28.4909 15.909L29.9128 14.5541C29.9373 14.5307 29.9618 14.5307 29.9863 14.5307C30.0354 14.5307 30.1089 14.5541 30.1089 14.6242L30.207 14.8811L30.967 16.82C30.9915 16.82 30.9915 16.8434 30.9915 16.8668Z\",\n fill: \"#A0E7C1\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSkill, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/skill.17d98e80.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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 SvgStyles = function SvgStyles(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 35,\n viewBox: \"0 0 36 35\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n width: 35,\n height: 35,\n rx: 4,\n fill: \"#FFF5E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5594 24.071C22.4651 25.7419 22.7717 27.3683 23.621 29.574C23.7861 30.0196 21.1205 30.9999 18.0775 30.9999C15.3883 30.9999 12.6755 30.2869 12.7699 29.574C12.8878 28.6605 12.7227 27.5911 12.4868 26.8782C12.3217 26.4103 11.7084 26.0761 11.1186 26.0539C10.1515 26.0316 9.30225 26.3212 7.79254 26.0539C7.01409 25.9202 7.06127 24.8285 7.24998 24.071C7.4387 23.3135 6.80179 23.1575 6.80179 22.8456C6.80179 22.6674 6.73102 22.5337 7.17922 22.2886C6.33 21.8653 6.63666 21.4643 6.7782 21.1301C7.32075 19.9939 6.70743 19.9939 6.47154 19.9048C6.23564 19.8156 5.57514 19.7042 5.50438 19.1918C5.43361 18.6794 6.23564 17.7437 6.87255 16.9193C7.50947 16.1173 7.81613 15.3375 7.46229 14.5577C7.01409 13.5997 7.46229 13.3323 7.74536 11.8396C8.02843 10.3469 8.85405 8.60911 10.694 7.49515C12.2509 6.55941 14.1381 6.20294 16.4026 6.18066C16.4026 6.31434 16.4262 6.4703 16.497 6.60397L16.5206 6.64853L16.5678 6.69309L16.7565 6.91588L16.4262 6.96044L16.3083 6.98272L16.2139 7.02728C15.9073 7.16096 15.7185 7.45059 15.7185 7.74022V8.56456C15.7185 8.96558 16.0252 9.29977 16.4262 9.34433L16.7329 9.41117L16.5678 9.63396C16.4498 9.76764 16.379 9.94588 16.379 10.1241C16.379 10.3246 16.4734 10.5251 16.6149 10.6811L17.1811 11.2158C17.3462 11.3718 17.5585 11.4386 17.7708 11.4386C17.9123 11.4386 18.0303 11.4163 18.1482 11.3495L18.1954 11.3272L18.2426 11.3049L18.5021 11.1267L18.5493 11.394C18.5728 11.55 18.62 11.6837 18.7144 11.7951C18.4549 11.9733 18.2898 12.2407 18.2898 12.5303V13.9116C18.2898 14.3572 18.6436 14.7359 19.0682 14.7805L20.2477 15.0033C20.2949 15.1147 20.342 15.2038 20.3892 15.2929L19.7051 16.1841C19.5636 16.3401 19.4692 16.5406 19.4692 16.7411C19.4692 16.9639 19.5636 17.1867 19.7523 17.3649L20.8138 18.3675C21.0025 18.5457 21.2384 18.6348 21.4979 18.6348C21.663 18.6348 21.8046 18.5903 21.9461 18.5457L21.9933 18.5234L22.0405 18.5012L23.0548 17.8328C23.1492 17.8773 23.2435 17.8996 23.3379 17.9442L23.5502 19.0359C23.5974 19.4814 23.9748 19.8379 24.4702 19.8379H24.8476C24.4702 20.5731 24.0927 21.1747 23.7625 21.598C23.0076 22.6006 22.6066 23.3803 22.5594 24.071Z\",\n fill: \"#FF9800\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.3114 12.3076L29.6838 12.0626C29.5423 11.7284 29.4243 11.4387 29.2592 11.1491L30.2263 9.8569C30.3207 9.76778 30.2735 9.65639 30.2263 9.56727L29.1412 8.5647L29.1176 8.54242C29.0941 8.52014 29.0705 8.52014 29.0469 8.52014H29.0233H28.9997H28.9761C28.9761 8.52014 28.9525 8.52014 28.9289 8.52014C28.9053 8.52014 28.8818 8.52014 28.8582 8.54242L27.49 9.50043C27.1833 9.34447 26.8295 9.16624 26.4756 9.0994L26.2162 7.56213C26.169 7.42845 26.0746 7.40617 26.0039 7.40617H24.5177C24.3762 7.40617 24.3054 7.45073 24.3054 7.56213L24.0695 8.92117L24.0459 9.0994C23.9044 9.12168 23.7629 9.16624 23.6213 9.23308C23.5034 9.27764 23.3854 9.3222 23.2675 9.36675C23.2675 9.36675 23.2675 9.36675 23.2439 9.36675L22.9373 9.41131H22.9137L23.0788 9.63411C23.1967 9.76778 23.2675 9.94602 23.2675 10.1243C23.2675 10.3248 23.1731 10.5253 23.0316 10.6812L22.4655 11.2159C22.3003 11.3719 22.088 11.4387 21.8757 11.4387C21.7342 11.4387 21.6162 11.4165 21.4983 11.3496L21.4511 11.3273L21.4039 11.3051L21.2388 11.1937C21.0737 11.4833 20.9322 11.7506 20.8378 12.0403L19.2101 12.2853C19.1158 12.3299 19.045 12.419 19.045 12.4859V13.9117C19.045 14.0231 19.1394 14.1123 19.2101 14.1123L20.8378 14.4019C20.9322 14.7361 21.0973 15.0257 21.286 15.3599L20.3188 16.6075C20.2245 16.6967 20.2245 16.8081 20.3188 16.8972L21.3804 17.8997C21.4275 17.9443 21.4983 17.9666 21.5691 17.9666C21.6163 17.9666 21.6634 17.9666 21.687 17.9443L23.0552 17.0309C23.3619 17.1868 23.7157 17.3205 24.0224 17.4096L24.329 18.9469C24.329 19.0583 24.4234 19.1474 24.5413 19.1474H26.0274C26.1218 19.1474 26.2162 19.0583 26.2398 18.9914L26.5464 17.4096C26.9003 17.3205 27.2069 17.2091 27.5136 17.0309L28.8818 17.9443C28.9289 17.9666 28.9525 17.9666 28.9997 17.9666C29.0705 17.9666 29.1176 17.9443 29.1884 17.8997L30.2499 16.8972C30.3443 16.8081 30.3443 16.6967 30.2499 16.6075L29.2828 15.3599C29.4479 15.0703 29.5894 14.7361 29.7074 14.4019L31.335 14.1123C31.4294 14.1123 31.5002 14.0231 31.5002 13.9117V12.5081C31.5002 12.419 31.4058 12.3522 31.3114 12.3076ZM26.2633 15.9614C25.9567 16.0728 25.6264 16.1174 25.2726 16.1174C23.5977 16.1174 22.2532 14.8252 22.2532 13.2656C22.2532 11.7061 23.5742 10.4139 25.2018 10.3693C25.2254 10.3693 25.249 10.3693 25.2726 10.3693C26.9238 10.3693 28.292 11.6615 28.292 13.2656C28.292 14.491 27.4428 15.5604 26.2633 15.9614ZM26.8531 13.2656C26.8531 13.3102 26.8531 13.3325 26.8531 13.377C26.8531 13.3993 26.8531 13.3993 26.8531 13.4216V13.4439C26.8531 13.4662 26.8531 13.5107 26.8295 13.533C26.8295 13.5553 26.8295 13.5553 26.8295 13.5776V13.5998C26.8295 13.6444 26.8059 13.6889 26.7823 13.7335V13.7558C26.7823 13.7781 26.7587 13.8003 26.7587 13.8226C26.7587 13.8449 26.7351 13.8672 26.7351 13.8895C26.7115 13.934 26.6879 13.9786 26.6644 14.0231C26.6644 14.0231 26.6644 14.0231 26.6644 14.0454C26.6408 14.09 26.6172 14.1123 26.5936 14.1345C26.5936 14.1345 26.5936 14.1345 26.5936 14.1568C26.5936 14.1568 26.5936 14.1568 26.5936 14.1791C26.57 14.2014 26.57 14.2237 26.5464 14.2237C26.5228 14.2459 26.5228 14.2459 26.4992 14.2682C26.4992 14.2682 26.4992 14.2682 26.4756 14.2905C26.4521 14.3351 26.4049 14.3573 26.3813 14.3796C26.3577 14.4019 26.3105 14.4242 26.2869 14.4464L26.2633 14.4687C26.2398 14.491 26.2162 14.5133 26.1926 14.5133C26.1454 14.5356 26.1218 14.5578 26.0746 14.5801C26.051 14.6024 26.0274 14.6024 26.0039 14.6247C25.9803 14.6247 25.9567 14.647 25.9331 14.647C25.8859 14.6692 25.8623 14.6692 25.8151 14.6915C25.7916 14.6915 25.7444 14.7138 25.7208 14.7138C25.6972 14.7138 25.6736 14.7138 25.65 14.7361C25.5557 14.7584 25.4613 14.7584 25.3434 14.7584C24.4706 14.7584 23.7629 14.09 23.7629 13.2656C23.7629 12.4413 24.4706 11.7729 25.3434 11.7729C25.3905 11.7729 25.4377 11.7729 25.4613 11.7729C25.5085 11.7729 25.5557 11.7729 25.6028 11.7952C25.6264 11.7952 25.65 11.7952 25.6736 11.7952C25.7208 11.7952 25.7444 11.8175 25.7916 11.8175C25.8387 11.8175 25.8623 11.8398 25.9095 11.862C25.9331 11.862 25.9567 11.8843 25.9803 11.9066C26.0274 11.9289 26.051 11.9289 26.0746 11.9512C26.0982 11.9734 26.1218 11.9734 26.1454 11.9957C26.1454 11.9957 26.169 11.9957 26.169 12.018C26.1926 12.0403 26.2162 12.0403 26.2398 12.0626C26.2633 12.0848 26.2869 12.0848 26.3105 12.1071C26.3577 12.1294 26.3813 12.174 26.4049 12.1962C26.4285 12.2408 26.4756 12.2631 26.4992 12.3076C26.5228 12.3522 26.57 12.3745 26.5936 12.419C26.6172 12.4413 26.6172 12.4413 26.6172 12.4636C26.6408 12.4859 26.6408 12.4859 26.6408 12.5081C26.6644 12.5304 26.6879 12.575 26.6879 12.5973C26.7115 12.6195 26.7115 12.6641 26.7351 12.6864C26.7587 12.7309 26.7587 12.7755 26.7823 12.7978C26.7823 12.8423 26.8059 12.8646 26.8059 12.9092C26.8059 12.9315 26.8295 12.976 26.8295 12.9983V13.0206C26.8295 13.0428 26.8295 13.0651 26.8295 13.0874C26.8531 13.1765 26.8531 13.2211 26.8531 13.2656ZM23.1731 7.6958L22.2768 7.56213C22.206 7.38389 22.1352 7.22794 22.0409 7.07198L22.5598 6.38132C22.607 6.33676 22.5834 6.26992 22.5598 6.22536L21.9701 5.69066C21.9465 5.66838 21.9229 5.6461 21.8993 5.6461C21.8757 5.6461 21.8521 5.6461 21.8286 5.66838L21.0973 6.18081C20.9322 6.09169 20.7434 6.00257 20.5547 5.95801L20.3896 5.08912C20.366 5.02228 20.3188 5 20.2717 5H19.446C19.3753 5 19.3281 5.02228 19.3281 5.08912L19.1866 5.93573C18.9978 5.98029 18.8091 6.04713 18.644 6.13625L17.9127 5.6461C17.8891 5.6461 17.8656 5.62382 17.842 5.62382C17.8184 5.62382 17.7948 5.62382 17.7476 5.66838L17.1815 6.20309C17.1579 6.22536 17.1579 6.22536 17.1579 6.24764C17.1343 6.2922 17.1579 6.33676 17.1579 6.35904L17.6768 7.02742C17.5825 7.20566 17.4881 7.36161 17.4409 7.53985L16.5446 7.67352C16.4974 7.6958 16.4502 7.74036 16.4502 7.78492V8.5647C16.4502 8.63154 16.4974 8.67609 16.5446 8.67609L17.4409 8.83205C17.4881 9.01028 17.5825 9.16624 17.6768 9.34447L17.1579 10.0129C17.1107 10.0574 17.1107 10.1243 17.1579 10.1688L17.724 10.7035C17.724 10.7035 17.7476 10.7258 17.7712 10.7258C17.7948 10.7258 17.8184 10.7258 17.8184 10.7258C17.8184 10.7258 17.842 10.7258 17.8656 10.7258H17.8891L18.6204 10.2356C18.7855 10.3248 18.9742 10.3916 19.1394 10.4362L19.3045 11.2828C19.3045 11.3496 19.3517 11.3942 19.4224 11.3942H20.2481C20.2952 11.3942 20.3424 11.3496 20.366 11.3051L20.4132 11.0823L20.5311 10.4362C20.6019 10.4139 20.6727 10.3916 20.7434 10.3693C20.8614 10.3248 20.9557 10.2802 21.0737 10.2356L21.805 10.7258H21.8286C21.8521 10.7258 21.8521 10.7258 21.8757 10.7258H21.8993C21.9229 10.7258 21.9465 10.7035 21.9465 10.7035L22.5126 10.1688C22.5598 10.1243 22.5598 10.0574 22.5126 10.0129L21.9937 9.34447C22.0644 9.2108 22.1352 9.05484 22.206 8.89889C22.206 8.87661 22.2296 8.85433 22.2296 8.83205L23.126 8.67609C23.1496 8.67609 23.1967 8.65381 23.2203 8.60926C23.2203 8.58698 23.2439 8.5647 23.2439 8.54242V7.76264C23.2675 7.76264 23.2203 7.71808 23.1731 7.6958ZM21.4747 8.5647C21.3332 9.12168 20.885 9.56727 20.3188 9.72322C20.1773 9.76778 20.0122 9.79006 19.8706 9.79006C19.7763 9.79006 19.7055 9.79006 19.6112 9.76778C18.8327 9.65639 18.2194 9.01028 18.2194 8.23051C18.2194 7.36161 18.9507 6.64867 19.8706 6.64867C19.965 6.64867 20.0358 6.64867 20.1065 6.67095C20.2952 6.69323 20.484 6.76007 20.6491 6.84919C21.0501 7.07198 21.3568 7.42845 21.4747 7.89632C21.4983 8.00771 21.5219 8.11911 21.5219 8.25279C21.5219 8.31962 21.4983 8.4533 21.4747 8.5647ZM20.7199 8.20823C20.7199 8.25279 20.7199 8.27507 20.7199 8.31962C20.7199 8.3419 20.7199 8.36418 20.6963 8.38646C20.6963 8.40874 20.6963 8.43102 20.6727 8.4533C20.6491 8.49786 20.6255 8.5647 20.6019 8.60926C20.5783 8.63154 20.5783 8.65381 20.5547 8.67609C20.5311 8.72065 20.484 8.76521 20.4604 8.78749C20.4368 8.80977 20.366 8.85433 20.3424 8.87661C20.3188 8.89889 20.2952 8.89889 20.2717 8.92117C20.2245 8.94345 20.1537 8.96573 20.1065 8.988C20.0829 8.988 20.0594 9.01028 20.0358 9.01028C20.0122 9.01028 19.9886 9.01028 19.965 9.01028C19.9178 9.01028 19.8942 9.01028 19.8471 9.01028C19.3753 9.01028 18.9742 8.65381 18.9742 8.18595C18.9742 7.74036 19.3517 7.36161 19.8471 7.36161C20.3424 7.40617 20.7199 7.76264 20.7199 8.20823Z\",\n fill: \"#FFC773\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgStyles, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/styles.af8a28f7.svg\";\nexport { ForwardRef as ReactComponent };","import { withStyles, Grid, Typography, Box } from \"@material-ui/core\";\nimport { ResponsivePie } from \"@nivo/pie\";\nimport React from \"react\";\nimport _ from \"lodash\";\n\nconst styles = (theme) => ({\n pieContainer: {\n height: 220,\n position: \"relative\",\n minWidth: 280,\n maxWidth: 450,\n zIndex: 1\n },\n secondPie: {\n position: \"absolute\",\n top: 0,\n zIndex: -1,\n height: \"100%\",\n width: \"100%\",\n },\n legend: {\n fontSize: 11,\n color: \"#5A6375\",\n textAlign: \"center\",\n marginTop: 20\n },\n bodyParagraph: {\n marginTop: 15,\n // marginLeft: 10,\n marginBottom: 15\n },\n m : {\n marginRight: 30\n },\n alignCenter: {\n textAlign: \"center\"\n },\n marginTop15: {\n marginTop: 15\n },\n overflow: {\n overflowY: 'auto',\n height: \"100%\"\n }\n});\n\nfunction mapToCandidate(graphData) {\n\n const interestsdata = graphData || [];\n\n var newdata = [];\n var sum = 0;\n\n interestsdata.forEach((item) => {\n sum += item.value;\n });\n\n interestsdata.forEach((item) => {\n newdata.push({\n id: item.id,\n label: item.label,\n value: parseFloat(((item.value / sum) * 100).toFixed(2)),\n });\n });\n\n return newdata;\n}\n\n// function mapDispatchToProps(dispatch) {\n// return {\n// ...bindActionCreators({}, dispatch),\n// dispatch,\n// };\n// }\n\nexport const InterestsPie = (\n withStyles(styles)((props) => {\n\n let selectedJob = props.job;\n let classes = props.classes;\n let [difference, setDifference] = React.useState(\"Please click outer circle\");\n let [yourValue, setYourValue] = React.useState(\"Please click outer circle\");\n let [jobValue, setJobValue] = React.useState(\"Please click outer circle\");\n let [textColor, setTextColor] = React.useState(\"#000000\");\n let candidateInterestsData = [];\n const {\n interests: {\n interestsOriginal: {\n creator,\n investigator,\n driver,\n crafter,\n doer,\n facilitator,\n } = {},\n } = {},\n } = props.candidate.latestAssessmentResult || {};\n const profileInterestsGraphData = [\n {\n id: \"Doer\",\n label: \"Doer\",\n value: doer,\n },\n {\n id: \"Driver\",\n label: \"Driver\",\n value: driver,\n },\n {\n id: \"Investigator\",\n label: \"Investigator\",\n value: investigator,\n },\n {\n id: \"Facilitator\",\n label: \"Facilitator\",\n value: facilitator,\n },\n {\n id: \"Crafter\",\n label: \"Crafter\",\n value: crafter,\n },\n {\n id: \"Creator\",\n label: \"Creator\",\n value: creator,\n },\n ];\n\n candidateInterestsData = mapToCandidate(profileInterestsGraphData);\n const jobInterests = candidateInterestsData.map((key) => {\n if (key.id && selectedJob && selectedJob[key.id.toLowerCase()] !== undefined){\n return {\n id: key.id,\n label: key.id,\n value: selectedJob[key.id.toLowerCase()],\n }\n } else {\n return {\n id: key.id,\n label: key.id,\n value: 0\n }\n }\n });\n var newdata = [];\n var sum = 0;\n\n const dataToPress = (e) => {\n let candidateData;\n _.each(candidateInterestsData, (d) => {\n if (d.id === e.id){\n candidateData = d;\n }\n });\n\n difference = (candidateData.value - e.value);\n let differenceNumber = difference;\n difference = difference.toFixed(1) + \"%\";\n setDifference(difference);\n setYourValue(`${candidateData.id} : ${candidateData.value}%`)\n setJobValue(`${e.id} : ${e.value}%`)\n\n if (differenceNumber < 0){\n setTextColor(\"#E16618\")\n } else {\n setTextColor(\"#87D190\")\n }\n\n };\n\n const loadpieChart = () => {\n return <Grid container className={classes.overflow} >\n <Grid item xs={12} sm={12} md={12}>\n <div className={classes.pieContainer}>\n <ResponsivePie\n margin={{ top: 20, right: 100, bottom: 10, left: 10 }}\n //pixelRatio={1.5}\n slicesLabelsTextColor=\"#ffffff\"\n enableSlicesLabels={true}\n innerRadius={0.70}\n data={newdata}\n onClick={dataToPress}\n isInteractive={false}\n slicesLabelsSkipAngle={10}\n colors={[\n \"#948BFF\",\n \"#34CFFF\",\n \"#FFB61C\",\n \"#FF5255\",\n \"#53D28E\",\n \"#D89E22\",\n ]}\n enableRadialLabels={false}\n legends={[\n {\n anchor: \"right\",\n direction: \"column\",\n translateX: 110,\n itemWidth: 100,\n itemHeight: 18,\n // itemTextColor: \"#999\",\n symbolSize: 10,\n symbolShape: \"square\",\n itemTextColor: \"#5A6375\",\n },\n ]}\n theme={{\n legends: {\n text: {\n fontFamily: \"Roboto\",\n },\n },\n }}\n />\n <div className={classes.secondPie}>\n <ResponsivePie\n className={classes.secondPie}\n slicesLabelsTextColor=\"#ffffff\"\n slicesLabelsSkipAngle={10}\n colors={[\n \"#948BFF\",\n \"#34CFFF\",\n \"#FFB61C\",\n \"#FF5255\",\n \"#53D28E\",\n \"#D89E22\",\n ]}\n enableSlicesLabels={true}\n margin={{ top: 60, right: 90, bottom: 50, left: 0 }}\n isInteractive={false}\n onClick={dataToPress}\n innerRadius={0.6}\n data={candidateInterestsData}\n enableRadialLabels={false}\n />\n </div>\n </div>\n <Typography variant=\"body2\" className={classes.legend}>\n Outer circle: <strong className={classes.m}>Job</strong>\n Inner Circle: <strong>You</strong>\n </Typography>\n </Grid>\n <Grid item sm={1}> </Grid>\n {/* <Grid item xs={12} sm={12} md={3}>\n <Box display={{ xs: 'none', sm:'none', md: 'block' }}>\n <Typography className=\"\"> Your Profile </Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {yourValue} </Typography>\n <Typography> Job Requirement</Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {jobValue} </Typography>\n <Typography> Interest Gap </Typography>\n <Typography variant=\"body2\" style={{\"color\": textColor}} className={classes.bodyParagraph}> {difference} </Typography>\n </Box>\n </Grid> */}\n <Grid item xs={12} sm={12} md={12}>\n <Box className={classes.alignCenter}>\n <Typography className={classes.marginTop15}> Your Profile </Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {yourValue} </Typography>\n <Typography> Job Requirement</Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {jobValue} </Typography>\n <Typography> Interest Gap </Typography>\n <Typography variant=\"body2\" style={{\"color\": textColor}} className={classes.bodyParagraph}> {difference} </Typography>\n </Box>\n </Grid>\n <Grid container justify=\"center\" spacing={4}>\n <Grid style={{height: 100}} item xs={12}></Grid>\n </Grid>\n </Grid>\n }\n \n jobInterests.forEach((item) => {\n if (item.value) {\n sum += parseInt(item.value);\n }\n });\n\n jobInterests.forEach((item) => {\n if (item.value) {\n newdata.push({\n id: item.id,\n label: item.label,\n value: parseFloat(((parseInt(item.value) / sum) * 100).toFixed(1)),\n });\n } else {\n newdata.push({\n id: item.id,\n label: item.label,\n value: 0,\n });\n }\n });\n\n let dataToRender = <> </>;\n if (newdata.length > 0) {\n dataToRender = loadpieChart();\n }\n return dataToRender;\n \n })\n);\n","import React, { Component } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst styles = (theme) => ({\n skilllinecont: {\n height: 23,\n borderRadius: 4,\n backgroundColor: \"#ffffff\",\n border: \"1px solid #EDEFF2\",\n marginTop: 0,\n marginBottom: 4,\n paddingLeft: 0,\n paddingRight: 5,\n overflow: \"hidden\",\n },\n skilllinecontgrow: {\n minHeight: 23,\n borderRadius: 4,\n backgroundColor: \"#ffffff\",\n border: \"1px solid #EDEFF2\",\n marginTop: 0,\n marginBottom: 4,\n paddingLeft: 0,\n paddingRight: 5,\n overflow: \"visible\",\n },\n line: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n paddingRight: 10,\n paddingLeft: 10,\n fontSize: 10,\n color: \"#202A3E\",\n lineHeight: \"23px\",\n\n \"&::first-letter\": {\n textTransform: \"capitalize\",\n },\n // maxWidth: \"100%\"\n },\n description: {\n color: \"#B4B8BF\",\n fontSize: 9,\n marginTop: 9,\n paddingRight: 10,\n paddingLeft: 10,\n lineHeight: \"12px\",\n whiteSpace: \"normal\",\n marginBottom: 10,\n },\n\n points: {\n width: 45,\n marginLeft: 7,\n },\n arrow: {\n width: 15,\n paddingRight: 0,\n cursor: \"pointer\",\n color: \"#cccccc\"\n },\n point: {\n backgroundColor: \"#DDE0E5\",\n width: 6,\n height: 6,\n borderRadius: 6,\n display: \"inline-block\",\n marginLeft: 3,\n },\n pointselected: {\n backgroundColor: \"#53D28E\",\n width: 6,\n height: 6,\n borderRadius: 6,\n display: \"inline-block\",\n marginLeft: 3,\n },\n descHide: {\n display: \"none\",\n },\n descShow: {\n minHeight: 20,\n width: \"100%\",\n },\n rotated: {\n transform: \"rotate(180deg)\",\n },\n});\n\nclass SkillLine extends Component {\n state = {\n showMore: false,\n };\n\n handleOpen = () => {\n this.setState({\n showMore: !this.state.showMore,\n });\n };\n\n render() {\n const {\n skill: { level = 0, name = \"\", description = \"No description.\" },\n classes,\n onClick\n } = this.props;\n\n const { showMore } = this.state;\n\n return (\n <Grid\n style={{cursor: \"pointer\"}}\n onClick={onClick}\n container\n direction=\"column\"\n className={showMore ? classes.skilllinecontgrow : classes.skilllinecont}\n >\n <Grid item>\n <Grid\n container\n direction=\"row\"\n justify=\"space-between\"\n alignItems=\"flex-start\"\n >\n <Grid item className={classes.points}>\n <div\n className={level >= 1 ? classes.pointselected : classes.point}\n >\n {\" \"}\n </div>\n <div\n className={level >= 2 ? classes.pointselected : classes.point}\n >\n {\" \"}\n </div>\n <div\n className={level >= 3 ? classes.pointselected : classes.point}\n >\n {\" \"}\n </div>\n <div\n className={level >= 4 ? classes.pointselected : classes.point}\n >\n {\" \"}\n </div>\n </Grid>\n <Grid item xs zeroMinWidth>\n <Typography variant=\"body2\" className={classes.line} noWrap>\n {name}\n </Typography>\n </Grid>\n {/*\n \n */}\n{/* \n <Grid item className={classes.arrow}>\n {<PlayCircleFilledIcon style={{width: \"0.5em\"}} className={showMore ? classes.rotated : null} />}\n </Grid> */}\n \n </Grid>\n </Grid>\n <Grid item className={showMore ? classes.descShow : classes.descHide}>\n <Typography variant=\"body2\" className={classes.description}>\n {description}\n </Typography>\n </Grid>\n </Grid>\n );\n }\n}\n\nexport default withStyles(styles)(SkillLine);\n","import {\n Grid,\n makeStyles,\n Typography,\n Slider\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport _ from \"lodash\";\nimport SkillLine from \"./SkillLine\";\n\nconst styles = makeStyles((theme) => ({\n left20: {\n marginLeft: 20\n },\n relativeContainer: {\n marginTop:0,\n marginBottom:35\n },\n expertContainer: {\n textAlign: \"right\",\n },\n skillsContainer: {\n height: \"100%\",\n overflowY: \"scroll\",\n overflowX: \"hidden\",\n marginLeft: 5,\n paddingRight: 15\n },\n coloredText: {\n color: \"#5A6375\",\n fontSize: 10,\n },\n MatchSkillContainer: {\n marginTop: 15,\n marginBottom: 15\n },\n absoluteContainer: {\n position: \"absolute\",\n height: 20,\n borderRadius: 20,\n left: 25\n },\n absoluteContainerSlider: {\n position: \"absolute\"\n },\n relative: {\n position: \"relative\"\n },\n zIndex: {\n zIndex: 10\n },\n matchingKey: {\n backgroundColor: \"#53D28E\",\n width: 15,\n height: 15,\n borderRadius: 20,\n marginLeft: 35 \n },\n missingKey: {\n backgroundColor: \"#E06923\",\n width: 15,\n height: 15,\n borderRadius: 20,\n marginLeft: 30\n },\n hoverState: {\n backgroundColor: \"#0000008c\",\n color: \"#ffffff\",\n padding: 10,\n position: \"absolute\",\n borderRadius: 10\n },\n height50: {\n height: 75\n },\n center: {\n textAlign: \"center\"\n },\n marginTop30: {\n marginTop: 30,\n marginLeft: 25\n }\n}));\n\n\n\nexport const SkillsList = (props) => {\n const classes = styles();\n let similar_skills = props.job.similar_skills;\n let missing_skills = props.job.missing_skills;\n let occupationSkills = props.candidate.occupationSkills;\n let matchedSkills = [];\n let matchedSkillsObj = {};\n _.each(similar_skills, (skill) => {\n _.each(occupationSkills, (occskill) => {\n _.each(occskill.skills, (_skill) => {\n // will stop duplicates being added.\n if (skill === _skill.name && !matchedSkillsObj[_skill.name]){\n let skillLevel;\n let color;\n switch(_skill.level){\n case 0:\n skillLevel = \"Beginner\";\n color = \"#22c8f9\";\n break;\n case 1:\n skillLevel = \"Beginner\";\n color = \"#22c8f9\";\n break;\n case 2:\n skillLevel = \"Familiar\";\n color = \"#49cdda\";\n break;\n case 3:\n skillLevel = \"Proficient\";\n color = \"#66b19c\";\n break;\n case 4:\n skillLevel = \"Expert\";\n color = \"#4E847B\";\n break;\n default:\n skillLevel = \"Expert\";\n color = \"#4E847B\";\n break\n }\n _skill.skillLevel = skillLevel;\n _skill.color = color;\n matchedSkills.push(_skill);\n matchedSkillsObj[_skill.name] = true;\n }\n });\n });\n });\n\n matchedSkills = _.orderBy(matchedSkills, \"level\", \"asc\");\n const Hover = ({ onHover, children}) => {\n let [onHovering, onHoveringSet] = React.useState(false);\n return <div className=\"hover\">\n <div onMouseEnter={() => {\n onHoveringSet(true);\n }} onMouseLeave={() => {\n onHoveringSet(false);\n }} >{children}</div>\n {onHovering && (\n <div className=\"hover__hover\">{onHover}</div>\n )}\n </div>\n };\n\n /*eslint-disable*/\n const [value, setValue] = React.useState(props.job.score_bp);\n let jobDifference = \"\";\n let jobQualification = \"unknown\";\n /*eslint-enable*/\n const skills = () => {\n return <> \n {similar_skills.length > 0 && (\n <>\n <Grid container className={classes.MatchSkillContainer}>\n <Grid item xs={12}>\n <Typography variant=\"body1\"> Matching Skills </Typography>\n </Grid>\n </Grid>\n <div> \n {matchedSkills.map((skill,index) => (\n <div style={{display:\"block\", width:\"fit-content\", marginBottom: 10}} key={`skill-list-${index}`} >\n <Hover onHover={<div className={classes.relative}> <div className={classes.hoverState}>{skill.skillLevel}</div> </div>}>\n <SkillLine skill={skill}/>\n </Hover>\n </div>\n ))}\n </div>\n </>\n )}\n {missing_skills.length > 0 && (\n <>\n <Grid container className={classes.MatchSkillContainer}>\n <Grid item xs={12}>\n <Typography variant=\"body1\"> Missing Skills </Typography>\n </Grid>\n </Grid>\n <div> \n {missing_skills.map((skill, index) => (\n <div style={{display:\"block\", width:\"fit-content\", marginBottom: 10}} key={`skill-list-missing-${index}`} >\n <SkillLine skill={{name: skill, level: 0}} />\n </div>\n ))}\n </div>\n </>\n )}\n </>\n }\n \n let category = 0;\n if (props.candidate && props.candidate.qualifications ){\n category = props.candidate.qualifications.category;\n jobQualification = props.candidate.qualifications.name;\n if (jobQualification === \"\" || !jobQualification) {\n jobQualification = \"no qualifications\"\n }\n if (!category || category === \"\"){\n category = 0;\n }\n }\n\n let jobscore = 1; let isQual = false;\n if (props.job && props.job.ONET_required_level_education){\n jobscore = props.job.ONET_required_level_education;\n }\n\n if (props.job && props.job.isQual){\n isQual = true;\n }\n\n if (parseInt(category) > parseInt(jobscore)) { \n jobDifference = <><b>lower</b> than </>\n } else if (parseInt(category) === parseInt(jobscore)){\n jobDifference = <><b>similar</b> to </>;\n } else if (parseInt(category) < parseInt(jobscore)) {\n jobDifference = <><b>higher</b> than </>\n }\n /*eslint-disable*/\n const [qualificationValue, setQualificationValue] = React.useState([parseInt(category), parseInt(jobscore)]);\n /*eslint-enable*/\n return <div className={classes.skillsContainer}>\n <Grid container alignItems=\"center\" className={classes.relativeContainer}>\n <Grid item xs={11} className={classes.relative}>\n <LinearProgress style={{width: value+\"%\",backgroundColor: \"#53D28E\"}} className={`${classes.absoluteContainer} ${classes.zIndex}`}\n value={100}\n variant=\"determinate\"\n color=\"#53D28E\"\n aria-labelledby=\"discrete-slider-always\"\n />\n <LinearProgress style={{width: \"100%\"}} className={classes.absoluteContainer}\n value={100}\n variant=\"determinate\"\n color=\"primary\"\n aria-labelledby=\"discrete-slider-always\"\n />\n </Grid>\n </Grid>\n <Grid container justify=\"center\" spacing={4}> \n <Grid item> <Typography variant=\"caption\"> Matching skills <div className={classes.matchingKey}></div></Typography></Grid>\n <Grid item> <Typography variant=\"caption\"> Missing skills <div className={classes.missingKey}></div></Typography></Grid>\n </Grid>\n {skills()}\n {isQual === false && (\n <>\n <Grid item xs={11} className={classes.relative} style={{marginTop: 75, marginBottom: 0, marginLeft: 25}}>\n <Slider\n className={classes.absoluteContainerSlider}\n value={parseInt(category)}\n min={0}\n max={11}\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value, index) => {\n if (qualificationValue[0] === qualificationValue[1]){\n return \"\\u2713\";\n } else {\n return \"YOU\"\n }\n }}\n />\n <Slider\n className={classes.absoluteContainerSlider}\n value={parseInt(jobscore)}\n min={0}\n max={11}\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value, index) => {\n if (qualificationValue[0] === qualificationValue[1]){\n return \"\\u2713\";\n } else {\n if (isQual){\n return \"QUAL\";\n } else {\n return \"JOB\";\n }\n }\n }}\n />\n </Grid>\n <Grid container>\n <Grid className={`${classes.center} ${classes.marginTop30}`} item xs={11}> <Typography variant=\"caption\"> On average the qualification required for this job is {jobDifference} <b>{jobQualification}</b> </Typography></Grid>\n </Grid>\n </>)}\n <Grid container justify=\"center\" spacing={4}>\n <Grid style={{height: 100}} item xs={12}></Grid>\n </Grid>\n </div>\n };\n","import { withStyles , Grid, Typography, Box } from \"@material-ui/core\";\nimport React from \"react\";\nimport { Radar, RadarChart,Tooltip, PolarGrid, PolarAngleAxis, PolarRadiusAxis } from 'recharts';\nimport _ from \"lodash\";\nimport { withRouter } from \"react-router-dom\";\n\n\nconst styles = (theme) => ({ \n bodyParagraph: {\n marginTop: 15,\n // marginLeft: 10,\n marginBottom: 15\n },\n underline: {\n textDecoration: \"underline\",\n cursor: \"pointer\"\n },\n m : {\n marginRight: 30\n },\n alignCenter: {\n textAlign: \"center\"\n },\n marginTop15: {\n marginTop: 15\n },\n overflow: {\n overflowY: 'auto',\n overflowX: 'hidden',\n height: \"100%\"\n },\n radarContainer: {\n height: 220,\n position: \"relative\",\n minWidth: 280,\n maxWidth: 450,\n left: \"20%\",\n zIndex: 1\n }\n});\n\n\nexport const StylesRadar = withRouter(withStyles(styles)(({ classes, data, history}) => { \n \n let [difference, setDifference] = React.useState(\"Please click chart\");\n let [yourValue, setYourValue] = React.useState(\"Please click chart\");\n let [jobValue, setJobValue] = React.useState(\"Please click chart\");\n // let [missionValue, setMissionValue] = React.useState(\"\");\n // let [missionDescription, setMissionDescription] = React.useState(\"\");\n let [textColor, setTextColor] = React.useState(\"#000000\");\n\n const clickEvent = (e) => {\n let selected = false;\n if (e && e.activeLabel){\n _.each(data, (d) => {\n if (d.label === e.activeLabel){\n selected = d;\n }\n });\n if (selected){\n difference = (selected.You - selected.Vacancy);\n let differenceNumber = difference;\n difference = difference.toFixed(1) + \"%\";\n setDifference(difference);\n setYourValue(`${selected.label} : ${selected.You}%`)\n setJobValue(`${selected.label} : ${selected.Vacancy}%`)\n\n if (differenceNumber < 0){\n // setMissionDescription(`Click here for ${selected.label} Missions`)\n // setMissionValue(selected.label);\n setTextColor(\"#E16618\")\n } else {\n // setMissionDescription(``)\n // setMissionValue(\"\");\n setTextColor(\"#87D190\")\n }\n\n }\n }\n }\n\n\n return (\n <Grid container className={classes.overflow}>\n <Grid item xs={12} sm={12} md={12}>\n <div className={classes.radarContainer}>\n <RadarChart onClick={clickEvent} cx={150} cy={100} outerRadius={75} width={350} height={200} data={data}>\n <PolarGrid />\n <PolarAngleAxis dataKey=\"label\" style={{\n fontSize: '10px',\n fontFamily: 'Roboto'\n }}/>\n <PolarRadiusAxis angle={90} domain={[0, 100]} />\n <Radar name=\"You\" dataKey=\"You\" stroke=\"#000000\" fill=\"#DDE0E5\" fillOpacity={1.0} />\n <Radar name=\"Vacancy\" dataKey=\"Vacancy\" stroke=\"#000000\" fill=\"#FF9800\" fillOpacity={0.4} />\n <Tooltip />\n </RadarChart>\n </div>\n </Grid>\n {/* <Grid item xs={12} sm={12} md={4}>\n <Box display={{ xs: 'none', sm:'none', md: 'block' }}>\n <Typography className=\"\"> Your Profile </Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {yourValue} </Typography>\n <Typography> Job Requirement</Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {jobValue} </Typography>\n <Typography> Styles Gap </Typography>\n <Typography variant=\"body2\" style={{\"color\": textColor}} className={classes.bodyParagraph}> {difference} </Typography>\n </Box>\n </Grid> */}\n <Grid item xs={12} sm={12} md={12}>\n <Box className={classes.alignCenter}>\n <Typography className={classes.marginTop15}> Your Profile </Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {yourValue} </Typography>\n <Typography> Job Requirement</Typography>\n <Typography variant=\"body2\" className={classes.bodyParagraph}> {jobValue} </Typography>\n <Typography> Styles Gap </Typography>\n <Typography variant=\"body2\" style={{\"color\": textColor}} className={classes.bodyParagraph}> {difference} </Typography>\n </Box>\n <Grid container justify=\"center\" spacing={4}>\n <Grid style={{height: 100}} item xs={12}></Grid>\n </Grid>\n </Grid>\n </Grid>\n );\n}));\n","import {\n Button,\n Divider,\n Grid,\n IconButton,\n Paper,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport React, { useEffect, useState } from \"react\";\nimport { ReactComponent as InterestsIcon } from \"./icons/interests.svg\";\nimport { ReactComponent as SkillsIcon } from \"./icons/skill.svg\";\nimport { ReactComponent as StylesIcon } from \"./icons/styles.svg\";\nimport { InterestsPie } from \"./InterestsPie\";\nimport { SkillsList } from \"./SkillsList\";\nimport { StylesRadar } from \"./StylesRadar\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nconst matchTypes = [\n {\n type: \"skills\",\n title: \"Matching Skills\",\n buttontitle: \"Skill Match\",\n subTitle: \"Scroll down to see all your skills that match the current job\",\n view: (props) => <SkillsList {...props} />,\n icon: (props) => (\n <SkillsIcon {...props} className={props.classes.matchIcon} />\n ),\n },\n {\n type: \"interests\",\n title: \"Matching Interests\",\n buttontitle: \"Interest Match\",\n subTitle: \"All your interests that match the current job\",\n view: (props) => <InterestsPie {...props} />,\n icon: (props) => (\n <InterestsIcon {...props} className={props.classes.matchIcon} />\n ),\n },\n {\n type: \"styles\",\n title: \"Matching Styles\",\n buttontitle: \"Styles Match\",\n subTitle: \"All your styles that match the current job\",\n view: ({ job, candidate, ...props }) => {\n const radarMapping = {\n SPC: \"Complexity\",\n //DMA: \"Speed\",\n PSA: \"Accuracy\",\n RTF: \"Responsiveness\",\n ADY: \"Adaptability\",\n //RLS: \"Learning\",\n CONF: \"Confidence\",\n CONT: \"Control\",\n COMM: \"Commitment\", \n \n };\n const radarData = Object.keys(radarMapping).map((key) => ({\n label: radarMapping[key],\n id: radarMapping[key],\n You: candidate.latestAssessmentResult.results[key].percentage,\n Vacancy: job[key],\n }));\n return <StylesRadar {...props} data={radarData} />;\n },\n icon: (props) => (\n <StylesIcon {...props} className={props.classes.matchIcon} />\n ),\n },\n];\n\nconst styles = (theme) => ({\n matchIcon: {\n height: 40,\n width: 40,\n marginLeft: 18,\n },\n headerContainer: {\n marginLeft: \"1em\",\n },\n bodyContainer: {\n margin: 20,\n height: \"80%\"\n },\n footerContainer: {\n padding: 18,\n background: \"#F8F9FA\",\n position: \"absolute\",\n bottom: 0,\n width: \"100%\"\n },\n closeButton: {\n marginRight: 10\n },\n closeIcon: { color: \"black\" },\n headerText: {\n fontSize: 18,\n fontWeight: 600,\n color: \"#202A3E\",\n },\n subTitleText: {\n color: \"#5A6375\",\n fontSize: 10,\n },\n coloredText: {\n color: \"#5B657D\",\n height: 25,\n //paddingTop: 1,\n fontSize: 10,\n },\n divider: {\n backgroundColor: \"#F5F6F7\",\n },\n dialog: {\n margin: 20,\n },\n rightContainer: {\n width: 520,\n height: \"100%\",\n position: \"absolute\",\n right: \"-1000px\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100vw\",\n },\n transition: \"all 0.5s\"\n }\n});\n\nexport const MatchBreakdown = withStyles(styles)(\n ({ defaultType = \"skills\", classes, onClose, job, candidate }) => {\n const [currentViewIndex, setCurrentViewIndex] = useState(\n matchTypes.findIndex(({ type }) => type === defaultType)\n );\n const currentView = matchTypes[currentViewIndex];\n const getNextIndex = (index) => (index === 2 ? 0 : index + 1);\n const getPreviousIndex = (index) => (index === 0 ? 2 : index - 1);\n\n useEffect(() => {\n setCurrentViewIndex(\n matchTypes.findIndex(({ type }) => type === defaultType)\n );\n }, [defaultType]);\n\n let [animate, setAnimate] = React.useState(false); \n let [right, setRight] = React.useState(\"-1000px\"); \n\n if (!animate){\n setTimeout(() => {\n setAnimate(true);\n setRight(\"0px\");\n }, 300)\n }\n return (\n <div style={{right: right}} className={classes.rightContainer}>\n <Paper style={{ paddingTop: 20, borderRadius:0, height: \"100%\"}}> \n <div>\n <Grid container justify=\"flex-end\">\n <Grid item>\n <IconButton onClick={() => {\n setRight(\"-1000px\");\n setTimeout(() => {\n onClose();\n }, 300);\n }} className={`${classes.closeButton} close-button`}>\n <CloseIcon className={classes.closeIcon} />\n </IconButton>\n </Grid>\n </Grid>\n </div>\n <Grid container>\n <Grid item zeroMinWidth>\n {currentView.icon({classes,})}\n </Grid>\n <Grid item className={classes.headerContainer} xs zeroMinWidth>\n <Typography variant=\"h5\" className={classes.headerText}>\n {currentView.title}\n </Typography>\n <Typography variant=\"body1\" className={classes.subTitleText}>\n {currentView.subTitle}\n </Typography>\n </Grid>\n </Grid>\n\n <Divider className={classes.divider} />\n <div className={classes.bodyContainer}>\n {currentView.view({ job, candidate })}\n </div>\n\n <div className={classes.footerContainer}>\n <Grid container justify=\"space-between\">\n <Grid item xs=\"auto\">\n <Button\n className={`${classes.coloredText} previous-button`}\n variant=\"outlined\"\n color=\"default\"\n size=\"small\"\n onClick={() =>\n setCurrentViewIndex(getPreviousIndex(currentViewIndex))\n }\n startIcon={<ChevronLeftIcon />}\n >\n {matchTypes[getPreviousIndex(currentViewIndex)].buttontitle}\n </Button>\n </Grid>\n <Grid item xs=\"auto\" style={{marginRight: 35}}>\n <Button\n className={`${classes.coloredText} next-button`}\n variant=\"outlined\"\n color=\"default\"\n size=\"small\"\n endIcon={<ChevronRightIcon />}\n onClick={() =>\n setCurrentViewIndex(getNextIndex(currentViewIndex))\n }\n >\n {matchTypes[getNextIndex(currentViewIndex)].buttontitle}\n </Button>\n </Grid>\n </Grid>\n </div>\n </Paper>\n </div>\n );\n}\n);","import { API } from \"aws-amplify\";\nimport config from \"../config/\";\nimport {INDEED_DESCRIPTION} from \"./types\";\n\nexport const getIndeedDescription = (id) => async (dispatch) => {\n try {\n // NO Response implemented yet\n /* eslint-disable */\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/indeed_job_description\", {\n /* eslint-enable */\n body: {\n data: {\n \"job_id\": id\n }\n },\n });\n if(jobs && jobs){\n return jobs\n }\n\n } catch (error) {\n console.log(error);\n // TODO\n }\n};\n\nexport const getReedDescription = (id) => async (dispatch) => {\n try {\n // NO Response implemented yet\n /* eslint-disable */\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/reed_job_details\", {\n /* eslint-enable */\n body: {\n \"id\": id\n },\n });\n if(jobs && jobs.jobDescription){\n return jobs.jobDescription\n }\n\n } catch (error) {\n console.log(error);\n // TODO\n }\n};","import {\n Button,\n IconButton,\n Divider,\n Grid,\n Icon,\n Typography,\n withStyles,\n Link\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { useSnackbar } from 'notistack';\nimport { MatchBreakdown } from \"./MatchBreakdown\";\nimport Chip from \"@material-ui/core/Chip\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { getIndeedDescription, getReedDescription } from \"../../../actions/job_actions\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nconst styles = (theme) => ({\n contentGrid: {\n padding: \"1.5em\",\n width: \"100%\",\n height: \"100%\",\n overflowY: \"scroll\",\n background: \"white\",\n position:\"absolute\"\n },\n backdrop: {\n zIndex: 10001\n },\n promotedChip: {\n fontSize: 14,\n backgroundColor: \"#999\",\n color: \"white\",\n paddingBottom: 2,\n },\n rightContainer: {\n width: 520,\n height: \"100%\",\n position: \"absolute\",\n right: \"-1000px\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100vw\",\n },\n transition: \"all 0.5s\"\n },\n closeButton: {\n right: 10,\n position:\"absolute\",\n zIndex: 10\n },\n closeIcon: { color: \"black\" },\n});\n\nconst JobListView = (props) => {\n let { onDismiss, job, candidate, classes, onInviteToVacancy} = props;\n const { enqueueSnackbar } = useSnackbar();\n let [showSkillMatch, setShowSkillMatch] = React.useState(false);\n let [loading, setLoading] = React.useState(false); \n let ref = React.createRef(null);\n let [descriptionFull, setDescriptionFull] = React.useState(false);\n let [previousJobId, setPreviousJob] = React.useState(false);\n let openSkillGapJob = React.useState(true);\n\n const isVacancy = job.provider === \"skillzMiner\"\n let { jobDescription, provider, jobId } = job;\n\n if (previousJobId !== job.jobId){\n setPreviousJob(job.jobId);\n setDescriptionFull(false);\n }\n\n let [animate, setAnimate] = React.useState(false); \n let [right, setRight] = React.useState(\"-1000px\"); \n\n if (!animate){\n setTimeout(() => {\n setAnimate(true);\n setRight(\"0px\");\n }, 300)\n }\n\n\n\n\n return (\n <>\n {showSkillMatch ? (\n <Backdrop\n open={showSkillMatch}\n style={{zIndex: 100000}}\n classes={{root: classes.backdrop}}\n >\n <MatchBreakdown\n defaultType={\"skills\"}\n onClose={() => {\n setShowSkillMatch(false)\n }}\n job={job}\n candidate={candidate}\n />\n </Backdrop>\n ) : null}\n\n <Backdrop\n open={openSkillGapJob}\n classes={{root: classes.backdrop}}\n >\n <div style={{right: right}} className={classes.rightContainer}>\n <div style={{backgroundColor:\"#ffffff\"}}>\n <IconButton className={`${classes.closeButton} close-button`} onClick={() => {\n setRight(\"-1000px\");\n setTimeout(() => {\n onDismiss();\n }, 250);\n }}>\n <CloseIcon className={classes.closeIcon} />\n </IconButton>\n <Grid container direction=\"column\" className={classes.contentGrid}>\n <Grid item xs>\n <Grid container justify=\"space-between\" alignItems=\"flex-start\">\n <Grid item sm={12} md={12}>\n <Typography variant={\"h4\"} style={{marginTop: 10}}> {job.jobTitle}</Typography>\n <Typography variant={\"h5\"} style={{marginTop: 10}}>{job.employerName}</Typography>\n <Grid\n container\n alignContent=\"flex-start\"\n spacing={1}\n direction=\"column\"\n alignItems=\"baseline\"\n >\n <Grid>\n <Grid container alignItems=\"center\" style={{marginTop: 15}}>\n <Grid item>\n <Icon color=\"primary\">location_on</Icon>\n </Grid>\n <Grid item style={{ paddingLeft: \"0.3em\" }}>\n {job.original_location}\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs>\n <Grid container alignItems=\"center\" style={{marginTop: 5}}>\n <Grid itemstyle={{ paddingLeft: \"0.3em\" }}>\n <Icon\n color=\"primary\"\n className=\"fas fa-money-bill\"\n style={{ textAlign: \"center\" }}\n />\n </Grid>\n <Grid item style={{ paddingLeft: \"0.3em\" }}>\n {job.salary_type ? (\n job.salary_type === \"hourly\" ? job.annual_salary_max + \" per hour\" :\n job.salary_type === \"daily\" ? job.annual_salary_max + \" per day\" :\n job.annual_salary_max + \" per annum\"\n ) : \"Salary Unknown\"}\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs>\n <Grid container alignItems=\"center\" style={{marginTop: 5}}>\n <Grid item>\n <Icon color=\"primary\">timer</Icon>\n </Grid>\n <Grid item style={{ paddingLeft: \"0.3em\" }}>\n {job.job_contract\n .split(\"_\")\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")}\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={12} sm={12}>\n <div \n style={{}} \n dangerouslySetInnerHTML={{ __html: descriptionFull ? descriptionFull : jobDescription === \"no description\" ? \"Follow the Apply link to see job description. \" : jobDescription }} \n />\n </Grid>\n {provider && !provider.includes(\"jooble\") && (\n <Grid item xs={12} sm={12} style={{display:\"flex\", flexDirection:\"row-reverse\", paddingBlock:10}}>\n <Button\n disabled={loading || descriptionFull}\n color=\"primary\"\n className={classes.button}\n size=\"small\"\n onClick={async (e) => {\n setLoading(true)\n if(provider && provider.includes(\"indeed\")){\n setDescriptionFull(await props.getIndeedDescription(jobId));\n }\n else if(provider && (provider.includes(\"reed\") || provider.includes(\"Reed\"))){\n setDescriptionFull(await props.getReedDescription(jobId));\n }\n else{\n setDescriptionFull(jobDescription);\n }\n setLoading(false)\n }}\n >\n Show more \n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid> \n <Grid container style={{paddingRight: 10, bottom:0, paddingTop: 5, background:\"#ffffff\", height: 50, position:\"absolute\", marginTop: 15}}>\n {(isVacancy && (\n <Grid item xs style={{ textAlign: \"left\" }}>\n <Chip label=\"Promoted Vacancy\" className={classes.promotedChip}/>\n </Grid>\n ))}\n <Grid item xs style={{ textAlign: \"right\" }}>\n <Button color=\"primary\" style={{marginRight: 10}}variant=\"contained\" onClick={() => {\n setShowSkillMatch(true);\n }}>\n View Skill Gap\n </Button>\n <Button color=\"primary\" style={{marginRight: 10}}variant=\"contained\" onClick={() => {\n onInviteToVacancy(candidate.userID, job)\n enqueueSnackbar('The candidate has been notified of the selected job listing', { variant: 'success', autoHideDuration: 2000})\n }}>\n Invite candidate to apply\n </Button>\n <Link ref={ref} href={job.job_url} target=\"_blank\" \n onMouseDown={() => {\n if (job.provider === \"indeed\" && job.onmousedown) {\n let arr = job.onmousedown.split(\",\");\n let id = arr[1];\n window.indeed_clk(ref.current, id.replace(\")\", \"\").replace(\";\", \"\"));\n }}}>\n <Button color=\"primary\" variant=\"contained\">\n Apply\n </Button>\n </Link>\n </Grid>\n </Grid>\n </div>\n </div> \n </Backdrop>\n </>\n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state,\n };\n}\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators({getIndeedDescription, getReedDescription}, dispatch),\n dispatch\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(JobListView));","import { Grid, Popover } from \"@material-ui/core\";\nimport React from \"react\";\n\nexport const OccupationalArea = ({\n high_occupation,\n occupation_descripton,\n}) => {\n const [popoverAnchor, setPopoverAnchor] = React.useState(null);\n return (\n <>\n <Grid container alignItems=\"center\" justify=\"center\">\n <Grid\n item\n xs\n style={{ textAlign: \"center\" }}\n onMouseEnter={(e) => {\n if ((occupation_descripton || \"\").length > 0) {\n setPopoverAnchor(e.currentTarget);\n }\n }}\n >\n {high_occupation}\n </Grid>\n </Grid>\n <Popover\n id=\"mouse-over-popover\"\n open={Boolean(popoverAnchor)}\n anchorEl={popoverAnchor}\n onClose={() => setPopoverAnchor(null)}\n disableRestoreFocus\n >\n <Grid\n container\n direction=\"column\"\n style={{ padding: \"1em\", maxWidth: \"15em\" }}\n onMouseLeave={() => setPopoverAnchor(null)}\n >\n <Grid item>{occupation_descripton}</Grid>\n </Grid>\n </Popover>\n </>\n );\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { chainPropTypes } from \"@material-ui/utils\";\n// import withStyles from \"../styles/withStyles\";\n// import { capitalize } from \"../utils/helpers\";\nimport { withStyles } from \"@material-ui/styles\";\n\nconst SIZE = 44;\n\nconst capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);\n\nfunction getRelativeValue(value, min, max) {\n const clampedValue = Math.min(Math.max(min, value), max);\n return (clampedValue - min) / (max - min);\n}\n\nfunction easeOut(t) {\n t = getRelativeValue(t, 0, 1);\n // https://gist.github.com/gre/1650294\n t = (t -= 1) * t * t + 1;\n return t;\n}\n\nfunction easeIn(t) {\n return t * t;\n}\n\nexport const styles = theme => ({\n /* Styles applied to the root element. */\n root: {\n display: \"inline-block\",\n lineHeight: 1 // Keep the progress centered\n },\n /* Styles applied to the root element if `variant=\"static\"`. */\n static: {\n transition: theme.transitions.create(\"transform\")\n },\n /* Styles applied to the root element if `variant=\"indeterminate\"`. */\n indeterminate: {\n animation: \"$mui-progress-circular-rotate 1.4s linear infinite\"\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n /* Styles applied to the `svg` element. */\n svg: {},\n /* Styles applied to the `circle` svg path. */\n circle: {\n stroke: \"#7d7c7c\"\n // Use butt to follow the specification, by chance, it's already the default CSS value.\n // strokeLinecap: 'butt',\n },\n /* Styles applied to the `circle` svg path if `variant=\"static\"`. */\n circleStatic: {\n transition: theme.transitions.create(\"stroke-dashoffset\")\n },\n /* Styles applied to the `circle` svg path if `variant=\"indeterminate\"`. */\n circleIndeterminate: {\n animation: \"$mui-progress-circular-dash 1.4s ease-in-out infinite\",\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: \"80px, 200px\",\n strokeDashoffset: \"0px\" // Add the unit to fix a Edge 16 and below bug.\n },\n \"@keyframes mui-progress-circular-rotate\": {\n \"100%\": {\n transform: \"rotate(360deg)\"\n }\n },\n \"@keyframes mui-progress-circular-dash\": {\n \"0%\": {\n strokeDasharray: \"1px, 200px\",\n strokeDashoffset: \"0px\"\n },\n \"50%\": {\n strokeDasharray: \"100px, 200px\",\n strokeDashoffset: \"-15px\"\n },\n \"100%\": {\n strokeDasharray: \"100px, 200px\",\n strokeDashoffset: \"-125px\"\n }\n },\n /* Styles applied to the `circle` svg path if `disableShrink={true}`. */\n circleDisableShrink: {\n animation: \"none\"\n }\n});\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = React.forwardRef(function CircularProgress(\n props,\n ref\n) {\n const {\n classes,\n className,\n color = \"primary\",\n disableShrink = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = \"indeterminate\",\n innerText,\n ...other\n } = props;\n\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n\n if (variant === \"determinate\" || variant === \"static\") {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps[\"aria-valuenow\"] = Math.round(value);\n\n if (variant === \"static\") {\n circleStyle.strokeDashoffset = `${(\n ((100 - value) / 100) *\n circumference\n ).toFixed(3)}px`;\n rootStyle.transform = \"rotate(-90deg)\";\n } else {\n circleStyle.strokeDashoffset = `${(\n easeIn((100 - value) / 100) * circumference\n ).toFixed(3)}px`;\n rootStyle.transform = `rotate(${(easeOut(value / 70) * 270).toFixed(\n 3\n )}deg)`;\n }\n }\n\n return (\n <div\n className={clsx(\n classes.root,\n {\n [classes[`color${capitalize(color)}`]]: color !== \"inherit\",\n [classes.indeterminate]: variant === \"indeterminate\",\n [classes.static]: variant === \"static\"\n },\n className\n )}\n style={{ width: size, height: size, ...rootStyle, ...style }}\n ref={ref}\n role=\"progressbar\"\n {...rootProps}\n {...other}\n >\n <svg\n className={classes.svg}\n viewBox={`${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`}\n >\n {innerText ? (\n <g>\n <text\n x={SIZE}\n y={SIZE + 4}\n textAnchor=\"middle\"\n transform={`rotate(90,${SIZE},${SIZE})`}\n fill=\"#7d7c7c\" // Temporary\n >\n {innerText}\n </text>\n </g>\n ) : null}\n\n <circle\n className={clsx(classes.circle, {\n [classes.circleIndeterminate]: variant === \"indeterminate\",\n [classes.circleStatic]: variant === \"static\",\n [classes.circleDisableShrink]: disableShrink\n })}\n style={circleStyle}\n cx={SIZE}\n cy={SIZE}\n r={(SIZE - thickness) / 2}\n fill=\"none\"\n strokeWidth={thickness}\n />\n </svg>\n </div>\n );\n});\n\nCircularProgress.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf([\"primary\", \"secondary\", \"inherit\"]),\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (\n props.disableShrink &&\n props.variant &&\n props.variant !== \"indeterminate\"\n ) {\n return new Error(\n \"Material-UI: you have provided the `disableShrink` prop \" +\n \"with a variant other than `indeterminate`. This will have no effect.\"\n );\n }\n\n return null;\n }),\n /**\n * The size of the circle.\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The thickness of the circle.\n */\n thickness: PropTypes.number,\n /**\n * The value of the progress indicator for the determinate and static variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n */\n variant: PropTypes.oneOf([\"determinate\", \"indeterminate\", \"static\"]),\n innerText: PropTypes.string\n};\n\nexport default withStyles(styles, { name: \"MuiCircularProgress\", flip: false })(\n CircularProgress\n);\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Grid,\n List,\n ListItem,\n ListItemText\n} from \"@material-ui/core\";\nimport React, { useState } from \"react\";\nimport CustomCircle from \"./CustomCircle\";\n\nexport const OccupationalMatch = ({ score_bp, similar_skills }) => {\n const [showSkillsDialog, toggleSkillsDialog] = useState(false);\n return (\n <>\n <Grid onClick={similar_skills ? () => toggleSkillsDialog(true) : null}>\n <Grid container item xs justify=\"center\">\n <CustomCircle\n variant=\"static\"\n value={score_bp}\n size={50}\n innerText={score_bp ? score_bp.toString() : \"0\"}\n />\n </Grid>\n </Grid>\n {similar_skills ? (\n <Dialog\n onClose={() => toggleSkillsDialog(false)}\n aria-labelledby=\"simple-dialog-title\"\n open={showSkillsDialog}\n >\n <DialogTitle id=\"simple-dialog-title\" disableTypography>\n <Grid container justify=\"center\">\n <Grid item xs>\n Skillz Backpack Match\n </Grid>\n <Grid item xs style={{ textAlign: \"right\" }}>\n <CustomCircle\n variant=\"static\"\n value={score_bp}\n size={35}\n innerText={score_bp ? score_bp.toString() : \"0\"}\n />\n </Grid>\n </Grid>\n </DialogTitle>\n <DialogContent>\n <DialogContentText>\n <List>\n {similar_skills.map(skill => (\n <ListItem key={skill}>\n <ListItemText primary={skill} />\n </ListItem>\n ))}\n </List>\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => toggleSkillsDialog(false)} color=\"primary\">\n OK\n </Button>\n </DialogActions>\n </Dialog>\n ) : null}\n </>\n );\n};\n","import React from \"react\";\nimport Tooltip from '@material-ui/core/Tooltip';\n\nexport const InterestsIcon = () => {\n return (\n <Tooltip title=\"Interests\">\n <svg\n width=\"32\"\n height=\"26\"\n viewBox=\"0 0 32 26\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20.3226 11.8963C21.4991 11.8964 22.6491 11.5476 23.6273 10.894C24.6055 10.2405 25.3679 9.3115 25.8182 8.22463C26.2684 7.13776 26.3863 5.94178 26.1568 4.78793C25.9273 3.63409 25.3609 2.5742 24.529 1.7423C23.6972 0.910409 22.6373 0.343868 21.4835 0.114325C20.3297 -0.115218 19.1337 0.00254797 18.0468 0.452729C16.9599 0.90291 16.0309 1.66529 15.3773 2.64345C14.7236 3.62162 14.3748 4.77164 14.3748 5.94808C14.3747 6.7292 14.5285 7.50269 14.8274 8.22437C15.1262 8.94605 15.5643 9.60179 16.1167 10.1541C16.669 10.7065 17.3247 11.1446 18.0464 11.4436C18.768 11.7425 19.5415 11.8963 20.3226 11.8963ZM20.3226 0.991361C21.303 0.991304 22.2614 1.28197 23.0766 1.8266C23.8917 2.37123 24.5271 3.14536 24.9023 4.05109C25.2775 4.95683 25.3757 5.95348 25.1845 6.91503C24.9933 7.87657 24.5212 8.75982 23.828 9.45306C23.1347 10.1463 22.2515 10.6184 21.29 10.8097C20.3285 11.001 19.3318 10.9028 18.426 10.5276C17.5203 10.1525 16.7461 9.51713 16.2015 8.70197C15.6568 7.88682 15.3661 6.92845 15.3661 5.94808C15.3676 4.63398 15.8903 3.37415 16.8195 2.44492C17.7487 1.51569 19.0085 0.992952 20.3226 0.991361Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M29.715 20.6889C29.6862 20.6024 29.634 20.5257 29.5643 20.467C29.4946 20.4083 29.41 20.37 29.3199 20.3563L28.2113 20.1869L27.711 19.121C27.671 19.0357 27.6076 18.9637 27.5281 18.9132C27.4487 18.8627 27.3565 18.8359 27.2623 18.8359C27.1682 18.8359 27.076 18.8627 26.9965 18.9132C26.917 18.9637 26.8536 19.0357 26.8136 19.121L26.3133 20.1869L25.2047 20.3563C25.1146 20.3701 25.0301 20.4084 24.9604 20.467C24.8907 20.5257 24.8385 20.6025 24.8096 20.6888C24.7807 20.7752 24.7761 20.8679 24.7964 20.9567C24.8167 21.0456 24.8612 21.127 24.9248 21.1923L25.7415 22.0292L25.5476 23.2171C25.5327 23.3089 25.5438 23.4031 25.5799 23.4889C25.6159 23.5747 25.6754 23.6486 25.7514 23.7021C25.8275 23.7557 25.9171 23.7868 26.01 23.7919C26.1029 23.7969 26.1953 23.7757 26.2768 23.7307L27.2623 23.1859L28.2479 23.7307C28.3296 23.7747 28.4219 23.7953 28.5145 23.7902C28.6072 23.7852 28.6967 23.7547 28.7732 23.7021C28.8492 23.6486 28.9087 23.5747 28.9447 23.4889C28.9808 23.4031 28.9919 23.3089 28.977 23.2171L28.7831 22.0292L29.5998 21.1923C29.6635 21.1271 29.7079 21.0456 29.7282 20.9568C29.7485 20.8679 29.744 20.7752 29.715 20.6889ZM27.8988 21.5161C27.8447 21.5716 27.8043 21.6391 27.7809 21.7131C27.7576 21.7871 27.7519 21.8655 27.7644 21.9421L27.8341 22.3693L27.5022 22.1858C27.4287 22.1452 27.3462 22.1239 27.2623 22.1239C27.1784 22.1239 27.0959 22.1452 27.0225 22.1858L26.6905 22.3693L26.7602 21.9421C26.7727 21.8655 26.767 21.7871 26.7437 21.7131C26.7203 21.6391 26.6799 21.5716 26.6258 21.5161L26.308 21.1903L26.7245 21.1267C26.805 21.1144 26.8811 21.0825 26.9463 21.0338C27.0115 20.985 27.0637 20.921 27.0983 20.8474L27.2623 20.4981L27.4263 20.8474C27.4609 20.921 27.5131 20.985 27.5783 21.0338C27.6435 21.0825 27.7197 21.1144 27.8001 21.1267L28.2166 21.1903L27.8988 21.5161Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M13.879 21.7046V21.4195C13.8788 21.159 13.814 20.9027 13.6903 20.6734C13.968 20.5468 14.2035 20.3431 14.3687 20.0866C14.534 19.83 14.6221 19.5314 14.6225 19.2262V18.9411C14.6221 18.6362 14.5342 18.3379 14.3693 18.0815C14.2043 17.8252 13.9693 17.6215 13.6921 17.4947C13.815 17.2649 13.8792 17.0083 13.879 16.7478V16.4627C13.8785 16.0405 13.7106 15.6358 13.4121 15.3373C13.1136 15.0387 12.7089 14.8708 12.2867 14.8704H10.043C9.80974 14.4761 9.89589 13.6585 10.106 13.0437C10.3043 12.463 10.3864 11.8489 10.3477 11.2365C10.2617 9.9518 9.5728 9.00522 8.54973 8.76657C7.83535 8.59965 7.30401 8.6593 6.97011 8.94261C6.59675 9.2594 6.63205 9.76371 6.66952 10.2038C6.73269 10.9468 6.79235 11.6484 6.44576 12.2271C5.99135 12.9866 5.35444 13.4167 4.61697 13.9146C4.38583 14.0707 4.14852 14.2309 3.90843 14.4066C3.70682 14.5471 3.51569 14.7021 3.33655 14.8704H1.26679C0.933755 14.8679 0.613349 14.9977 0.375863 15.2312C0.138378 15.4647 0.00320508 15.7828 0 16.1158V23.0428C0.00320508 23.3758 0.138378 23.694 0.375863 23.9275C0.613349 24.1609 0.933755 24.2907 1.26679 24.2883H3.85219C4.38312 24.9425 5.30432 25.5828 6.88009 25.5826C6.95167 25.5826 7.02802 25.578 7.10237 25.5752C6.90971 25.2754 6.78168 24.9386 6.72643 24.5865C4.65496 24.5186 4.22058 23.0753 4.15301 22.771V21.3836C4.15301 21.2522 4.10078 21.1261 4.00783 21.0331C3.91487 20.9402 3.78879 20.888 3.65733 20.888C3.52587 20.888 3.39979 20.9402 3.30683 21.0331C3.21387 21.1261 3.16165 21.2522 3.16165 21.3836V22.8206C3.16163 22.8491 3.1641 22.8776 3.16903 22.9058C3.19765 23.039 3.23667 23.1698 3.28575 23.2969H1.26679C1.19662 23.2995 1.12826 23.2743 1.07664 23.2267C1.02503 23.179 0.994372 23.1129 0.991359 23.0428V16.1158C0.994372 16.0457 1.02503 15.9796 1.07664 15.932C1.12826 15.8843 1.19662 15.8591 1.26679 15.8617H3.0842V17.8028C3.0842 17.9343 3.13642 18.0603 3.22938 18.1533C3.32234 18.2462 3.44842 18.2985 3.57988 18.2985C3.71134 18.2985 3.83742 18.2462 3.93038 18.1533C4.02333 18.0603 4.07556 17.9343 4.07556 17.8028V15.5346C4.19957 15.4217 4.9505 14.8856 5.17184 14.7363C5.97247 14.1956 6.72882 13.6849 7.29638 12.7364C7.80731 11.8832 7.72768 10.9463 7.65737 10.1198C7.64648 9.99198 7.62603 9.70178 7.627 9.69138C7.85912 9.6453 8.09917 9.65921 8.32442 9.7318C9.20008 9.93631 9.33732 10.986 9.35849 11.3026C9.38877 11.7841 9.32401 12.2668 9.1679 12.7233C9.0881 12.9569 8.77093 13.9865 8.99047 14.8704H8.53183C8.10966 14.8708 7.70493 15.0387 7.40641 15.3373C7.1079 15.6358 6.93998 16.0405 6.93951 16.4627V16.7478C6.93935 17.0083 7.00356 17.2649 7.12642 17.4947C6.8492 17.6215 6.61419 17.8252 6.44927 18.0815C6.28434 18.3379 6.19644 18.6362 6.19599 18.9411V19.2262C6.19644 19.5314 6.28453 19.83 6.44979 20.0866C6.61505 20.3431 6.85051 20.5468 7.12819 20.6734C7.00452 20.9027 6.93968 21.159 6.93951 21.4195V21.7046C6.93997 22.0097 7.02808 22.3083 7.19337 22.5649C7.35865 22.8214 7.59415 23.025 7.87184 23.1516C7.74808 23.3809 7.6832 23.6373 7.68303 23.8979V24.183C7.6835 24.6051 7.85141 25.0099 8.14993 25.3084C8.44844 25.6069 8.85318 25.7748 9.27535 25.7753H11.5432C11.9653 25.7748 12.3701 25.6069 12.6686 25.3084C12.9671 25.0099 13.135 24.6051 13.1355 24.183V23.8979C13.1353 23.6373 13.0704 23.3809 12.9467 23.1516C13.2244 23.025 13.4599 22.8214 13.6252 22.5649C13.7904 22.3083 13.8786 22.0097 13.879 21.7046ZM12.8877 21.4195V21.7046C12.8875 21.8639 12.8241 22.0167 12.7114 22.1293C12.5988 22.242 12.446 22.3054 12.2867 22.3055H8.53183C8.3725 22.3054 8.21976 22.242 8.1071 22.1293C7.99444 22.0167 7.93106 21.8639 7.93087 21.7046V21.4195C7.93106 21.2601 7.99444 21.1074 8.1071 20.9947C8.21976 20.8821 8.3725 20.8187 8.53183 20.8185H12.2867C12.446 20.8187 12.5988 20.8821 12.7114 20.9947C12.8241 21.1074 12.8875 21.2601 12.8877 21.4195ZM8.53183 18.3401H13.0302C13.1895 18.3403 13.3423 18.4037 13.455 18.5163C13.5676 18.629 13.631 18.7817 13.6312 18.9411V19.2262C13.631 19.3855 13.5676 19.5383 13.455 19.6509C13.3423 19.7636 13.1895 19.827 13.0302 19.8271H7.78831C7.62898 19.827 7.47624 19.7636 7.36358 19.6509C7.25092 19.5383 7.18754 19.3855 7.18735 19.2262V18.9411C7.18754 18.7817 7.25092 18.629 7.36358 18.5163C7.47624 18.4037 7.62898 18.3403 7.78831 18.3401H8.53183ZM7.93087 16.4627C7.93106 16.3033 7.99444 16.1506 8.1071 16.0379C8.21976 15.9253 8.3725 15.8619 8.53183 15.8617H12.2867C12.446 15.8619 12.5988 15.9253 12.7114 16.0379C12.8241 16.1506 12.8875 16.3033 12.8877 16.4627V16.7478C12.8875 16.9071 12.8241 17.0599 12.7114 17.1725C12.5988 17.2852 12.446 17.3486 12.2867 17.3488H8.53183C8.3725 17.3486 8.21976 17.2852 8.1071 17.1725C7.99444 17.0599 7.93106 16.9071 7.93087 16.7478V16.4627ZM12.1441 24.183C12.144 24.3423 12.0806 24.4951 11.9679 24.6077C11.8553 24.7204 11.7025 24.7837 11.5432 24.7839H9.27535C9.11602 24.7837 8.96328 24.7204 8.85062 24.6077C8.73796 24.4951 8.67458 24.3423 8.67439 24.183V23.8979C8.67458 23.7385 8.73796 23.5858 8.85062 23.4731C8.96328 23.3605 9.11602 23.2971 9.27535 23.2969H11.5432C11.7025 23.2971 11.8553 23.3605 11.9679 23.4731C12.0806 23.5858 12.144 23.7385 12.1441 23.8979V24.183Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M18.923 12.7457L17.7915 18.5833C17.7748 18.6694 17.7813 18.7583 17.8102 18.8411C17.8391 18.9239 17.8895 18.9975 17.9561 19.0545L20.0008 20.8017C20.0895 20.8776 20.2022 20.9197 20.319 20.9206C20.4357 20.9215 20.549 20.8811 20.6389 20.8066L22.6836 19.1133C22.7514 19.0572 22.803 18.9841 22.8332 18.9014C22.8634 18.8187 22.871 18.7294 22.8552 18.6428L21.7788 12.7326C21.4549 12.8018 21.1264 12.8475 20.796 12.8696L21.8279 18.5349L20.3278 19.7772L18.8197 18.4884L19.9079 12.8741C19.5769 12.8549 19.2478 12.812 18.923 12.7457Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M16.0709 11.8963H16.7528C16.3001 11.6231 15.88 11.2993 15.5005 10.9313C13.8209 11.072 12.2569 11.8433 11.1229 13.0903C11.0967 13.1818 11.0749 13.2746 11.0442 13.3644C10.9513 13.6361 10.9003 13.9204 10.8931 14.2074C11.0488 14.2611 11.1945 14.3405 11.3241 14.4422C11.8428 13.6582 12.5481 13.0151 13.3765 12.5708C14.205 12.1264 15.1308 11.8947 16.0709 11.8963Z\"\n fill=\"#2988FF\"\n />\n <path\n d=\"M25.1702 10.9074C24.7841 11.2853 24.3554 11.6172 23.8928 11.8963H25.0705C26.5611 11.8876 27.9943 12.4706 29.0557 13.5172C30.117 14.5639 30.7199 15.9888 30.7321 17.4794V24.3023C30.7306 24.4313 30.6779 24.5545 30.5857 24.6448C30.4935 24.7351 30.3693 24.7851 30.2403 24.7839H14.0534C13.9669 25.1451 13.8032 25.4833 13.5736 25.7753H30.2402C30.6321 25.7762 31.0084 25.6216 31.2864 25.3455C31.5645 25.0693 31.7216 24.6942 31.7234 24.3023V17.4794C31.7111 15.7435 31.0173 14.0818 29.7915 12.8525C28.5657 11.6232 26.9061 10.9247 25.1702 10.9074Z\"\n fill=\"#2988FF\"\n />\n </svg>\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nexport const SkillsIcon = () => {\n return (\n <Tooltip title=\"Skills\">\n <svg\n width=\"21\"\n height=\"29\"\n viewBox=\"0 0 21 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51489 27.5879C4.51489 27.7041 4.5616 27.8155 4.64473 27.8976C4.72787 27.9797 4.84062 28.0258 4.95819 28.0258H7.54926C7.66682 28.0258 7.77958 27.9797 7.86271 27.8976C7.94585 27.8155 7.99255 27.7041 7.99255 27.5879C7.99255 27.4718 7.94585 27.3604 7.86271 27.2783C7.77958 27.1962 7.66682 27.15 7.54926 27.15H4.95819C4.84062 27.15 4.72787 27.1962 4.64473 27.2783C4.5616 27.3604 4.51489 27.4718 4.51489 27.5879Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M6.44103 25.3983H4.22455C4.11807 25.0455 3.88659 24.7423 3.57244 24.5443C3.2583 24.3462 2.88248 24.2664 2.5137 24.3196C2.14492 24.3727 1.80783 24.5552 1.56407 24.8337C1.3203 25.1122 1.18616 25.468 1.18616 25.8362C1.18616 26.2043 1.3203 26.5602 1.56407 26.8387C1.80783 27.1171 2.14492 27.2996 2.5137 27.3528C2.88248 27.4059 3.2583 27.3262 3.57244 27.1281C3.88659 26.9301 4.11807 26.6269 4.22455 26.2741H6.44103C6.5586 26.2741 6.67135 26.228 6.75448 26.1458C6.83762 26.0637 6.88432 25.9523 6.88432 25.8362C6.88432 25.7201 6.83762 25.6087 6.75448 25.5265C6.67135 25.4444 6.5586 25.3983 6.44103 25.3983ZM2.74173 26.493C2.61021 26.493 2.48165 26.4545 2.3723 26.3823C2.26295 26.3102 2.17773 26.2076 2.1274 26.0876C2.07707 25.9675 2.0639 25.8355 2.08956 25.708C2.11522 25.5806 2.17855 25.4636 2.27154 25.3717C2.36453 25.2799 2.48302 25.2173 2.612 25.192C2.74099 25.1666 2.87469 25.1796 2.99619 25.2293C3.11769 25.2791 3.22154 25.3632 3.29461 25.4713C3.36767 25.5793 3.40667 25.7063 3.40667 25.8362C3.40667 25.9226 3.3894 26.0082 3.35584 26.0881C3.32229 26.1679 3.27311 26.2404 3.21113 26.3014C3.14915 26.3625 3.07558 26.4108 2.99465 26.4437C2.91372 26.4766 2.82702 26.4933 2.73951 26.493H2.74173Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M13.4873 20.9756C13.7821 18.9262 15.1474 17.0344 16.4662 15.2215C16.8209 14.7332 17.1533 14.2734 17.4747 13.7983C18.2128 12.6576 19.0617 11.1074 19.0617 9.22224C19.0617 4.13599 14.7861 0 9.53086 0C4.27559 0 0 4.13599 0 9.22224C0.00287661 11.1412 0.635981 13.0074 1.80421 14.5406C2.04138 14.8559 2.28297 15.1668 2.52457 15.4777C3.79018 17.1089 4.98486 18.6481 5.45032 20.6318L5.47027 20.7128C5.68612 21.6473 5.80569 22.6009 5.82712 23.5592H4.95826C4.84069 23.5592 4.72794 23.6053 4.64481 23.6874C4.56167 23.7696 4.51497 23.8809 4.51497 23.9971C4.51497 24.1132 4.56167 24.2246 4.64481 24.3067C4.72794 24.3889 4.84069 24.435 4.95826 24.435H7.95051C8.06808 24.435 8.18083 24.3889 8.26397 24.3067C8.3471 24.2246 8.3938 24.1132 8.3938 23.9971V20.4939C8.3938 20.3777 8.3471 20.2663 8.26397 20.1842C8.18083 20.1021 8.06808 20.056 7.95051 20.056C7.83294 20.056 7.72019 20.1021 7.63705 20.1842C7.55392 20.2663 7.50721 20.3777 7.50721 20.4939V23.5592H6.71371C6.69297 22.5272 6.56523 21.5001 6.33248 20.4939L6.31475 20.4194C5.80717 18.2518 4.49502 16.5637 3.22941 14.9303C2.99225 14.6238 2.75287 14.315 2.51792 14.0041C1.46576 12.626 0.893459 10.9484 0.886591 9.22224C0.886591 4.61988 4.76543 0.875806 9.53086 0.875806C14.2963 0.875806 18.1751 4.61988 18.1751 9.22224C18.1751 10.8819 17.4016 12.2876 16.7344 13.3188C16.4241 13.7742 16.0961 14.2318 15.737 14.7114C14.3561 16.6184 12.9265 18.5912 12.6007 20.842L12.5874 20.934C12.5364 21.2777 12.4012 22.1929 12.3303 23.2702C12.3303 23.2702 12.3303 23.2702 12.3303 23.2833C12.3303 23.2964 12.3303 23.2833 12.3303 23.2964C12.3303 23.3096 12.3303 23.3161 12.3303 23.3271C12.3295 23.3424 12.3295 23.3578 12.3303 23.3731C12.3303 23.3862 12.3303 23.4015 12.3303 23.4147C12.3303 23.4278 12.3303 23.4431 12.3436 23.4563C12.3569 23.4694 12.3547 23.4825 12.3613 23.4935L12.3813 23.5307L12.4056 23.5636L12.4322 23.5964L12.4633 23.6249L12.4965 23.6533L12.532 23.6752L12.5697 23.6949L12.6095 23.7103L12.6517 23.7234H12.696H12.727H17.5456C17.6521 24.0762 17.8836 24.3794 18.1978 24.5774C18.5119 24.7755 18.8877 24.8552 19.2565 24.8021C19.6253 24.7489 19.9624 24.5664 20.2061 24.288C20.4499 24.0095 20.584 23.6536 20.584 23.2855C20.584 22.9173 20.4499 22.5615 20.2061 22.283C19.9624 22.0045 19.6253 21.822 19.2565 21.7689C18.8877 21.7157 18.5119 21.7955 18.1978 21.9936C17.8836 22.1916 17.6521 22.4948 17.5456 22.8476H13.259C13.3299 22.0156 13.4296 21.3324 13.4806 21.05L13.4873 20.9756ZM19.0617 22.644C19.1932 22.644 19.3218 22.6825 19.4311 22.7547C19.5405 22.8268 19.6257 22.9294 19.676 23.0494C19.7264 23.1695 19.7395 23.3015 19.7139 23.429C19.6882 23.5564 19.6249 23.6734 19.5319 23.7653C19.4389 23.8571 19.3204 23.9197 19.1914 23.9451C19.0625 23.9704 18.9288 23.9574 18.8073 23.9077C18.6858 23.858 18.5819 23.7738 18.5088 23.6657C18.4358 23.5577 18.3968 23.4307 18.3968 23.3008C18.3968 23.1266 18.4668 22.9595 18.5915 22.8364C18.7162 22.7132 18.8854 22.644 19.0617 22.644Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M3.6106 13.6757C3.61208 13.8848 3.69736 14.0848 3.84776 14.2319L4.87621 15.2478C5.02962 15.3926 5.23365 15.4734 5.44584 15.4734C5.65804 15.4734 5.86206 15.3926 6.01548 15.2478L6.42774 14.8428C6.49424 14.8822 6.56295 14.915 6.62944 14.9522V13.9319H6.61392L6.31027 13.7305L5.44806 14.5822L4.54152 13.6867L5.40373 12.835L5.19981 12.535C4.80615 11.9607 4.53468 11.3134 4.40188 10.6323L4.33317 10.2776H3.10302V9.00114H4.32209L4.3908 8.64643C4.5236 7.96537 4.79507 7.31806 5.18873 6.74375L5.39265 6.44378L4.53043 5.59206L5.43697 4.69655L6.29918 5.54827L6.60284 5.34684C7.18411 4.95775 7.83944 4.68957 8.52896 4.55861L8.88803 4.49074V3.28431H10.1714V4.48855L10.5304 4.55642C11.22 4.68738 11.8753 4.95556 12.4566 5.34465L12.7602 5.54608L13.6224 4.69436L14.529 5.58987L13.6668 6.44159L13.8707 6.74156C14.2643 7.31587 14.5358 7.96318 14.6686 8.64424L14.7373 8.99895H15.9586V10.2667H14.7395L14.6708 10.6214C14.538 11.3024 14.2666 11.9498 13.8729 12.5241L13.669 12.824L14.5312 13.6757L13.6246 14.5713L12.7624 13.7195L12.4588 13.921L12.4366 13.9341V14.9544C12.5053 14.9172 12.5763 14.8822 12.645 14.8428L13.055 15.2478C13.2084 15.3926 13.4125 15.4734 13.6246 15.4734C13.8368 15.4734 14.0409 15.3926 14.1943 15.2478L15.2139 14.2319C15.2888 14.1581 15.3482 14.0703 15.3888 13.9738C15.4294 13.8772 15.4502 13.7737 15.4502 13.6692C15.4502 13.5646 15.4294 13.4611 15.3888 13.3646C15.3482 13.268 15.2888 13.1803 15.2139 13.1065L14.8038 12.6992C15.0998 12.2114 15.3238 11.6842 15.4688 11.1337H16.0495C16.2596 11.1309 16.4604 11.0472 16.609 10.9004C16.7576 10.7536 16.8423 10.5553 16.8452 10.3477V8.92012C16.8446 8.70951 16.7597 8.50768 16.6089 8.35876C16.4581 8.20983 16.2538 8.12591 16.0406 8.12533H15.4599C15.3149 7.57486 15.091 7.0477 14.7949 6.55983L15.205 6.15477C15.2799 6.08094 15.3394 5.99323 15.3799 5.89667C15.4205 5.80012 15.4414 5.6966 15.4414 5.59206C15.4414 5.48752 15.4205 5.38401 15.3799 5.28745C15.3394 5.19089 15.2799 5.10319 15.205 5.02936L14.1854 4.01999C14.032 3.87518 13.828 3.79437 13.6158 3.79437C13.4036 3.79437 13.1996 3.87518 13.0461 4.01999L12.6339 4.42505C12.14 4.13257 11.6064 3.91138 11.0491 3.7682V3.2033C11.0485 2.99419 10.9648 2.79368 10.8159 2.64499C10.6671 2.49631 10.465 2.41138 10.2534 2.40851H8.80824C8.59503 2.40909 8.39072 2.49301 8.23996 2.64194C8.0892 2.79086 8.00424 2.99269 8.00366 3.2033V3.77695C7.44639 3.92014 6.91272 4.14133 6.41887 4.43381L6.00883 4.02875C5.85541 3.88394 5.65139 3.80312 5.43919 3.80312C5.227 3.80312 5.02297 3.88394 4.86956 4.02875L3.84776 5.03593C3.77283 5.10975 3.71339 5.19746 3.67283 5.29402C3.63227 5.39058 3.61139 5.49409 3.61139 5.59863C3.61139 5.70317 3.63227 5.80668 3.67283 5.90324C3.71339 5.9998 3.77283 6.08751 3.84776 6.16134L4.25781 6.56858C3.96178 7.05645 3.73787 7.58362 3.59286 8.13409H3.02101C2.80933 8.13464 2.60634 8.21736 2.45583 8.3644C2.30532 8.51144 2.21934 8.71103 2.21643 8.92012V10.3499C2.21702 10.5605 2.30197 10.7623 2.45273 10.9112C2.60349 11.0602 2.8078 11.1441 3.02101 11.1447H3.60173C3.74673 11.6951 3.97064 12.2223 4.26667 12.7102L3.85663 13.1152C3.78002 13.1879 3.71881 13.2748 3.67657 13.3711C3.63433 13.4673 3.61191 13.5709 3.6106 13.6757Z\"\n fill=\"#53D28E\"\n />\n <path\n d=\"M7.95053 18.7466C8.0681 18.7466 8.18085 18.7005 8.26399 18.6184C8.34712 18.5362 8.39382 18.4249 8.39382 18.3087V13.6319C9.13374 13.8486 9.92137 13.8486 10.6613 13.6319V25.9348C10.6613 26.0509 10.708 26.1623 10.7911 26.2445C10.8743 26.3266 10.987 26.3727 11.1046 26.3727H14.0281C14.1346 26.7255 14.3661 27.0287 14.6802 27.2267C14.9944 27.4248 15.3702 27.5046 15.739 27.4514C16.1077 27.3983 16.4448 27.2158 16.6886 26.9373C16.9324 26.6588 17.0665 26.303 17.0665 25.9348C17.0665 25.5667 16.9324 25.2108 16.6886 24.9323C16.4448 24.6539 16.1077 24.4714 15.739 24.4182C15.3702 24.3651 14.9944 24.4448 14.6802 24.6429C14.3661 24.8409 14.1346 25.1441 14.0281 25.4969H11.5479V13.2553C12.1695 12.9052 12.682 12.3932 13.0292 11.7751C13.3765 11.157 13.5452 10.4566 13.5171 9.75021C13.489 9.04385 13.265 8.35869 12.8697 7.76944C12.4744 7.1802 11.9228 6.70951 11.2752 6.40871C11.2077 6.37647 11.1329 6.3617 11.058 6.36578C10.9831 6.36986 10.9104 6.39265 10.8469 6.43204C10.7833 6.47142 10.7309 6.5261 10.6946 6.59095C10.6582 6.6558 10.6391 6.7287 10.6391 6.80283V9.0646L9.53088 9.76962L8.42264 9.0646V6.80283C8.42261 6.7287 8.40353 6.6558 8.36719 6.59095C8.33085 6.5261 8.27844 6.47142 8.21488 6.43204C8.15131 6.39265 8.07866 6.36986 8.00374 6.36578C7.92882 6.3617 7.85407 6.37647 7.78651 6.40871C7.13967 6.7093 6.58868 7.1794 6.19353 7.76786C5.79838 8.35631 5.57421 9.04056 5.54541 9.74613C5.51661 10.4517 5.68429 11.1516 6.0302 11.7695C6.37611 12.3875 6.88699 12.8999 7.50723 13.2509V18.3087C7.50723 18.4249 7.55394 18.5362 7.63707 18.6184C7.72021 18.7005 7.83296 18.7466 7.95053 18.7466ZM15.5154 25.278C15.6469 25.278 15.7754 25.3165 15.8848 25.3887C15.9941 25.4608 16.0794 25.5634 16.1297 25.6834C16.18 25.8035 16.1932 25.9355 16.1675 26.063C16.1419 26.1904 16.0786 26.3074 15.9856 26.3993C15.8926 26.4911 15.7741 26.5537 15.6451 26.579C15.5161 26.6044 15.3824 26.5914 15.2609 26.5417C15.1394 26.4919 15.0356 26.4078 14.9625 26.2997C14.8894 26.1917 14.8504 26.0647 14.8504 25.9348C14.8504 25.7606 14.9205 25.5935 15.0452 25.4703C15.1699 25.3472 15.339 25.278 15.5154 25.278ZM6.42781 9.90537C6.42671 9.46311 6.52564 9.0262 6.71738 8.62655C6.90912 8.2269 7.18882 7.87461 7.53605 7.59543V9.30325C7.53617 9.37652 7.5549 9.44859 7.59053 9.51285C7.62615 9.57712 7.67753 9.63153 7.73996 9.67109L9.2915 10.6586C9.36317 10.7043 9.44667 10.7286 9.53199 10.7286C9.6173 10.7286 9.7008 10.7043 9.77247 10.6586L11.324 9.67109C11.386 9.63127 11.437 9.57675 11.4722 9.5125C11.5074 9.44826 11.5258 9.37632 11.5257 9.30325V7.59543C11.8729 7.87461 12.1526 8.2269 12.3444 8.62655C12.5361 9.0262 12.635 9.46311 12.6339 9.90537C12.6339 10.7183 12.307 11.498 11.7251 12.0729C11.1431 12.6477 10.3539 12.9707 9.53088 12.9707C8.70789 12.9707 7.91861 12.6477 7.33668 12.0729C6.75474 11.498 6.42781 10.7183 6.42781 9.90537Z\"\n fill=\"#53D28E\"\n />\n </svg>\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nexport const StylesIcon = () => {\n return (\n <Tooltip title=\"Styles\">\n <svg\n width=\"25\"\n height=\"29\"\n viewBox=\"0 0 25 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23.6467 8.53912H21.0193C20.9032 8.53912 20.7918 8.58526 20.7097 8.66738C20.6276 8.7495 20.5814 8.86089 20.5814 8.97703C20.5814 9.09317 20.6276 9.20455 20.7097 9.28667C20.7918 9.36879 20.9032 9.41493 21.0193 9.41493H21.8951V14.6698C21.895 14.7859 21.8488 14.8972 21.7667 14.9793C21.6846 15.0614 21.5733 15.1076 21.4572 15.1077H21.0193V15.9835H21.4572C21.8055 15.9831 22.1395 15.8446 22.3857 15.5983C22.632 15.352 22.7706 15.0181 22.7709 14.6698V9.41493H23.6467C23.7629 9.41493 23.8743 9.36879 23.9564 9.28667C24.0385 9.20455 24.0846 9.09317 24.0846 8.97703C24.0846 8.86089 24.0385 8.7495 23.9564 8.66738C23.8743 8.58526 23.7629 8.53912 23.6467 8.53912Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M6.1959 12.6992H17.8886C18.0707 12.6992 18.2508 12.6614 18.4174 12.5882C18.5841 12.5149 18.7337 12.4078 18.8568 12.2736C18.9798 12.1394 19.0736 11.9811 19.1323 11.8088C19.1909 11.6364 19.213 11.4537 19.1972 11.2724L18.0364 1.21942C18.0115 0.888574 17.8628 0.579281 17.6199 0.353253C17.377 0.127225 17.0579 0.00108377 16.7261 0L7.35844 0C7.02963 2.88298e-05 6.7128 0.12337 6.47052 0.345657C6.22824 0.567945 6.07814 0.873014 6.04986 1.2006L4.88562 11.2911C4.87261 11.4711 4.89684 11.6518 4.9568 11.8221C5.01675 11.9923 5.11115 12.1484 5.2341 12.2805C5.35705 12.4126 5.5059 12.518 5.67138 12.59C5.83687 12.6621 6.01542 12.6992 6.1959 12.6992ZM6.9216 1.28228C6.92992 1.172 6.97952 1.0689 7.06048 0.993563C7.14145 0.918224 7.24784 0.876176 7.35844 0.875806H16.7261C16.8397 0.877322 16.9484 0.922216 17.0299 1.00129C17.1114 1.08036 17.1596 1.18762 17.1646 1.30109L17.4948 4.16008H6.58957L6.9216 1.28228ZM6.48851 5.03588H17.5959L17.697 5.91169H6.38747L6.48851 5.03588ZM6.28642 6.7875H17.7982L17.8993 7.6633H6.18537L6.28642 6.7875ZM6.08433 8.53911H18.0004L18.3255 11.3541C18.3298 11.4141 18.3217 11.4744 18.3016 11.5311C18.2816 11.5878 18.2502 11.6398 18.2092 11.6838C18.1682 11.7279 18.1186 11.763 18.0634 11.787C18.0083 11.811 17.9488 11.8234 17.8886 11.8234H6.1959C6.13569 11.8236 6.07609 11.8114 6.02088 11.7873C5.96568 11.7633 5.91609 11.728 5.87528 11.6838C5.83581 11.6425 5.80504 11.5937 5.78479 11.5403C5.76453 11.4869 5.7552 11.4299 5.75735 11.3729L6.08433 8.53911Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M12.0423 24.9604C11.7392 24.9604 11.4428 25.0503 11.1908 25.2187C10.9388 25.3872 10.7423 25.6265 10.6263 25.9066C10.5103 26.1866 10.48 26.4948 10.5391 26.7921C10.5982 27.0894 10.7442 27.3625 10.9585 27.5769C11.1729 27.7912 11.446 27.9372 11.7433 27.9963C12.0406 28.0555 12.3488 28.0251 12.6288 27.9091C12.9089 27.7931 13.1483 27.5967 13.3167 27.3446C13.4851 27.0926 13.575 26.7962 13.575 26.4931C13.5745 26.0868 13.4129 25.6972 13.1256 25.4099C12.8382 25.1225 12.4486 24.9609 12.0423 24.9604ZM12.0423 27.15C11.9124 27.15 11.7854 27.1114 11.6774 27.0393C11.5694 26.9671 11.4852 26.8645 11.4355 26.7445C11.3857 26.6245 11.3727 26.4924 11.3981 26.365C11.4234 26.2375 11.486 26.1205 11.5778 26.0286C11.6697 25.9368 11.7867 25.8742 11.9142 25.8489C12.0416 25.8235 12.1736 25.8365 12.2937 25.8863C12.4137 25.936 12.5163 26.0202 12.5885 26.1282C12.6606 26.2362 12.6992 26.3632 12.6992 26.4931C12.6992 26.6673 12.63 26.8344 12.5068 26.9576C12.3836 27.0808 12.2165 27.15 12.0423 27.15Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M20.1435 25.0249V24.044C20.1417 23.8525 20.078 23.6667 19.9618 23.5145C19.8456 23.3623 19.6833 23.2517 19.4991 23.1995L12.4802 21.4437V20.5814H12.9181C13.0343 20.5814 13.1457 20.5352 13.2278 20.4531C13.3099 20.371 13.356 20.2596 13.356 20.1435C13.356 20.0273 13.3099 19.9159 13.2278 19.8338C13.1457 19.7517 13.0343 19.7056 12.9181 19.7056H12.4802V18.3918H11.6044V21.389L4.34792 23.2046C4.16759 23.2592 4.00952 23.3702 3.8969 23.5213C3.78428 23.6724 3.72304 23.8555 3.72217 24.044V25.0249C3.36869 25.1301 3.06495 25.3592 2.86664 25.6701C2.66833 25.981 2.58874 26.353 2.64245 26.7179C2.69616 27.0828 2.87959 27.4161 3.15909 27.6567C3.43859 27.8973 3.79545 28.0291 4.16425 28.0279C4.53305 28.0267 4.88907 27.8927 5.16705 27.6503C5.44503 27.408 5.62635 27.0735 5.67776 26.7083C5.72918 26.3431 5.64724 25.9717 5.44698 25.662C5.24671 25.3523 4.94154 25.1251 4.5874 25.0222L4.57916 24.0492L11.6044 22.2919V24.1264C11.8937 24.0706 12.191 24.0706 12.4802 24.1264V22.3466L19.2677 24.044V25.0249C18.9149 25.1301 18.6118 25.3588 18.4137 25.6691C18.2156 25.9794 18.1359 26.3507 18.189 26.715C18.2422 27.0793 18.4247 27.4123 18.7032 27.6531C18.9816 27.8938 19.3375 28.0264 19.7056 28.0264C20.0738 28.0264 20.4296 27.8938 20.7081 27.6531C20.9866 27.4123 21.1691 27.0793 21.2222 26.715C21.2754 26.3507 21.1956 25.9794 20.9976 25.6691C20.7995 25.3588 20.4963 25.1301 20.1435 25.0249V25.0249ZM4.81693 26.493C4.81693 26.623 4.77841 26.75 4.70623 26.858C4.63406 26.966 4.53147 27.0502 4.41144 27.0999C4.29142 27.1496 4.15935 27.1626 4.03193 27.1373C3.90451 27.1119 3.78747 27.0494 3.69561 26.9575C3.60375 26.8657 3.54119 26.7486 3.51584 26.6212C3.4905 26.4938 3.50351 26.3617 3.55322 26.2417C3.60294 26.1217 3.68713 26.0191 3.79515 25.9469C3.90317 25.8747 4.03016 25.8362 4.16008 25.8362C4.33429 25.8362 4.50136 25.9054 4.62454 26.0286C4.74773 26.1518 4.81693 26.3188 4.81693 26.493ZM19.7056 27.1499C19.5757 27.1499 19.4487 27.1114 19.3407 27.0392C19.2327 26.967 19.1485 26.8644 19.0988 26.7444C19.0491 26.6244 19.0361 26.4923 19.0614 26.3649C19.0867 26.2375 19.1493 26.1204 19.2412 26.0286C19.333 25.9367 19.4501 25.8742 19.5775 25.8488C19.7049 25.8235 19.837 25.8365 19.957 25.8862C20.077 25.9359 20.1796 26.0201 20.2518 26.1281C20.324 26.2361 20.3625 26.3631 20.3625 26.493C20.3625 26.6673 20.2933 26.8343 20.1701 26.9575C20.0469 27.0807 19.8798 27.1499 19.7056 27.1499Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M3.06532 15.9835V15.1077H2.62742C2.51131 15.1076 2.4 15.0614 2.3179 14.9793C2.2358 14.8972 2.18963 14.7859 2.18951 14.6698V9.41493H3.06532C3.18146 9.41493 3.29284 9.36879 3.37496 9.28667C3.45709 9.20455 3.50322 9.09317 3.50322 8.97703C3.50322 8.86089 3.45709 8.7495 3.37496 8.66738C3.29284 8.58526 3.18146 8.53912 3.06532 8.53912H0.437903C0.321764 8.53912 0.210382 8.58526 0.128259 8.66738C0.0461362 8.7495 0 8.86089 0 8.97703C0 9.09317 0.0461362 9.20455 0.128259 9.28667C0.210382 9.36879 0.321764 9.41493 0.437903 9.41493H1.31371V14.6698C1.31409 15.0181 1.45262 15.352 1.6989 15.5983C1.94519 15.8446 2.27912 15.9831 2.62742 15.9835H3.06532Z\"\n fill=\"#FF9800\"\n />\n <path\n d=\"M5.25487 17.5161H18.8299C19.1782 17.5157 19.5121 17.3772 19.7584 17.1309C20.0047 16.8846 20.1432 16.5507 20.1436 16.2024V14.8887C20.1432 14.5404 20.0047 14.2064 19.7584 13.9601C19.5121 13.7139 19.1782 13.5753 18.8299 13.575H5.25487C4.90657 13.5753 4.57264 13.7139 4.32636 13.9601C4.08007 14.2064 3.94154 14.5404 3.94116 14.8887V16.2024C3.94154 16.5507 4.08007 16.8846 4.32636 17.1309C4.57264 17.3772 4.90657 17.5157 5.25487 17.5161ZM4.81697 14.8887C4.81708 14.7726 4.86326 14.6612 4.94535 14.5791C5.02745 14.497 5.13877 14.4509 5.25487 14.4508H18.8299C18.946 14.4509 19.0573 14.497 19.1394 14.5791C19.2215 14.6612 19.2676 14.7726 19.2678 14.8887V16.2024C19.2676 16.3185 19.2215 16.4298 19.1394 16.5119C19.0573 16.594 18.946 16.6402 18.8299 16.6403H5.25487C5.13877 16.6402 5.02745 16.594 4.94535 16.5119C4.86326 16.4298 4.81708 16.3185 4.81697 16.2024V14.8887Z\"\n fill=\"#FF9800\"\n />\n </svg>\n </Tooltip>\n );\n};\n","import { Paper } from \"@material-ui/core\";\nimport MaterialTable from '@material-table/core';\nimport moment from \"moment\";\nimport React from \"react\";\n//import { CultureMatch } from \"./CultureMatch\";\n//import { JobZone } from \"./JobZone\";\nimport { OccupationalArea } from \"./OccupationalArea\";\nimport { OccupationalMatch } from \"./OccupationalMatch\";\nimport { SkillsIcon, InterestsIcon, StylesIcon } from \"./icons\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport ClearIcon from \"@material-ui/icons/Clear\";\nimport _ from \"lodash\";\nimport config from \"../../../config\";\n\nconst columnDefinitions = ({ isSkillzBackpack }) => [\n /* {\n title: \"Occupational Match\",\n render: render: (job) => <OccupationalMatch {...job} />,\n disableClick: isSkillzBackpack ? true : false,\n },*/\n /* {\n title: \"Occupation Accessibility\",\n render: (job) => <JobZone {...job} />,\n disableClick: true,\n },*/\n /* {\n title: \"Personality / Culture Match\",\n render: (props) => <CultureMatch {...props} />,\n },*/\n\n {\n title: \"Job Title\",\n field: \"jobTitle\",\n render: ({ jobTitle }) => (\n <span>\n <b>{jobTitle}</b>\n </span>\n ),\n },\n {\n title: <SkillsIcon />,\n field: \"jobTitle\",\n render: ({ score_bp }) => <OccupationalMatch score_bp={score_bp} />,\n customSort: (a, b) => {return a.score_bp - b.score_bp}\n },\n {\n title: <InterestsIcon />,\n field: \"jobTitle\",\n render: ({ score_interest }) => (\n <OccupationalMatch score_bp={score_interest} />\n ),\n customSort: (a, b) => {return a.score_interest - b.score_interest}\n },\n {\n title: <StylesIcon />,\n field: \"jobTitle\",\n render: ({ score_styles }) => <OccupationalMatch score_bp={score_styles} />,\n customSort: (a, b) => {return a.score_styles - b.score_styles}\n\n },\n {\n title: \"Quals\",\n field: \"jobTitle\",\n render: ({ score_quals }) => {\n return score_quals === true ? (\n <div style={{ textAlign: \"center\" }}>\n <DoneIcon />\n </div>\n ) : (\n <div style={{ textAlign: \"center\" }}>\n <ClearIcon style={{ margin: \"auto\" }} />\n </div>\n );\n },\n },\n /* {\n title: \"Experience\",\n field: \"jobTitle\",\n render: ({ jobTitle }) => <span>TBD</span>,\n },*/\n {\n title: \"Occupational Area\",\n field: \"high_occupation\",\n render: (fields) => <OccupationalArea {...fields} />,\n },\n { \n title: \"Location\",\n field: \"original_location\",\n customSort: (a, b) => {return a.distance_in_miles - b.distance_in_miles}\n },\n { title: \"Company\", field: \"employerName\" },\n {\n title: \"Posted\",\n field: \"postedDate\",\n render: ({ postedDate }) => (\n <span>{moment.unix(postedDate).format(\"DD/MM/YYYY\")}</span>\n ),\n },\n {\n title: \"Minimum Salary\",\n field: \"annual_salary_min\",\n render: ({ annual_salary_min, salary_type }) => {\n if (annual_salary_min === 0) {\n return <span>Salary Unknown</span>;\n }\n let salaryExtension = \"\"\n if(salary_type){\n if(salary_type === \"annual\"){\n salaryExtension = \" per annum\"\n }\n else if(salary_type === \"hourly\"){\n salaryExtension = \" per hour\"\n }\n else if(salary_type === \"daily\"){\n salaryExtension = \" per day\"\n }\n }\n return (\n <span>\n {new Intl.NumberFormat(\"en-gb\", {\n style: \"currency\",\n currency: config.currency,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }).format(annual_salary_min) + salaryExtension}\n </span>\n );\n },\n },\n {\n title: \"Contract Type\",\n render: ({ job_contract }) => (\n <span>\n {job_contract\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")}\n </span>\n ),\n },\n];\n\nexport const JobRecommendationsTable = (props) =>{\n let {\n isLoading,\n onRowClick,\n jobRecommendations,\n optionalMessageWhenEmpty = \"There are no suitable jobs based on the above criteria. Please broaden the search\",\n jobMatchType\n } = props;\n\n const [selectedRow, setSelectedRow] = React.useState(null);\n\n\n let data = jobRecommendations.filter((job) => job.jobTitle !== \"unknown\");\n if (jobMatchType === \"styles\"){\n data = _.orderBy(data, [\"score_styles\"], \"desc\");\n } else if (jobMatchType === \"interest\"){\n data = _.orderBy(data, [\"score_interest\"], \"desc\");\n } else {\n data = _.orderBy(data, [\"score_bp\"], \"desc\");\n }\n\n \n return <MaterialTable\n isLoading={isLoading}\n title=\"Manage Candidates\"\n columns={columnDefinitions({\n isSkillzBackpack: jobMatchType === \"skills_backpack\",\n })}\n data={data}\n // Disable the pagination\n components={{\n Container: (props) => <Paper {...props} elevation={0} />,\n Toolbar: () => null,\n }}\n options={{\n pageSize: 20,\n headerStyle: { paddingRight: 0, textAlign: \"center\" },\n rowStyle: rowData => ({\n backgroundColor: (selectedRow === rowData.tableData.id) ? '#EEE' : '#FFF'\n })\n }}\n onRowClick={(evt, selectedRow) => {\n onRowClick(evt, selectedRow);\n setSelectedRow(selectedRow.tableData.id)\n }}\n localization={{\n body: {\n emptyDataSourceMessage: optionalMessageWhenEmpty,\n },\n }}\n />\n};\n","import { Grid, Typography } from \"@material-ui/core\";\nimport { API, Cache } from \"aws-amplify\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport ReactSelect from \"react-select\";\nimport { SnackbarProvider } from 'notistack';\nimport { bindActionCreators } from \"redux\";\nimport {\n fetchCandidateDetails,\n fetchCandidates,\n inviteToVacancy\n} from \"../../../actions/candidates_actions\";\nimport config from \"../../../config\";\nimport JobListingView from \"./JobListingView\";\nimport { JobRecommendationsTable } from \"./JobRecommendationsTable\";\nimport {EntitiesAutoComplete} from \"../../Common/EntitiesAutoComplete\"\nimport _ from \"lodash\";\n\nconst formatToSterling = (amount) =>\n new Intl.NumberFormat(\"en-gb\", {\n style: \"currency\",\n currency: config.currency,\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n }).format(amount);\n\nconst createSalaryOptions = (salaryInterests) => {\n const availableSalaryOptions = [0, 15000, 20000, 25000, 30000, 50000]\n return availableSalaryOptions\n .map(formatToSterling)\n .map((salary) => ({ label: (salary === \"£0\" || salary === \"€0\" ? \"No preference\" : salary), value: salary }))\n\n};\n\nconst contractTypeOptions = [\"Full Time\", \"Part Time\", \"Either\"].map((contract_type) => ({\n label: contract_type,\n value: contract_type,\n}));\n\nclass JobResults extends Component {\n constructor(props) {\n super(props);\n const { candidate: cachedCandidate, job_match_type: cachedJobMatchType } =\n Cache.getItem(\"currentSkillzminer\") || {};\n this.state = {\n candidate: props.candidate || cachedCandidate || null,\n jobRecommendations: null,\n isPending: false,\n selectedJob: null,\n job_match_type: cachedJobMatchType || props.jobMatchType || props.job_match_type || \"previous\",\n salary_range: config.distanceName === \"miles\" ? \"£0\" : \"€0\",\n contract_type: \"Either\",\n travel_distance: config.distanceName === \"miles\" ? \"50\" : \"75\",\n scroll: false\n };\n }\n\n onJobMatchTypeChange = (value) => {\n const lowerValue = value.toLowerCase();\n if (lowerValue !== this.state.job_match_type) {\n this.setState({ job_match_type: lowerValue }, async () => {\n await this.fetchJobRecommendations(lowerValue);\n });\n }\n };\n\n selectOnChangeHandler = (field) => ({ value }) => {\n if (value !== this.state[field]) {\n this.setState(\n (previousState) => ({\n ...previousState,\n [field]: value,\n }),\n async () => {\n await this.fetchJobRecommendations(value);\n }\n );\n }\n };\n\n componentDidMount = async () => {\n if (this.state.job_match_type) {\n await this.fetchJobRecommendations();\n }\n };\n\n componentDidUpdate= async () => {\n \n if(this.props.job_match_type && this.state.job_match_type !== this.props.job_match_type){\n this.setState({ job_match_type: this.props.job_match_type }, () => this.fetchJobRecommendations()\n );\n this.props.set_job_match_type(null)\n };\n };\n\n\n fetchJobRecommendations = async () => {\n const { job_match_type, salary_range, contract_type, travel_distance } = this.state;\n // return;\n // TODO Move this to actions? (endpoint is different)\n this.setState({ isPending: true });\n \n const {\n candidates: { \n selectedCandidateData: selectedCandidate = {},\n desired_occupations,\n interest_occupations,\n past_occupations,\n skills_backpack_occupations,\n styles_occupations\n },\n } = this.props;\n\n \n\n const returnMappedResults = (occ1, occ2, candidate) => {\n let mappedResults = _.map(occ1, (index) => {\n let f = _.filter(occ2, (occ) => {\n if (occ.occupation === index.occupation){\n return occ;\n }\n });\n\n if (f && f.length > 0){\n f = f[0];\n }\n\n if (f && f.ONET_styles){ \n _.each(f.ONET_styles, (style, key) => {\n switch(key){\n case \"Commitment\":\n f.COMM = style;\n break;\n case \"Adaptability\":\n f.ADY = style;\n break;\n case \"Confidence\":\n f.CONF = style;\n break;\n case \"Control\":\n f.CONT = style;\n break;\n case \"Accuracy\":\n f.PSA = style;\n break;\n case \"Responsiveness to feedback\":\n f.RTF = style;\n break;\n case \"Complexity\":\n f.SPC = style;\n break;\n default:\n break;\n }\n });\n }\n if (f && f.ONET_interests){\n _.each(f.ONET_interests, (interest, key) => {\n f[key.toLowerCase()] = interest;\n });\n }\n\n if (candidate.qualifications && candidate.qualifications.category){\n if (f.ONET_required_level_education > candidate.qualifications.category){\n f.score_quals = false;\n } else {\n f.score_quals = true;\n }\n } else {\n f.score_quals = false;\n }\n let results = {\n ...f,\n ...index\n };\n return results;\n });\n return _.orderBy(mappedResults, [({ provider }) => provider === 'skillzMiner'], [\"desc\"]);\n }\n\n const {\n provider,\n latestAssessmentResult,\n occupations,\n desiredOccupations,\n desiredOccupationsExtended,\n qualifications,\n desiredExp,\n occupationsExtended,\n skills_names,\n occupationsOriginal,\n desiredOccupationsOriginal,\n userID\n } = _.cloneDeep(selectedCandidate);\n\n if (!latestAssessmentResult) {\n this.setState({ jobRecommendations: [], isPending: false });\n return;\n }\n if (salary_range) {\n latestAssessmentResult.interests.salary = [].concat(salary_range);\n }\n if (contract_type) {\n latestAssessmentResult.interests.contract = [].concat(contract_type);\n }\n if (travel_distance) {\n latestAssessmentResult.interests.locationRadius = [].concat(travel_distance);\n }\n\n\n try {\n switch (job_match_type) {\n case \"previous\": {\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n desiredExp,\n \"desired_occupations\": [],\n \"styles_occupations\" : [],\n \"interest_occupations\" : [],\n \"skills_backpack_occupations\" : [],\n qualifications,\n skills_names,\n past_occupations\n };\n if (desiredExp) {\n Object.assign(payload, { desiredExp, desiredOccupations, desiredOccupationsExtended });\n }\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n });\n\n jobs.past_occupations = returnMappedResults(jobs.past_occupations, past_occupations, selectedCandidate);\n this.setState({ jobRecommendations: jobs.past_occupations, isPending: false });\n break;\n }\n case \"preferred\": {\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n desiredExp,\n desired_occupations,\n \"styles_occupations\" : [],\n \"interest_occupations\" : [],\n \"skills_backpack_occupations\" : [],\n qualifications,\n skills_names,\n \"past_occupations\": []\n };\n if (desiredExp) {\n Object.assign(payload, { desiredExp, desiredOccupations, desiredOccupationsExtended });\n }\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n });\n\n jobs.desired_occupations = returnMappedResults(jobs.desired_occupations, desired_occupations,selectedCandidate);\n this.setState({ \"jobRecommendations\": jobs.desired_occupations, isPending: false });\n break;\n }\n case \"skills\": {\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n desiredExp,\n \"desired_occupations\": [],\n \"styles_occupations\" : [],\n \"interest_occupations\" : [],\n skills_backpack_occupations,\n qualifications,\n skills_names,\n \"past_occupations\": []\n };\n if (desiredExp) {\n Object.assign(payload, { desiredExp, desiredOccupations, desiredOccupationsExtended });\n }\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n });\n\n jobs.skills_backpack_occupations = returnMappedResults(jobs.skills_backpack_occupations, skills_backpack_occupations, selectedCandidate);\n this.setState({ \"jobRecommendations\": jobs.skills_backpack_occupations, isPending: false });\n break;\n }\n case \"styles\": {\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n desiredExp,\n \"desired_occupations\": [],\n styles_occupations,\n \"interest_occupations\" : [],\n \"skills_backpack_occupations\": [],\n qualifications,\n skills_names,\n \"past_occupations\": []\n };\n if (desiredExp) {\n Object.assign(payload, { desiredExp, desiredOccupations, desiredOccupationsExtended });\n }\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n });\n\n jobs.styles_occupations = returnMappedResults(jobs.styles_occupations, styles_occupations, selectedCandidate);\n this.setState({ \"jobRecommendations\": jobs.styles_occupations, isPending: false });\n\n break;\n }\n case \"interests\": {\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n \"desired_occupations\": [],\n \"styles_occupations\": [],\n interest_occupations,\n \"skills_backpack_occupations\": [],\n qualifications,\n skills_names,\n \"past_occupations\": []\n };\n\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n });\n\n jobs.interest_occupations = returnMappedResults(jobs.interest_occupations, interest_occupations, selectedCandidate);\n this.setState({ \"jobRecommendations\": jobs.interest_occupations, isPending: false });\n break;\n }\n case \"jobsnearme\": {\n this.setState({ isPending: false });\n break;\n const payload = {\n provider,\n latestAssessmentResult,\n occupations,\n occupationsExtended,\n desiredExp,\n qualifications,\n desiredOccupations,\n calculateQualifications: false,\n skills_names\n };\n \n if (payload.latestAssessmentResult.interests){\n payload.latestAssessmentResult.interests.salary = [\"0\"];\n }\n \n if (payload.latestAssessmentResult.interests){\n payload.latestAssessmentResult.interests.contract = [\"Either\"];\n }\n\n\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/jobs_near_me\", {\n body: {\n data: payload,\n },\n });\n this.setState({ \"jobRecommendations\": _.orderBy(jobs, [({ provider }) => provider === 'skillzMiner'], [\"desc\"]), isPending: false });\n break;\n }\n default: {\n let matchedOcc = false\n for (const value of [desired_occupations, interest_occupations, past_occupations, skills_backpack_occupations, styles_occupations]){\n for (const occ of value){\n if (occ.occupation === job_match_type){\n matchedOcc = occ\n break\n } \n } \n if (matchedOcc){\n break\n }\n }\n\n if (!matchedOcc){\n let occPayload = {\n latestAssessmentResult,\n desiredOccupations,\n occupationsExtended,\n occupations,\n desiredExp,\n qualifications,\n calculateQualifications: false,\n skills_names,\n userID,\n occupationsOriginal,\n desiredOccupationsOriginal,\n };\n for (const idx in occPayload.desiredExp) {\n if (occPayload.desiredExp[idx] === true){\n occPayload.desiredExp[idx] = false\n occPayload.occupations.push(occPayload.desiredOccupations[idx])\n occPayload.occupationsExtended.push(desiredOccupationsExtended[idx])\n occPayload.occupationsOriginal.push(desiredOccupationsOriginal[idx])\n }\n }\n occPayload.desiredOccupations = [job_match_type]\n occPayload.desiredOccupationsOriginal = [job_match_type]\n const new_jobs_cats = await API.post(\n config.API_NAME,\n \"/jobs/query/all_occupations\",\n {\n body: {\n data: occPayload,\n },\n }\n );\n if(new_jobs_cats && new_jobs_cats.jobs){\n for (const occ of new_jobs_cats.jobs.desired_occupations){\n if (occ.occupation === job_match_type){\n matchedOcc = occ\n break\n }\n }\n }\n }\n\n if (matchedOcc){\n const payload = {\n provider,\n latestAssessmentResult,\n occupationsExtended,\n occupations,\n \"desiredExp\": [false],\n \"desired_occupations\": [matchedOcc],\n \"styles_occupations\" : [],\n \"interest_occupations\" : [],\n \"skills_backpack_occupations\" : [],\n qualifications,\n skills_names,\n \"past_occupations\": []\n };\n const { jobs } = await API.post(config.API_NAME, \"/jobs/query/all_jobs\", {\n body: {\n data: payload,\n },\n }); \n jobs.desired_occupations = returnMappedResults(jobs.desired_occupations, [matchedOcc], selectedCandidate);\n this.setState({ \"jobRecommendations\": _.orderBy(jobs.desired_occupations, [({ provider }) => provider === 'skillzMiner'], [\"desc\"]), isPending: false });\n break;\n } \n }\n }\n } catch (error) {\n this.setState({ isPending: false, jobRecommendations: [] });\n }\n return;\n };\n\n onCandidateChange = async ({ value: candidate }) => {\n this.setState({\n job_match_type: \"inga\",\n candidate,\n });\n try {\n const {\n candidates: { candidates = [] },\n } = this.props;\n const selectedCandidate = candidates.find(\n ({ userID }) => userID === candidate\n );\n if (selectedCandidate) {\n await this.props.fetchCandidateDetails(selectedCandidate);\n }\n } catch (error) {\n console.log(\"something went wrong!\", error);\n }\n };\n\n clearCurrentSelections = () => {\n this.setState({\n jobRecommendations: [],\n candidate: null,\n });\n };\n\n render() {\n const {\n candidates: { selectedCandidateData = {} },\n } = this.props;\n\n const {\n job_match_type,\n isPending,\n candidate,\n salary_range,\n contract_type,\n travel_distance,\n } = this.state;\n\n let ref = React.createRef(null);\n\n\n // setTimeout(() => {\n // if (ref && ref.current && this.state.scroll) {\n // ref.current.scrollIntoView();\n // this.setState({scroll: false});\n // } \n // }, 10);\n\n\n const candidateHasLatestAssessment =\n selectedCandidateData && !!selectedCandidateData.latestAssessmentResult;\n if (!candidateHasLatestAssessment) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <Typography variant=\"subtitle2\">\n This candidate has not completed the assessment yet.\n </Typography>\n </Grid>\n </Grid>\n );\n }\n const {\n latestAssessmentResult: {\n interests: { salary = [], contract = [], locationRadius = [] } = {},\n } = {},\n } = selectedCandidateData;\n\n const salaryRangeOptions = createSalaryOptions(\n salary.map((salary) => Number(salary.replace(/[^0-9.]+/g, \"\")))\n );\n\n const locationRadiusOptions = Array.from(\n new Set(config.distanceName === \"miles\" ? [10, 20, 30, 50, 500] : [15, 20, 30, 50, 75, 500]))\n .map((radius) => ({\n value: radius.toString(),\n label: (radius === 500 ? \"No limit\" : `up to ${radius} ${config.distanceName}`),\n }))\n\n\n const makeToolBar = () => {\n return <div style={{marginTop:15}}>\n <Grid item xs>\n <Grid\n container\n direction=\"row\"\n alignItems=\"center\"\n spacing={5}\n alignContent=\"center\"\n style={{ paddingBottom: \"1em\" }}\n >\n <Grid item xs={4} style={{color:\"black\"}}>\n <EntitiesAutoComplete\n size={\"large\"}\n onSelect={this.onJobMatchTypeChange}\n placeholder={\"Previous\"}\n useJobMatchOption={true}\n disabled={\n isPending ||\n !candidateHasLatestAssessment ||\n !candidate\n }\n />\n {/* <WindowedSelect\n styles={{ container: (base) => ({ ...base, zIndex: 999 }) }} // material-table header has higher z-index\n value={\n job_match_type\n ? jobMatchTypeOptions[1].options.find(\n ({ value }) => value === job_match_type\n )\n : jobMatchTypeOptions[0].options.find(\n ({ value }) => value === job_match_type\n )\n }\n onChange={this.onJobMatchTypeChange}\n placeholder=\"Previous\"\n isSearchable\n options={jobMatchTypeOptions}\n \n /> */}\n </Grid>\n <Grid item xs={2}>\n <ReactSelect\n styles={{ container: (base) => ({ ...base, zIndex: 999 }) }}\n value={\n salary_range\n ? salaryRangeOptions.find(\n ({ value }) => value === salary_range\n )\n : salaryRangeOptions.find(\n ({ value }) => value === salary[0]\n ) || salaryRangeOptions[0]\n }\n onChange={this.selectOnChangeHandler(\"salary_range\")}\n placeholder=\"Salary Range\"\n isSearchable\n options={salaryRangeOptions}\n isDisabled={\n isPending ||\n !candidateHasLatestAssessment ||\n !candidate ||\n job_match_type === \"jobsnearme\"\n }\n />\n </Grid>\n <Grid item xs={2}>\n <ReactSelect\n styles={{ container: (base) => ({ ...base, zIndex: 999 }) }}\n value={\n contract_type\n ? contractTypeOptions.find(\n ({ value }) => value === contract_type\n )\n : contractTypeOptions.find(\n ({ value }) => value === contract[0]\n ) || contractTypeOptions[0]\n }\n onChange={this.selectOnChangeHandler(\"contract_type\")}\n placeholder=\"Contract Type\"\n isSearchable\n options={contractTypeOptions}\n isDisabled={\n isPending ||\n !candidateHasLatestAssessment ||\n !candidate ||\n job_match_type === \"jobsnearme\"\n }\n />\n </Grid>\n <Grid item xs={2}>\n <ReactSelect\n styles={{ container: (base) => ({ ...base, zIndex: 999 }) }}\n value={\n travel_distance\n ? locationRadiusOptions.find(\n ({ value }) => value === travel_distance\n )\n : locationRadiusOptions.find(\n ({ value }) => value === locationRadius[0]\n ) || locationRadiusOptions[0]\n }\n onChange={this.selectOnChangeHandler(\"travel_distance\")}\n placeholder=\"Maximum Travel Distance\"\n isSearchable\n options={locationRadiusOptions}\n isDisabled={\n isPending ||\n !candidateHasLatestAssessment ||\n !candidate ||\n job_match_type === \"jobsnearme\"\n }\n />\n </Grid>\n </Grid>\n </Grid>\n </div>\n }\n\n return (\n <Grid container direction=\"column\">\n <Grid item xs>\n <div ref={ref}>\n {this.state.selectedJob && (\n <SnackbarProvider>\n <JobListingView\n onDismiss={() => this.setState({ selectedJob: null })}\n job={this.state.selectedJob}\n candidate={selectedCandidateData}\n onInviteToVacancy={(userID, vacancy) => {\n this.props.inviteToVacancy(userID, vacancy)\n }}\n />\n </SnackbarProvider>\n )}\n </div>\n {makeToolBar()}\n <JobRecommendationsTable\n jobMatchType={job_match_type}\n jobRecommendations={(this.state.jobRecommendations || []).filter(\n (job) => {\n if (this.filterJobs) {\n let title = this.filterJobs;\n this.filterJobs = null;\n return (\n job.low_occupation.toLowerCase() === title.toLowerCase()\n );\n }\n\n return true;\n }\n )}\n isLoading={this.state.isPending}\n onRowClick={(_, data_) => {\n this.setState({ selectedJob: data_, scroll: true })\n }}\n optionalMessageWhenEmpty={\n selectedCandidateData &&\n !selectedCandidateData.latestAssessmentResult\n ? \"This candidate has not completed the assessment yet.\"\n : undefined\n }\n />\n </Grid>\n </Grid>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators({ fetchCandidates, fetchCandidateDetails, inviteToVacancy }, dispatch),\n dispatch,\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(JobResults));\n","import {\n Grid,\n LinearProgress,\n Typography,\n Button,\n withStyles\n} from \"@material-ui/core\";\nimport classnames from \"classnames\";\nimport React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nconst styles = (theme) => ({\n itemtitle: {\n fontSize: 12,\n cursor: \"pointer\"\n },\n inactiveTitle: {\n color: \"#9f9f9f\",\n opacity: 0.8\n },\n percentageGrid: {\n paddingLeft:10, \n paddingRight:10, \n marginBottom:5, \n marginRight: 20, \n backgroundColor:\"#ff6505\", \n borderRadius:\"5px\" \n }\n});\n\nconst BackpackMatchesComponent = (props) => {\n const {\n classes,\n candidates: {\n selectedCandidateData: { occupationBlacklist },\n skills_backpack_occupations,\n styles_occupations,\n interest_occupations\n },\n onMatchClick,\n onJobClick,\n } = props;\n\n const [activeMatch, setActiveMatch] = useState(\"previous\");\n\n const matchListMap = {\n previous: skills_backpack_occupations,\n interests: interest_occupations,\n styles: styles_occupations,\n };\n\n if (!skills_backpack_occupations) {\n return null;\n }\n\n var list = {};\n\n if (matchListMap && matchListMap[activeMatch] && matchListMap[activeMatch]) {\n matchListMap[activeMatch].forEach((item) => {\n let title = item.occupation;\n let similarity = 0\n if (activeMatch === \"previous\") {\n similarity = item.score_bp\n }\n else if (activeMatch === \"styles\"){\n similarity = item.score_styles\n }\n else{\n similarity = item.score_interest\n }\n\n list[title] = similarity;\n });\n }\n return (\n <Grid container>\n <Grid item xs={5}>\n <div>\n <Button\n variant=\"contained\"\n className={classnames(\n classes.itemtitle,\n activeMatch !== \"previous\" ? classes.inactiveTitle : undefined\n )}\n onClick={() => setActiveMatch(\"previous\")}\n >\n Best Skills Match:\n </Button>\n </div>\n <div>\n <Button\n variant=\"contained\"\n className={classnames(\n classes.itemtitle,\n activeMatch !== \"styles\" ? classes.inactiveTitle : undefined\n )}\n style={{marginTop: 15}}\n onClick={() => setActiveMatch(\"styles\")}\n >\n Best style matches:\n </Button>\n </div> \n <div>\n <Button\n variant=\"contained\"\n className={classnames(\n classes.itemtitle,\n activeMatch !== \"interests\" ? classes.inactiveTitle : undefined\n )}\n style={{marginTop: 15}}\n onClick={() => setActiveMatch(\"interests\")}\n >\n Best interest matches:\n </Button>\n </div>\n </Grid>\n <Grid\n item\n xs\n style={{ height: \"11em\", overflow: \"hidden\", overflowY: \"auto\" }}\n >\n <Grid container direction=\"column\" spacing={1}>\n {Object.keys(list).map((item) => {\n return (\n <Grid item key={item}>\n <Grid\n container\n direction=\"row\"\n justify=\"space-between\"\n alignItems=\"baseline\"\n >\n <Grid item>\n <Typography\n variant=\"subtitle2\"\n component=\"p\"\n style={{ maxWidth: \"30em\", cursor: \"pointer\" }}\n onClick={() => {\n onMatchClick();\n onJobClick(item);\n }}\n >\n <ArrowRightIcon style={{position: \"relative\", float: \"left\"}} /> {item}\n </Typography>\n </Grid>\n <Grid item>\n <Grid\n container\n direction=\"row\"\n justify=\"flex-end\"\n alignItems=\"baseline\"\n >\n {occupationBlacklist.includes(item) && (\n <Grid item className={classes.percentageGrid}>\n <Typography variant=\"subtitle2\" component=\"p\">Candidate not interested</Typography>\n </Grid>\n )}\n <Grid item>\n <Typography\n variant=\"subtitle2\"\n color=\"primary\"\n style={{ textAlign: \"right\", marginTop: -19 }}\n >\n {list[item]}%\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <LinearProgress\n variant=\"buffer\"\n value={list[item]}\n valueBuffer={100}\n style={{ height: 2 }}\n />\n </Grid>\n );\n })}\n </Grid>\n </Grid>\n </Grid>\n );\n};\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {},\n dispatch\n ),\n dispatch,\n };\n}\n\nexport const BackpackMatches = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(BackpackMatchesComponent));\n","import {\n Avatar,\n Backdrop,\n CircularProgress,\n Grid,\n IconButton,\n Menu,\n MenuItem,\n Paper,\n Tooltip,\n} from \"@material-ui/core\";\nimport Badge from \"@material-ui/core/Badge\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport TravelIcon from \"@material-ui/icons/DirectionsCar\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport MoreVertIcon from \"@material-ui/icons/MoreVert\";\nimport PhoneIcon from \"@material-ui/icons/Phone\";\nimport SalaryIcon from \"@material-ui/icons/Payment\";\nimport PlaceIcon from \"@material-ui/icons/Place\";\nimport SchoolIcon from \"@material-ui/icons/School\";\nimport ContractIcon from \"@material-ui/icons/Timelapse\";\nimport EmojiPeopleIcon from '@material-ui/icons/EmojiPeople';\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\nimport AccountCircleIcon from \"@material-ui/icons/AccountCircle\";\nimport { API, Storage } from \"aws-amplify\";\nimport _ from \"lodash\";\nimport React, { Component, useEffect } from \"react\";\nimport Moment from \"react-moment\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport {\n getBestBackpacks,\n getCandidateEngagements,\n getSkillsInfo,\n triggerReassessment,\n addNewSkill,\n editSkillLevel,\n saveSkills,\n createValidationRequest\n} from \"../../../actions/candidates_actions\";\nimport config from \"../../../config\";\nimport { TabControl } from \"../../Common/TabControl\";\nimport JobResults from \"../../Skillzminer/JobResults\";\nimport { BackpackMatches } from \"./BackpackMatches\";\nimport { CandidateEngagement } from \"./CandidateEngagement\";\nimport { CandidateSummaryView } from \"./CandidateSummaryView\";\nimport { OtherAssessments } from \"./OtherAssessments\";\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n },\n\n title: {\n marginLeft: 20,\n marginTop: 10,\n fontSize: 28,\n },\n subtitle: {\n //fontSize: 28\n marginLeft: 20,\n marginTop: 8,\n },\n subtitle2: {\n fontSize: 16,\n marginLeft: 0,\n marginTop: 30,\n marginBottom: 10,\n },\n sectionTitle: {\n marginTop: 40,\n marginBottom: 20,\n },\n center: {\n textAlign: \"center\",\n display: \"block\",\n paddingTop: 14,\n border: \"1px solid #ddd\",\n },\n graphBg: {\n backgroundColor: \"#fbfbfb\",\n border: \"1px solid #e8e8e8\",\n },\n subheading: {\n marginLeft: 20,\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#444\",\n },\n heading: {\n fontWeight: 500,\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(16),\n flexBasis: \"10%\",\n flexShrink: 0,\n },\n heading1: {\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(16),\n marginLeft: 20,\n },\n subheading1: {\n marginTop: 2,\n fontSize: 14,\n fontWeight: 300,\n color: \"#666\",\n marginLeft: 10,\n display: \"inline-block\",\n },\n\n resultText: {\n fontSize: theme.typography.pxToRem(14),\n },\n resultText1: {\n fontSize: theme.typography.pxToRem(14),\n marginTop: 20,\n marginBottom: 20,\n marginLeft: 20,\n },\n divid: {\n marginBottom: 20,\n marginTop: 20,\n },\n reassess: {\n marginLeft: 15,\n marginTop: 15,\n },\n itemre: {\n marginTop: 10,\n marginBottom: 5,\n },\n header: {\n padding: theme.spacing(3),\n },\n avatarlarge: {\n width: theme.spacing(7),\n height: theme.spacing(7),\n marginRight: theme.spacing(1),\n },\n light: {\n color: \"#666\",\n },\n smallicons: {\n color: \"#666\",\n },\n itemtitle: {\n fontSize: 12,\n },\n prog: {\n marginTop: -12,\n },\n itemgrid: {\n minHeight: 22,\n marginBottom: theme.spacing(1),\n },\n name: {\n maxWidth: 400,\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n bottomFooterTitle: {\n marginTop:15\n }\n});\n\nconst OptionsMenu = ({\n candidate,\n portaldetails: { missions, interventions: organizationInterventions },\n auth,\n}) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [showBackdrop, setShowBackdrop] = React.useState(false);\n const [backdropText, setBackdropText] = React.useState(\"Generating PDF...\");\n return (\n <div>\n <Backdrop\n style={{ zIndex: 9999, color: \"#FFF\" }}\n open={showBackdrop}\n onClick={() => {\n if (backdropText.toLowerCase().includes(\"sorry\")) {\n setShowBackdrop(false);\n }\n }}\n >\n <CircularProgress color=\"inherit\" />\n <Typography style={{ marginLeft: \"1em\" }}>{backdropText}</Typography>\n </Backdrop>\n <IconButton\n aria-label=\"more\"\n aria-controls=\"long-menu\"\n aria-haspopup=\"true\"\n onClick={(e) => setAnchorEl(e.currentTarget)}\n >\n <MoreVertIcon />\n </IconButton>\n <Menu\n id=\"long-menu\"\n anchorEl={anchorEl}\n // keepMounted\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n >\n <MenuItem\n onClick={async () => {\n setBackdropText(`Generating PDF...`);\n setShowBackdrop(true);\n let sortedmissions = [];\n _.each(missions, (item) => {\n //GET SCORES\n\n var newItem = {\n ...item,\n };\n\n newItem.score =\n candidate.latestAssessmentResult.results[\n item.dimension\n ].percentage;\n\n //GET STATUS\n if (candidate.missionsAnalytics) {\n _.each(candidate.missionsAnalytics, (mission) => {\n if (mission.missionId === item.id) {\n if (\n newItem.status !== \"Completed\" &&\n mission.event_type === \"missionStart\"\n ) {\n newItem.status = \"Started\";\n }\n\n if (mission.event_type === \"missionAssumedComplete\") {\n newItem.status = \"Completed\";\n }\n }\n });\n }\n sortedmissions.push(newItem);\n });\n\n sortedmissions = _.sortBy(sortedmissions, [\"score\"]);\n delete candidate.style_matches;\n delete candidate.interest_matches;\n\n const payload = {\n sortedmissions,\n ...candidate,\n organizationInterventions,\n };\n\n try {\n await API.post(\n config.API_NAME,\n \"/pdf-service/candidate-pdf\",\n {\n body: { candidate: payload },\n },\n { timeout: 1200000 }\n );\n const s3Url = await Storage.get(\n `candidate-pdf/${candidate.userID}.pdf`,\n {\n level: \"private\",\n }\n );\n const blob = await (await fetch(s3Url, { method: \"get\" })).blob();\n const blobUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = blobUrl;\n anchor.download = `${candidate.fullName}.pdf`;\n anchor.click();\n setShowBackdrop(false);\n } catch (error) {\n console.log(error);\n setBackdropText(\n `Sorry, couldn't generate PDF at the moment. Please try again`\n );\n }\n }}\n >\n Download PDF\n </MenuItem>\n </Menu>\n </div>\n );\n};\n\nexport const CandidateHeader = withStyles(styles)(\n ({\n candidate,\n user,\n triggerReassessment,\n classes,\n getBestBackpacks: fetchSb,\n portaldetails,\n auth,\n onMatchClick,\n onJobClick,\n isInternalMobility,\n }) => {\n useEffect(() => {\n async function getBestBackpacks() {\n if (candidate) {\n try {\n await fetchSb();\n } catch (e) {}\n }\n }\n getBestBackpacks();\n }, [candidate, fetchSb]);\n if (!candidate) {\n return null;\n }\n const {\n lastAuthenticatedAt,\n latestAssessmentCreatedAt,\n assessmentVersion,\n occupations,\n desiredOccupations,\n desiredExp,\n //reassessmentTriggeredAt,\n email,\n phoneNumber,\n phonePreferred,\n locationOriginal,\n // bestBackpack,\n // organisation,\n qualifications,\n latestAssessmentResult,\n candidateStatus,\n allow_reverse_mine,\n provider = \"\",\n internalMobilityLineManager,\n internalMobilityDepartment,\n internalMobilityLocation,\n profileUrl,\n } = candidate;\n const {\n firstName = \"\",\n lastName = \"\",\n fullName = \"\",\n } = user || {}\n\n const imDepartments = (portaldetails.internalDepartments ? portaldetails.internalDepartments : []).reduce((a, v) => ({ ...a, [v.ID]: v}), {});\n const imLineManagers = (portaldetails.internalLineManagers ? portaldetails.internalLineManagers : []).reduce((a, v) => ({ ...a, [v.userID]: v}), {});\n const imLocations = (portaldetails.internalLocations ? portaldetails.internalLocations : []).reduce((a, v) => ({ ...a, [v.ID]: v}), {});\n \n let locationString = isInternalMobility && imLocations[internalMobilityLocation] ? imLocations[internalMobilityLocation].locationName : locationOriginal \n\n const { interests = {} } = latestAssessmentResult || {};\n\n const { name: qualificationsName = \"User not sure or missing\" } =\n qualifications || {};\n\n const { salary = [\"\"], contract = [\"\"] } = interests;\n\n const desiredOccupationList = () => {\n if(isInternalMobility){\n let occupations = [];\n for (const idx in desiredExp) {\n const roleTitle = portaldetails.internalRoles.find((_item) => _item.occupation.includes(desiredOccupations[idx]));\n if(roleTitle){\n occupations.push(roleTitle.roleName)\n }\n else{\n occupations.push(desiredOccupations[idx])\n }\n } \n return [...new Set(occupations)].join(\", \")\n }\n else{\n return candidate.desiredOccupations.join(\", \")\n }\n }\n\n const occupationList = () => {\n\n let occupations = {};\n for (const idx in desiredExp) {\n if (desiredExp[idx]){\n occupations[desiredOccupations[idx]] = desiredOccupations[idx];\n }\n }\n _.each(candidate.occupations, (o) => {\n occupations[o] = o;\n });\n let _text = \"\";\n _.each(Object.keys(occupations), (o, index) => {\n if (Object.keys(occupations).length === (index + 1)){\n _text += o;\n } else {\n _text += o +\", \";\n }\n });\n return _text;\n \n }\n let showStatus = true\n const usersProvider = portaldetails.providers.find((pv) => pv.sort === provider)\n if (usersProvider && usersProvider.viewPermissions && usersProvider.viewPermissions.additionalPersonalInfoCheckbox){\n showStatus = false\n }\n\n return (\n <Paper className={classes.header}>\n <Grid container className={classes.root} spacing={2}>\n <Grid item xs>\n <Grid container className={classes.root} spacing={2}>\n <Grid item>\n {profileUrl ? (\n <Avatar className={classes.avatarlarge} src={profileUrl}/>\n ): (\n <AccountCircleIcon style={{marginRight: 5, width: 60, height:60, color: \"#ff6a14\"}}/>\n )}\n </Grid>\n <Grid item xs>\n <Grid\n container\n direction=\"column\"\n justify=\"flex-start\"\n alignItems=\"stretch\"\n spacing={1}\n >\n <Grid item>\n <Typography variant=\"h4\" className={classes.name}>\n {fullName}\n {isInternalMobility && (\n <IconButton>\n <Tooltip title=\"Rising Start\">\n <StarBorderIcon/>\n </Tooltip>\n </IconButton>\n )}\n </Typography>\n </Grid>\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <Badge\n color=\"primary\"\n variant=\"dot\"\n invisible={phonePreferred}\n >\n <EmailIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Badge>\n </Grid>\n <Grid item>\n {\" \"}\n <Typography variant=\"body2\">{email}</Typography>{\" \"}\n </Grid>\n </Grid>\n </Grid>\n\n {phoneNumber && (\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <Badge\n color=\"primary\"\n variant=\"dot\"\n invisible={!phonePreferred}\n >\n <PhoneIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Badge>\n </Grid>\n <Grid item>\n {\" \"}\n <Typography variant=\"body2\">\n {phoneNumber}\n </Typography>{\" \"}\n </Grid>\n </Grid>\n </Grid>\n )}\n\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <PlaceIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />{\" \"}\n </Grid>\n\n <Grid item>\n <Typography variant=\"body2\">{locationString}</Typography>\n </Grid>\n </Grid>\n </Grid>\n {!isInternalMobility && (\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <TravelIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Grid>\n <Grid item>\n {candidate.latestAssessmentResult ? (\n <Typography variant=\"body2\">\n Maximum travel to work:{\" \"}\n <strong>\n {\n candidate.latestAssessmentResult.interests\n .locationRadius[0]\n }\n </strong>{\" \"}\n {config.distanceName}\n </Typography>\n ) : null}\n </Grid>\n </Grid>\n </Grid>\n )}\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <SalaryIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"body2\">\n Salary: {salary[0]}{\" \"}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <SchoolIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Grid>\n\n <Grid item>\n <Typography\n variant=\"body2\"\n style={{ textTransform: \"capitalize\" }}\n >\n Prior Attainment: {qualificationsName}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <ContractIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"body2\">\n Contract Type: {contract[0]}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n {(showStatus && (\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <EmojiPeopleIcon\n fontSize=\"small\"\n className={classes.smallicons}\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"body2\">\n Status: {(allow_reverse_mine ? \"Looking for work\" : \"Not looking for work\") + \" (\" +candidateStatus +\")\"}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n ))}\n\n {(isInternalMobility && (\n <>\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <Typography variant=\"body2\">\n {\"Department: \" + (imDepartments[internalMobilityDepartment] ? imDepartments[internalMobilityDepartment].departmentName : \"\")}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n <Grid item>\n <Grid container spacing={1}>\n <Grid item>\n <Typography variant=\"body2\">\n {\"Line Manager: \" + (imLineManagers[internalMobilityLineManager] ? (imLineManagers[internalMobilityLineManager].name + \" (\" + imLineManagers[internalMobilityLineManager].email + \")\"): \"\")}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n </>\n ))}\n <Grid item>\n <Typography variant=\"caption\" className={classes.light}>\n {lastAuthenticatedAt ? (\n <>\n Last login:{\" \"}\n <Moment utc fromNow>\n {lastAuthenticatedAt}\n </Moment>\n </>\n ) : (\n <span>Candidate has not logged in yet.</span>\n )}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n\n <Grid item xs={7}>\n <Grid\n container\n direction=\"column\"\n justify=\"flex-start\"\n alignItems=\"stretch\"\n >\n {latestAssessmentCreatedAt ? (\n <Grid\n container\n direction=\"row\"\n className={classes.itemgrid}\n justify=\"center\"\n alignItems=\"center\"\n >\n <Grid item xs={5}>\n <Typography variant=\"button\" className={classes.itemtitle}>\n Assessment:\n </Typography>\n </Grid>\n <Grid item xs>\n <Typography variant=\"body2\">\n <b>{assessmentVersion}</b> assessment completed{\" \"}\n <Moment utc fromNow>\n {candidate.latestAssessmentCreatedAt}\n </Moment>\n </Typography>\n </Grid>\n {window.location.pathname !== \"/print\" ? (\n <Grid item xs style={{ textAlign: \"right\" }}>\n <OptionsMenu\n candidate={candidate}\n portaldetails={portaldetails}\n auth={auth}\n />\n </Grid>\n ) : null}\n </Grid>\n ) : (\n \"\"\n )}\n\n {desiredOccupations ? (\n <Grid container direction=\"row\" className={classes.itemgrid}>\n <Grid item xs={5}>\n <Typography variant=\"button\" className={classes.itemtitle}>\n {isInternalMobility ? \"Current Occupation:\" : \"Preferred Occupations:\"}\n </Typography>\n </Grid>\n <Grid item xs>\n <Typography variant=\"subtitle2\">\n {desiredOccupationList()}\n </Typography>\n </Grid>\n </Grid>\n ) : (\n \"\"\n )}\n\n {occupations ? (\n <Grid container direction=\"row\" className={classes.itemgrid}>\n <Grid item xs={5}>\n <Typography variant=\"button\" className={classes.itemtitle}>\n Past Occupations:\n </Typography>\n </Grid>\n <Grid item xs>\n <Typography variant=\"body2\">\n {occupationList()}\n </Typography>\n </Grid>\n </Grid>\n ) : (\n \"\"\n )}\n\n <BackpackMatches onMatchClick={onMatchClick} onJobClick={onJobClick} />\n {candidate.noJobsNearMe &&\n <Typography className={classes.bottomFooterTitle}>\n Please note: The candidate has no available jobs available based on his current criteria and preferences\n </Typography>\n }\n </Grid>\n </Grid>\n </Grid>\n </Paper>\n );\n }\n);\n\nclass CandidateSimpleDetails extends Component {\n state = { isOnPrintMode: false };\n componentDidMount() {}\n\n render() {\n const {\n classes,\n selectedUserData,\n getBestBackpacks,\n getSkillsInfo,\n getCandidateEngagements,\n addNewSkill,\n editSkillLevel,\n saveSkills,\n createValidationRequest,\n isInternalMobility\n } = this.props;\n const { selectedCandidateData } = this.props.candidates;\n const { missions } = this.props.portaldetails;\n\n var sortedmissions = null;\n\n if (!selectedCandidateData) {\n return (\n <Grid>\n <Grid container item xs justify=\"center\">\n <CircularProgress size={25} thickness={4} />\n </Grid>\n </Grid>\n );\n } else {\n if (\n selectedCandidateData.latestAssessmentResult &&\n selectedCandidateData.latestAssessmentResult.results\n ) {\n sortedmissions = [];\n _.each(missions, (item) => {\n //GET SCORES\n\n var newItem = {\n ...item,\n };\n\n newItem.score =\n selectedCandidateData.latestAssessmentResult.results[\n item.dimension\n ].percentage;\n\n // GET STATUS\n // OLD\n // if (selectedCandidateData.missionsAnalytics) {\n // _.each(selectedCandidateData.missionsAnalytics, (mission) => {\n // if (mission.missionId === item.id) {\n // if (\n // newItem.status !== \"Completed\" &&\n // mission.event_type === \"missionStart\"\n // ) {\n // newItem.status = \"Started\";\n // }\n\n // if (mission.event_type === \"missionAssumedComplete\") {\n // newItem.status = \"Completed\";\n // }\n // }\n // });\n // }\n\n // GET STATUS\n let status = \"Not Started\";\n\n const userMission = Object.values(\n selectedCandidateData.interventions || {}\n ).find(({ sort }) => sort === item.sort);\n\n if (userMission) {\n status = \"Started\";\n if (userMission.status) {\n status = userMission.status;\n }\n }\n newItem.status = status;\n\n sortedmissions.push(newItem);\n });\n\n sortedmissions = _.sortBy(sortedmissions, [\"score\"]);\n }\n }\n return (\n <div className={classes.root} ref={(el) => (this.componentRef = el)}>\n <CandidateHeader\n isInternalMobility={isInternalMobility}\n auth={this.props.auth}\n portaldetails={this.props.portaldetails}\n getBestBackpacks={getBestBackpacks}\n isOnPrintMode={this.state.isOnPrintMode}\n candidate={selectedCandidateData}\n user={selectedUserData}\n triggerReassessment={this.props.triggerReassessment}\n onMatchClick={() =>\n this.setState({ activeTab: \"Jobs & Occupations\" })\n }\n onJobClick={(v) =>\n this.setState({ job_match_type: v })\n }\n />\n <TabControl\n defaultTab={this.state.activeTab}\n onTabChange={() => this.setState({ activeTab: null })}\n panels={[\n {\n label: \"Profile & Progress\",\n render: () => (\n <CandidateSummaryView\n getSkillsInfo={getSkillsInfo}\n isOnPrintMode={this.state.isOnPrintMode}\n candidate={selectedCandidateData}\n user={selectedUserData}\n rewards={this.props.rewards}\n triggerReassessment={this.props.triggerReassessment}\n addNewSkill={addNewSkill}\n editSkillLevel={editSkillLevel}\n saveSkills={saveSkills}\n createValidationRequest={createValidationRequest}\n />\n ),\n },\n {\n label: \"Analytics\",\n render: () => (\n <CandidateEngagement\n getCandidateEngagements={getCandidateEngagements}\n missions={sortedmissions}\n portaldetails={this.props.portaldetails}\n candidate={selectedCandidateData}\n />\n ),\n },\n {\n label: \"Jobs & Occupations\",\n render: () => (\n <JobResults candidate={this.props.selectedUserData.userID} job_match_type={this.state.job_match_type} set_job_match_type={(v) => this.setState({ job_match_type: v })\n } />\n ),\n },\n {\n label: \"Other Assessments\",\n disabled: isInternalMobility ? true : false,\n render: () => <OtherAssessments />,\n },\n {\n label: \"Matched Occupations (Coming Soon)\",\n disabled: isInternalMobility ? true : false,\n render: () => <></>,\n },\n \n { \n label: \"Comparison (Coming Soon)\",\n disabled: isInternalMobility ? false : true,\n render: () => <></>,\n }\n ]}\n />\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n ...bindActionCreators(\n {\n triggerReassessment,\n getBestBackpacks,\n getSkillsInfo,\n getCandidateEngagements,\n addNewSkill,\n editSkillLevel,\n saveSkills,\n createValidationRequest\n },\n dispatch\n ),\n dispatch,\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(CandidateSimpleDetails));\n"],"sourceRoot":""}