{"version":3,"sources":["serviceWorker.js","context/actions.js","context/reducer/index.js","context/store/index.js","api/APIdetails.js","api/ServiceCall.js","components/SnackBars.jsx","components/project/Create.jsx","components/project/Details.jsx","components/project/ProjectView.jsx","components/survey/Survey.jsx","components/survey/Comments.jsx","components/survey/QuestionComment.jsx","components/Authenticator/services/redirectToPingId.js","components/Authenticator/services/getAccessToken/getURLParameter.js","config.js","components/Authenticator/services/getAccessToken/getToken.js","components/Authenticator/services/getAccessToken/getAccessToken.js","components/Authenticator/services/decodeAccessToken.jsx","components/Authenticator/services/validateUser.js","components/Authenticator/services/refreshAuthToken.js","common/useInterval.js","components/Authenticator/TokenRefresher.jsx","common/infoModal.js","components/Authenticator/Authenticator.jsx","components/RAM/DataConfig.js","components/RAM/RiskAssessmentSurveyView.jsx","components/RAM/RiskAssessment.jsx","components/review/Export.js","components/review/ReviewPage.jsx","components/survey/DhcQuestionView.jsx","components/survey/DhcQuestions.jsx","dasboard/ScoreIndicator.jsx","dasboard/ScoreSummary.jsx","components/survey/DhcScoreSummary.jsx","components/survey/DhcSummary.jsx","components/survey/DhcSurvey.jsx","dasboard/ReviewDetails.jsx","dasboard/DashBoard.jsx","components/project/NewProject.jsx","components/project/DataConfig.js","components/project/ExistingProject.jsx","components/project/Home.jsx","components/PrivateRoute.js","components/contact/ContactDetails.jsx","styles/images/pecten.svg","styles/images/dayeeta_roy.jpg","styles/images/lydia_stanier.jpg","components/contact/ContactForm.js","styles/images/chiranjib_sur.jpg","styles/images/paul_gelderblom.jpg","styles/images/tharini_thirukkumar.jpg","styles/images/swiss_cheese.png","styles/images/qa.jpg","components/FAQ/FAQPage.jsx","components/layout/SideNavBar.jsx","components/layout/TopNavBar.jsx","components/survey/EdtQuestion.jsx","components/survey/EdtSurvey.jsx","components/survey/EdtSurveyResult.jsx","components/RAM/RAMSurveyByProject.jsx","components/ErrorPages/PageNotFound.jsx","components/SignOutPage/SignOutPage.jsx","App.jsx","index.jsx"],"names":["Boolean","window","location","hostname","match","SET_Users","SET_LoginUser","SET_Projects","SET_Banner","SET_SelectedProject","SET_TakingSurvey","SET_ProjectDetails","SET_SurveyQuestions","SET_AgreementLevels","SET_SelectedFlag","SET_RAMQuestions","SET_selectedMenuIndex","SET_DHCID","SET_EDT","SET_FAQDetails","SET_InfoModalFlag","SET_EDTAnswers","SET_FORM_DATA","SET_CONTENT_SURVEY_RESULT","SET_SOFTWARE_SURVEY_RESULT","SET_SURVEY_ALL_DATA","SET_RAM_FINAL_DATA","SET_PROJECT_ID","SET_EDT_Survey","SET_EDT_Score","SET_RAM_NEEDED","Reducer","state","action","type","payload","actions","_objectSpread","users","loginUser","project","selectedProject","takingSurvey","listOfImpacts","listOfComplexity","surveyQuestions","ramQuestions","agreementLevels","banner","selectedFlag","selectedMenu","DHCID","EDT","EDTAnswers","infoFlag","FAQList","formData","contentFinalSurveyResult","softwareFinalSurveyResult","surveyAllData","RAMFinalData","newProjectID","EDTSurvey","EDTScore","RAMNeeded","initialState","listOfProjects","validProject","isNewProject","message","vertical","horizontal","show","isLogIn","UserID","EmailID","FirstName","LastName","edtId","score","Context","createContext","Store","_ref","children","_useReducer","useReducer","_useReducer2","_slicedToArray","dispatch","_jsx","Provider","value","BASE_URL","POST_USERS_URL","GET_USERS_URL","GET_PROJECTS_URL","GET_PROJECTOTHERDETAILS_URL","GET_AGREEMENTLEVEL_URL","POST_PROJECTDETAILS_URL","GET_REVIEWDETAILS_URL","GET_QUESTIONS_URL","POST_SURVEYDETAILS_URL","POST_SAVECOMMENTS_URL","GET_GETSURVEYCOMMENTS_URL","GET_RAM_QUESTIONS_URL","POST_RAMDETAILS_URL","GET_RAM_DETAILS_BY_PROJECT_ID_URL","GET_RAM_SURVEY_BY_PROJECT_ID","POST_QUESTION_COMMENT_URL","GET_QUESTION_COMMENT_URL","GET_FAQ_DETAILS","GET_EDT_QUESTIONS","SAVE_EDT_SURVEY","GET_EDT_SURVEY_DETAILS","GET_EDT_SURVEY_RESULTS","GET_EDT_SURVEY_RES_NO_RAM","GET_ALL_EMAIL_IDS","PUT_POC_EMAIL_IDS","PUT_MCDS_ORG","axios","interceptors","request","use","config","headers","Authorization","concat","JSON","parse","localStorage","getItem","access_token","response","error","Promise","reject","getCalls","_getCalls","_asyncToGenerator","_regeneratorRuntime","mark","_callee","methodName","url","params","_args","arguments","wrap","_context","prev","next","length","undefined","get","then","status","data","console","log","catch","err","abrupt","sent","stop","_x","_x2","apply","postCalls","_postCalls","_callee2","_methodName","_args2","_context2","post","_x3","_x4","_x5","SnackBars","props","classes","useStyles","_props$banner","_props$banner2","onClose","_useState","useState","_useState2","open","setOpen","handleClose","_event","reason","_Fragment","Snackbar","autoHideDuration","className","root","Alert","severity","variant","MuiAlert","elevation","makeStyles","_theme","width","theme","button","margin","spacing","fields","display","label","flex","textAlign","select","flexDirection","alignItems","selectLabel","fontSize","marginBottom","marginTop","textButtonAlign","inputField","errorMessage","formControl","selectEmpty","fieldsAlign","flexGrow","footer","marginRight","color","height","icon","borderRadius","boxShadow","backgroundColor","backgroundImage","outline","outlineOffset","background","checkedIcon","content","survey","marginLeft","minWidth","feedbackContent","padding","title","fontWeight","subContent","commentSection","codeVerifier","pingURL","code_challenge","getURLParameter","name","href","replace","results","RegExp","exec","REDIRECT_URL","PINGID_TOKEN_URL","PINGID_AUTH_URL","CLIENT_ID","getToken","clientId","code","details","formBody","property","encodedKey","encodedValue","formBodyObj","result","client_id","grant_type","redirect_uri","code_verifier","Array","hasOwnProperty","push","join","URL","URLSearchParams","Object","entries","forEach","key","searchParams","append","fetch","method","Accept","body","json","error_description","Error","getAccessToken","HAS_CRYPTO","crypto","generateRandom","size","buffer","Uint8Array","getRandomValues","i","Math","random","CHARSET","byteLength","index","bufferToString","deriveChallenge","resolve","subtle","digest","textEncodeLite","base64","fromByteArray","urlSafe","str","buf","ArrayBuffer","bufView","charCodeAt","setupCodeVerifier","_error","navToPing","challenge","setItem","redirectToPingId","decodeAccessToken","rawToken","jwt","decode","complete","_ref$mail","mail","_ref$givenName","givenName","firstName","_ref$sn","sn","lastName","mailId","toLowerCase","validateUser","_user","_response$data","_response$data2$recor","recordset","api","refreshAuthToken","refreshToken","refresh_token","keys","map","useInterval","callback","delay","savedCallback","useRef","useEffect","current","id","setInterval","clearInterval","TokenRefresher","onRefresh","history","useHistory","Date","now","lastActivity","setLastActivity","_useState3","_useState4","showWarning","setShowWarning","_useState5","_useState6","remainingTime","setRemainingTime","tokenDetails","userDetails","refreshIntervalInMillis","expires_in","accessTokenDetails","stringify","accessToken","t0","idleTimeInSeconds","clear","pathname","fromTokenRefresher","SESSION_TIMEOUT_IN_SECONDS","activityHandler","addEventListener","removeEventListener","_jsxs","Button","iconOnly","Cross","onClick","ceil","sentiment","modal","paper","palette","border","Authenticator","_useContext","useContext","_useContext2","userData","setUserData","setError","authTokens","setAuthTokens","validateUserAndUpdate","_ref2","expiresIn","basicUserDetails","authenticate","_ref3","accessTokens","updatedAuthTokens","Loading","checkArr","checkArrForYesOrNo","technicalAssuranceOptions","RiskAssessmentSurveyView","handleChoiceChange","handleSelectionChange","handleChecked","checked","handleCustomFieldData","customContain","errors","Text","bold","QuestionID","Question","SectionID","choiceList","cData","_i","FormField","RadioButton","parseInt","orderId","choiceDes","onChange","e","FunnelProjectID","ProjectName","Name","item","Checkbox","noneoftheabove","bottomLeftHelper","autoComplete","TextInput","placeholder","colorList","RiskAssessment","setCustomContain","setErrors","_React$useState","React","mathematics","computationalScience","dataScience","statistics","appliedPhysics","optimization","machineVision","NLP","AIAutomation","Visualization","_React$useState2","setChecked","defaultColorCode","sId","lId","_useState7","_useState8","formSubmit","setFormSubmit","alertUser","preventDefault","returnValue","unblock","block","confirm","target","event","_defineProperty","selectedChoice","all","loadRAMQuestions","setBanner","recordSet","errorCode","includes","setAnswerData","objData","obj","toString","handleSubmit","RamAnswers","ProjectID","ProjectAreas","url1","response1","_response1$data","_response1$data2$reco","error1","DHCIDreturnValue","EDTID","url2","response2","_url","_params","_response","_response$data3","_response$data4","_response$data4$recor","url3","finalData","found","response3","findIndex","d","Areas","projectId","sectionData","find","k","Answer","colorCode","userID","EdtID","arr","selectedData","test","Number","e1","splice","colors","SnackBar","Card","Heading","InfoCircle","style","justifyContent","borderRight","Modal","showFooter","centered","handleExport","DigitalHeathCheckID","createdDate","projectName","RAMId","reviewRAMDetails","reviewInDetails","shouldExport","toExportCA","toExportSE","toExportRAM","filteredCaDetails","filter","detail","SurveyID","filteredSeDetails","orderedCA","orderBy","orderedSE","QuestionDisplay","AgreementLevel","RequiredLevelofAgreementID","RecommendedLevelofAgreementID","filteredRAM","RAMID","ChoiceDesc","exportName","exportToCSV","fileExtension","caData","seData","ramData","wb","XLSX","book_new","ws1","json_to_sheet","ws2","book_append_sheet","ws3","Export","dhcID","date","ramDetails","ramId","Tooltip","overlay","trigger","Download","localRamID","selectedRAMData","r","textTransform","header","search","filters","flexBasis","reviews","heading","typography","pxToRem","secondaryHeading","text","secondary","verticalAlign","export","column","helper","borderLeft","divider","link","primary","main","textDecoration","media","paddingTop","expand","transform","transition","transitions","create","duration","shortest","expandOpen","avatar","amber","table","cellPadding","borderBottom","withStyles","expanded","MuiAccordion","minHeight","MuiAccordionSummary","MuiAccordionDetails","DhcQuestionView","memo","marks","onSliderChange","handleIconClicks","viewDesc","queId","handleSliderChange","useCallback","handleIconClick","Grid","container","columns","columnGap","paddingBottom","styles","CategoryName","OrderID","infoCircle","placement","Description","Select","allowClear","defaultValue","AgreementValueID","Option","surveyHeading","CA","SE","DhcQuestions","setQueId","setViewDesc","prevData","from","_","contentSurveyResult","softwareSurveyResult","setContentSurveyResult","setSoftwareSurveyResult","_props$incremental","incremental","_props$marks","val","res","AgreementID","_ids$split","split","_ids$split2","Qid","Sid","getResult","inputContent","contentIndex","LevelofAgreementID","setCount","questionId","newArray","_toConsumableArray","selected","ScoreIndicator","Score","_ref$size","ScoreCard","getScoreCard","round","ProgressBar","ScoreSummary","overallSurveyResult","Divider","colour","direction","DhcScoreSummary","complexity","_ref$complexity","ComplexityLevel","ComplexityDescription","impact","_ref$impact","ImpactLevel","ImpactDescription","ComplexityID","ImpactID","ImpactColor","complexityColor","DhcSummary","_ref$contentSurveyRes","_ref$softwareSurveyRe","_ref$selectedProject","listofAgreementLevels","_ref$selectedProject2","PointOfContactEmailID","graphResult","setGraphResult","surveyCalculation","sumOfContentSurvey","reduce","sum","sumOfSoftwareSurvey","percentOfContentQuestions","percentOfSoftwareQuestions","percentOfContentResult","floor","percentOfSoftwareResult","overallSummary","prevState","isNaN","Email","steps","DhcSurvey","activeStep","setActiveStep","count","_useState9","_useState10","_useState11","_useState12","loader","setLoader","_useState13","_useState14","loadAgreementLevels","loadSurveyQuestions","GetFeedbackCount","num","handleNext","_callee3","_ProjectID","params1","_response$data5","_response$data6","_response$data6$recor","_context3","prevActiveStep","Prompt","when","Redirect","to","Stepper","Step","order","step","getStepContent","disabled","getfeedback","loading","getNextText","levelColorCode","Agree","Neutral","Disagree","ReviewDetails","projectid","_details","panel","tableRow","question","agreement","ColorCode","agreementColor","requiredLevelColor","recommendedLevelColor","TR","TD","colSpan","slice","Accordion","iconSet","accordion","AccordionPanel","Table","THead","TH","TBody","row","surveyAllTypes","surveyDHCTypes","DashBoard","descendingOrder","setDescendingOrder","reviewDetails","setReviews","setLoading","edtSurveyResults","setEdtSurveyResults","searchQuery","setSearchQuery","domainFilters","setDomainFilters","filteredReviews","useMemo","filteredResults","projectMCDFilterArray","MCDSOrg","selectedRAMArr","TARequiredOrNot","CreatedDate","selectedDataForRAM","some","initialFilters","chipFilters","setChipFilters","previousReviews","ref","usePrevious","fetchReviews","recordsets","_recordsets","Details","InDetails","RAMDetails","RAMAllDetails","edtUrl","edtResponse","edtResUrl","edtResResponse","updatedReviewDetails","_updatedReviewDetails","sort","a","b","LastModifiedDate","date_created","apiData","fileName","Sheets","SheetNames","excelBuffer","bookType","Blob","FileSaver","prefix","node","Search","Tag","newChipFilters","newFilter","filterIndex","indexOf","newDomainFilters","handleFilterClick","cursor","sortedReviews","isNextSortOrderDescending","CalendarNote","ArrowUp","ArrowDown","allData","toExportEdt","ProjectOpportunityID","project_id","answer","Type","toLocaleDateString","exportAllEdtSurveyResponses","allCAData","allSEData","allRAMData","digitalheathcheckid","toDateString","dateString","getFullYear","getMonth","getDate","handleExportAll","idx","selectedArr","el","exportEdtSurveyResponses","ques","dangerouslySetInnerHTML","__html","ramResults","NewProject","loadProjects","listOfAreas","listOfStages","listOfTeamSizes","edtStages","_state$project","_state$listOfComplexi","_state$listOfImpacts","errorMsg","setErrMsg","detErrorMsg","setDetErrMsg","selectedListOfImpact","setSelectedListOfImpact","selectedStagesList","setSelectedStagesList","FOFlag","setFOFlag","edtFlag","setEdtFlag","_useState15","_useState16","setValue","_useState17","_useState18","_useState19","_useState20","selectedCheckboxes","setSelectedCheckboxes","_useState21","_useState22","_useState23","_useState24","btnDis","setBtnDis","_useState25","_useState26","formHasData","setFormHasData","_useState27","ProjectStage","TeamSize","_useState28","form","setFormData","_useState29","_useState30","allEmailIds","setAllEmailIds","handleClick","isValid","validate","postProjectDetails","validForm","isError","inValid","validateDescription","prevlistOfImpacts","loadDetails","loadEmailIds","_ref4","_listOfImpacts","_listOfComplexity","t","_ref5","_callee4","valueString","McdsCheck","_valueString","_context4","isArray","userName","handleChange","_objectSpread2","_e$target","_useState31","_useState32","searchTerm","setSearchTerm","_useState33","_useState34","selectedEmails","setSelectedEmails","filteredOptions","option","description","mandatory","onBlur","TextArea","resize","rows","itemName","updatedSelection","handleCheckboxChange","_objectSpread5","Desciption","mode","showSearch","onSearch","ExistingProject","onProjectChange","redirectFlag","setRedirectFlag","editMode","setEditMode","editSelectMode","setEditSelectMode","editMCDS","setEditMCDS","editMCDSBtn","setMCDSBtn","selectedMCDS","setSelectedMCDS","selectedMCDSCheck","setSelectedMCDSCheck","_state$selectedProjec","putMCDSOrg","put","putPOCemail","_response$data7","_response$data8$recor","projectItem","gridTemplateColumns","Check","Edit","gridColumn","Home","flag","setValidProject","_selectedProject$Proj","Tabs","emphasis","tabPosition","defaultActiveKey","tabBarStyle","items","currentProject","_content","toolbar","mixins","breakpoints","up","createMuiTheme","ContactDetails","contactArr","Avatar","src","imageSrc","alt","role","email","lydia_stanier","ContactForm","FAQPage","swiss_cheese","qa","MENU_OPTIONS_TO_COMPONENT","HomeSolid","Dashboard","BarChartSquareSolid","FAQ","QuestionMarkSquare","Contact","PeopleSquare","VerticalMenu","Menu","defaultSelectedKeys","Component","MenuItem","itemIcon","SideNavBar","useLocation","storeIndexData","NavBar","float","orientation","pectenArea","avatarArea","alignment","InfoSquare","iconPosition","bodyPadding","TopNavBar","EdtQuestion","questionText","questionCategory","answerOptions","handleAnswerChange","_ref$type","generalLength","questionTypes","EdtSurvey","fetchedQuestions","setFetchedQuestions","domain","setDomain","answers","setAnswers","prevAnswers","unansweredGeneralQuestions","general","setTimeout","calculateScore","saveEdtSurvey","total","finalScore","loadEdtQuestions","questions","getAllQuestions","groupBy","iconVisibility","dismissible","onDismissClick","category","EdtSurveyResult","isRamDone","setRamDone","edtSurveyAnswers","setEdtSurveyAnswers","loadEdtSurveyDetails","quesUrl","quesResponse","surveyRes","today","RAMSurveyByProject","technicalAssurance","setTechnicalAssurance","surveyResponses","setSurveyResponses","loadRamSurveyByProject","toExportRam","surveyTableRow","errorBox","errorText","PageNotFound","goBack","SignedOut","Wrapper","styled","div","_templateObject","_taggedTemplateLiteral","narrow","css","_templateObject2","base","AppContainer","Switch","Route","path","ErrorPageNotFound","App","ShellThemeProvider","Router","SignOutPage","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.a58d23df.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","export default {\n SET_Users: \"setUsers\",\n SET_LoginUser: \"setLoginUser\",\n SET_Projects: \"setProject\",\n SET_Banner: \"setBanner\",\n SET_SelectedProject: \"setSelectedProject\",\n SET_TakingSurvey: \"setTakingSurvey\",\n SET_ProjectDetails: \"setProjectDetails\",\n SET_SurveyQuestions: \"setSurveyQuestions\",\n SET_AgreementLevels: \"setAgreementLevels\",\n SET_SelectedFlag: \"setSelectedFlag\",\n SET_RAMQuestions: \"setRAMQuestions\",\n SET_selectedMenuIndex: \"setSelectedMenuIndex\",\n SET_DHCID: \"SET_DHCID\",\n SET_EDT: \"SET_EDT\",\n SET_FAQDetails: \"setFAQDetails\",\n SET_InfoModalFlag: \"setInfoModalFlag\",\n SET_EDTAnswers: \"setEDTAnswers\",\n SET_FORM_DATA: \"setFormData\",\n SET_CONTENT_SURVEY_RESULT: \"setContentFinalSurveyResult\",\n SET_SOFTWARE_SURVEY_RESULT: \"setSoftwareFinalSurveyResult\",\n SET_SURVEY_ALL_DATA: \"setSureyAllData\",\n SET_RAM_FINAL_DATA: \"setRAMFinalData\",\n SET_PROJECT_ID: \"setNewProjectID\",\n SET_EDT_Survey: \"setEDTSurvey\",\n SET_EDT_Score: \"setEDTScore\",\n SET_RAM_NEEDED: \"setRAMNeeded\",\n};\n","import actions from \"../actions\";\n\nconst Reducer = (state, action) => {\n let { type, payload } = action;\n switch (type) {\n case actions.SET_Users:\n return {\n ...state,\n users: payload,\n };\n case actions.SET_LoginUser:\n return {\n ...state,\n loginUser: payload,\n };\n case actions.SET_Projects:\n return {\n ...state,\n project: payload,\n };\n case actions.SET_SelectedProject:\n return {\n ...state,\n selectedProject: payload,\n };\n case actions.SET_TakingSurvey:\n return {\n ...state,\n takingSurvey: payload,\n };\n case actions.SET_ProjectDetails: {\n let { listOfImpacts, listOfComplexity } = payload;\n return {\n ...state,\n listOfImpacts,\n listOfComplexity,\n };\n }\n case actions.SET_SurveyQuestions:\n return {\n ...state,\n surveyQuestions: payload,\n };\n case actions.SET_RAMQuestions:\n return {\n ...state,\n ramQuestions: payload,\n };\n case actions.SET_AgreementLevels:\n return {\n ...state,\n agreementLevels: payload,\n };\n case actions.SET_Banner:\n return {\n ...state,\n banner: payload,\n };\n case actions.SET_SelectedFlag:\n return {\n ...state,\n selectedFlag: payload,\n };\n case actions.SET_selectedMenuIndex:\n return {\n ...state,\n selectedMenu: payload,\n };\n case actions.SET_DHCID:\n return {\n ...state,\n DHCID: payload,\n };\n case actions.SET_EDT:\n return {\n ...state,\n EDT: payload,\n };\n case actions.SET_EDTAnswers:\n return {\n ...state,\n EDTAnswers: payload,\n };\n case actions.SET_InfoModalFlag:\n return {\n ...state,\n infoFlag: payload,\n };\n case actions.SET_FAQDetails:\n return {\n ...state,\n FAQList: payload,\n };\n case actions.SET_FORM_DATA:\n return {\n ...state,\n formData: payload,\n };\n case actions.SET_CONTENT_SURVEY_RESULT:\n return {\n ...state,\n contentFinalSurveyResult: payload,\n };\n\n case actions.SET_SOFTWARE_SURVEY_RESULT:\n return {\n ...state,\n softwareFinalSurveyResult: payload,\n };\n\n case actions.SET_SURVEY_ALL_DATA:\n return {\n ...state,\n surveyAllData: payload,\n };\n\n case actions.SET_RAM_FINAL_DATA:\n return {\n ...state,\n RAMFinalData: payload,\n };\n\n case actions.SET_PROJECT_ID:\n return {\n ...state,\n newProjectID: payload,\n };\n\n case actions.SET_EDT_Survey:\n return {\n ...state,\n EDTSurvey: payload,\n };\n\n case actions.SET_EDT_Score:\n return {\n ...state,\n EDTScore: payload,\n };\n\n case actions.SET_RAM_NEEDED:\n return {\n ...state,\n RAMNeeded: payload,\n };\n // case \"ADD_POST\":\n // return {\n // ...state,\n // posts: state.posts.concat(action.payload)\n // };\n // case \"REMOVE_POST\":\n // return {\n // ...state,\n // posts: state.posts.filter(post => post.id !== action.payload)\n // };\n default:\n return state;\n }\n};\n\nexport default Reducer;\n","import React, { createContext, useReducer } from \"react\";\nimport Reducer from \"../reducer\";\n\nconst initialState = {\n project: { listOfProjects: [], validProject: false, isNewProject: false },\n takingSurvey: false,\n selectedProject: {},\n listOfImpacts: [],\n listOfComplexity: [],\n surveyQuestions: [],\n ramQuestions: [],\n agreementLevels: [],\n banner: {\n type: \"error\",\n message: \"\",\n vertical: \"top\",\n horizontal: \"center\",\n show: false,\n },\n users: [],\n loginUser: {\n isLogIn: false,\n UserID: \"\",\n EmailID: \"\",\n FirstName: \"\",\n LastName: \"\",\n },\n selectedFlag: \"\",\n selectedMenu: 1,\n DHCID: null,\n EDT: { edtId: \"\", score: \"\" },\n EDTAnswers: {},\n FAQList: [],\n infoFlag: true,\n formData: {},\n contentFinalSurveyResult: null,\n softwareFinalSurveyResult: null,\n surveyAllData: {},\n RAMFinalData: {},\n newProjectID: null,\n EDTSurvey: null,\n EDTScore: null,\n RAMNeeded: true,\n};\n\nconst Store = ({ children }) => {\n const [state, dispatch] = useReducer(Reducer, initialState);\n return (\n {children}\n );\n};\n\nexport const Context = createContext(initialState);\nexport default Store;\n","// utils/API.js\n// export const BASE_URL = \"http://localhost:80/api/\";\nexport const BASE_URL = \"https://digitalhealthcheck-api.azurewebsites.net/api/\";\nexport const POST_USERS_URL = \"users/getUsers\";\nexport const GET_USERS_URL = \"users/getUser\";\nexport const GET_PROJECTS_URL = \"project/getProjectDetails\";\nexport const GET_PROJECTOTHERDETAILS_URL = \"project/getProjectOtherDetails\";\nexport const GET_AGREEMENTLEVEL_URL = \"agreement/getAgreementLevels\";\nexport const POST_PROJECTDETAILS_URL = \"project/postProjectDetails\";\nexport const GET_REVIEWDETAILS_URL = \"project/getReviewDetails\";\nexport const GET_QUESTIONS_URL = \"survey/getSurveyQuestions\";\nexport const POST_SURVEYDETAILS_URL = \"survey/SaveSurveyDetails\";\nexport const POST_SAVECOMMENTS_URL = \"survey/SaveSurveyComment\";\nexport const GET_GETSURVEYCOMMENTS_URL = \"survey/getSurveyComments\";\nexport const GET_RAM_QUESTIONS_URL = \"riskAssessment/getRAMQuestions\";\nexport const POST_RAMDETAILS_URL = \"riskAssessment/SaveRAMDetails\";\nexport const GET_RAM_DETAILS_BY_PROJECT_ID_URL =\n \"riskAssessment/getRAMByProjectID\";\nexport const GET_RAM_SURVEY_BY_PROJECT_ID =\n \"riskAssessment/getRAMSurveyByProjectID\";\nexport const POST_QUESTION_COMMENT_URL = \"survey/SaveSurveyQuestionComments\";\nexport const GET_QUESTION_COMMENT_URL = \"survey/getSurveyQueComments\";\nexport const GET_FAQ_DETAILS = \"FAQ/getFAQDetails\";\nexport const GET_EDT_QUESTIONS = \"edt/getEdtQuestions\";\nexport const SAVE_EDT_SURVEY = \"edt/saveEdtSurvey\";\nexport const GET_EDT_SURVEY_DETAILS = \"edt/getEdtSurveyDetails\";\nexport const GET_EDT_SURVEY_RESULTS = \"edt/getEdtSurveyResults\";\nexport const GET_EDT_SURVEY_RES_NO_RAM = \"edt/getEdtSurveyResultsNoRAM\";\nexport const GET_ALL_EMAIL_IDS = \"users/getAllEmails\";\nexport const PUT_POC_EMAIL_IDS = `project/projectPOCUpdate`;\nexport const PUT_MCDS_ORG = `project/projectMCDSOrgUpdate`;\n","import axios from \"axios\";\nimport get from \"lodash.get\";\n\naxios.interceptors.request.use(function (config) {\n config.headers.Authorization = `Bearer ${\n JSON.parse(localStorage.getItem(\"tokenDetails\")).access_token\n }`;\n return config;\n});\n\naxios.interceptors.response.use(\n (response) => response,\n (error) => {\n return Promise.reject(error);\n }\n);\n\nexport default {\n getCalls: async (methodName, url, params = {}, config = {}) =>\n await axios\n .get(url, { ...config, params })\n .then((response) => {\n if (\n (response.status >= 400 && response.status < 600) ||\n (response.data.status >= 400 && response.data.status < 600)\n ) {\n console.log(response.error);\n return {\n data: {},\n error: `${methodName} - ${response.error || response.data.error}`,\n };\n } else {\n return {\n data: response.data,\n error: null,\n };\n }\n })\n .catch((err) => {\n const { response } = err;\n return {\n data: {},\n error: get(response, \"data.error\"),\n };\n }),\n postCalls: async (_methodName, url, params, config = {}) =>\n await axios\n .post(url, params, config)\n .then((response) => {\n return {\n data: response.data,\n error: null,\n };\n })\n .catch((err) => {\n const { message } = err;\n return {\n data: {},\n error: message,\n };\n }),\n};\n","import React, { useState } from 'react';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Snackbar from '@material-ui/core/Snackbar';\n\nexport default function SnackBars(props) {\n const classes = useStyles();\n const {\n banner: { type, message, show, vertical, horizontal } = {},\n onClose,\n } = props;\n const [open, setOpen] = useState(show);\n\n const handleClose = (_event, reason) => {\n if (onClose) {\n onClose();\n }\n if (reason === 'clickaway') {\n return;\n }\n\n setOpen(false);\n };\n\n return (\n <>\n {/* \n \n {message}\n \n */}\n\n \n \n {message}\n \n \n \n );\n}\n\nfunction Alert(props) {\n return (\n \n );\n}\n\nconst useStyles = makeStyles((_theme) => ({\n root: {\n width: '100%',\n // \"& > * + *\": {\n // marginTop: theme.spacing(2)\n // }\n },\n}));\n","import React, { useContext, useState, useRef, useEffect } from 'react';\nimport {\n TextField,\n Button,\n Grid,\n Typography,\n InputLabel,\n Select,\n MenuItem,\n FormControl,\n Input,\n ListItemText,\n Checkbox,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { api, details } from '../../api';\nimport { Context, actions } from '../../context';\nimport omit from 'lodash.omit';\nimport SnackBar from '../SnackBars';\nimport { useHistory } from 'react-router-dom';\n\nexport default function Create({\n loadProjects,\n listOfAreas,\n listOfStages,\n listOfTeamSizes,\n}) {\n const history = useHistory();\n const [state, dispatch] = useContext(Context);\n const { BASE_URL, POST_PROJECTDETAILS_URL, GET_PROJECTOTHERDETAILS_URL } =\n details;\n const { banner, listOfComplexity = [], listOfImpacts = [] } = state;\n const loginUser = localStorage.getItem('loginUser')\n ? JSON.parse(localStorage.getItem('loginUser'))\n : {};\n const [form, setFormData] = useState({\n Areas: 'Data Science',\n ProjectStage: 'D0 Ideation',\n TeamSize: '1-3 members',\n FunnelProjectID: null,\n Name: null,\n Email: loginUser.EmailID + '',\n Description: null,\n ImpactID: null,\n ComplexityID: null,\n });\n const classes = useStyles();\n const [errors, setErrors] = useState({});\n const [selectedListOfImpact, setSelectedListOfImpact] = useState([]);\n const [FOFlag, setFOFlag] = useState(true);\n\n const handleClick = () => {\n const isValid = validate(errors);\n if (isValid === true) {\n postProjectDetails();\n } else {\n setErrors({ ...isValid });\n }\n };\n\n const validate = (errors) => {\n const { Name, ImpactID, ComplexityID, Areas, ProjectStage, TeamSize } =\n form;\n let validForm = {\n Name,\n ImpactID,\n ComplexityID,\n };\n\n if (Areas === 'Financial Operations') {\n validForm = omit(validForm, ['ImpactID', 'ComplexityID']);\n }\n let isError = false,\n inValid = false;\n Object.keys(validForm).forEach((key) => {\n if (\n form[key] === null ||\n form[key] === undefined ||\n form[key].length <= 0\n ) {\n isError = true;\n errors[key] = `Please Enter ${key}`;\n } else if (errors[key] && !inValid) {\n inValid = errors[key].value !== '' ? true : false;\n }\n });\n if (isError) {\n return errors;\n } else if (inValid) {\n return errors;\n } else {\n return true;\n }\n };\n\n const usePrevious = (value = {}) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current | {};\n };\n\n const prevlistOfImpacts = usePrevious(listOfImpacts);\n\n useEffect(() => {\n if (\n (listOfImpacts.length === 0 && listOfComplexity.length === 0) ||\n listOfImpacts.length !== prevlistOfImpacts.length\n ) {\n loadDetails();\n }\n return () => {\n setBanner(false, '', '');\n };\n }, []);\n\n const loadDetails = async () => {\n let url = `${BASE_URL}${GET_PROJECTOTHERDETAILS_URL}`;\n let response = await api.getCalls('loadDetails', url);\n console.log(response);\n let { data: { recordsets = [] } = {}, error } = response;\n let [listOfImpacts, listOfComplexity] = recordsets;\n const selectedData = listOfImpacts.filter((t) => t.Areas === form.Areas);\n setSelectedListOfImpact(selectedData);\n error\n ? setBanner(error)\n : dispatch({\n type: actions.SET_ProjectDetails,\n payload: { listOfImpacts, listOfComplexity },\n });\n };\n\n // Create new project\n const postProjectDetails = async () => {\n console.log('in post project');\n const {\n ComplexityID,\n Description,\n ImpactID,\n Name,\n Areas,\n ProjectStage,\n TeamSize,\n FunnelProjectID,\n } = form;\n const Email = form.Email.replace(/\\s/g, '');\n const params = {\n ComplexityID,\n Description,\n Email,\n ImpactID,\n Name,\n Areas,\n ProjectStage,\n TeamSize,\n FunnelProjectID,\n userName: `${loginUser.FirstName} ${loginUser.LastName}`,\n };\n let url = `${BASE_URL}${POST_PROJECTDETAILS_URL}`;\n let response = await api.postCalls('CreateProjects', url, params);\n let { data: { recordset: recordSet = [] } = {}, error } = response;\n if (error) {\n setBanner(true, 'error', error);\n console.log(error);\n } else {\n setBanner(true, 'success', 'Project Created Successfully');\n loadProjects(true);\n if (Areas === 'Financial Operations') {\n console.log('FA sub');\n history.push('/riskAssessment');\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 2,\n },\n });\n } else {\n history.push('/survey');\n console.log('normal sub');\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 1,\n },\n });\n }\n }\n };\n\n const setBanner = (show, type = 'error', message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n const handleChange = (e) => {\n let { name, value } = e.target;\n if (name === 'Areas') {\n const selectedData = listOfImpacts.filter((t) => t.Areas === value);\n if (value === 'Financial Operations') {\n setFOFlag(false);\n } else {\n setFOFlag(true);\n }\n setSelectedListOfImpact(selectedData);\n }\n name === 'Areas' &&\n setFormData({\n ...form,\n ['ImpactID']: null,\n ['ComplexityID']: null,\n });\n setFormData({\n ...form,\n [name]: value,\n });\n };\n return (\n <>\n {banner.show ? (\n setBanner(false, '', '')}\n />\n ) : null}\n
\n \n \n \n Project Name\n *\n \n }\n placeholder=\"Use the same name as the salesforce entry\"\n margin=\"normal\"\n fullWidth\n //size=\"small\"\n color=\"secondary\"\n InputLabelProps={{\n shrink: true,\n }}\n variant=\"outlined\"\n autoComplete=\"new-password\" // disable autocomplete and autofill\n onChange={(e) => handleChange(e)}\n error={errors.Name ? true : false}\n helperText={errors.Name ? errors.Name : ''}\n onBlur={(e) => {\n if (e.target.value !== '') {\n setErrors({ ...errors, Name: '' });\n }\n }}\n />\n {/* \n Project Name (Use the same name as the Salesforce entry)\n *\n \n handleChange(e)}\n error={errors.Name ? true : false}\n helperText={errors.Name ? errors.Name : ''}\n onBlur={(e) => {\n if (e.target.value !== '') {\n setErrors({ ...errors, Name: '' });\n }\n }}\n /> */}\n \n \n handleChange(e)}\n />\n {/* \n Salesforce Id (ITeM or GTR)\n \n handleChange(e)}\n /> */}\n \n \n handleChange(e)}\n />\n {/* \n Brief Project Description\n \n handleChange(e)}\n /> */}\n \n\n \n \n Project Stage\n *\n \n handleChange(e)}\n defaultValue={form.ProjectStage}\n name=\"ProjectStage\"\n variant=\"outlined\"\n label=\"Project Stage\"\n fullWidth\n color=\"secondary\"\n >\n {listOfStages.map((item, i) => {\n return (\n \n {item.label}\n \n );\n })}\n \n \n\n \n \n Domain\n *\n \n handleChange(e)}\n defaultValue={form.Areas}\n variant=\"outlined\"\n fullWidth\n color=\"secondary\"\n name=\"Areas\"\n >\n {listOfAreas.map((item, i) => {\n return (\n \n {item.label}\n \n );\n })}\n \n \n {FOFlag && (\n <>\n {' '}\n \n \n Code Complexity\n *\n \n handleChange(e)}\n onBlur={(e) => {\n if (e.target.value !== '') {\n setErrors({ ...errors, ComplexityID: '' });\n }\n }}\n >\n {listOfComplexity.map((item, i) => {\n let { ComplexityLevel, ComplexityID, Desciption } = item;\n return (\n \n {ComplexityLevel}\n {'\\u00A0'} {`(${Desciption})`}\n \n );\n })}\n \n \n \n \n Team Size\n *\n \n handleChange(e)}\n defaultValue={form.TeamSize}\n name=\"TeamSize\"\n >\n {listOfTeamSizes.map((item, i) => {\n return (\n \n {item.label}\n \n );\n })}\n \n \n {errors.ComplexityID && (\n \n Please Select Project Complexity\n \n )}\n \n \n Project Impact\n *\n \n handleChange(e)}\n error={errors.ImpactID ? true : false}\n onBlur={(e) => {\n if (e.target.value !== '') {\n setErrors({ ...errors, ImpactID: '' });\n }\n }}\n >\n {selectedListOfImpact.map((item, i) => {\n let { ImpactLevel, ImpactID, Description } = item;\n return (\n \n {ImpactLevel} {'\\u00A0'}\n {`(${Description})`}\n \n );\n })}\n \n \n {errors.ImpactID && (\n \n Please Select Project Impact\n \n )}\n \n )}\n \n {/* \n Contact Details *\n */}\n \n Contact Details *\n \n }\n helperText=\"separate multiple emails with ,\"\n fullWidth\n color=\"secondary\"\n // type=\"email\"\n // muliple\n // size=\"small\"\n // className={classes.inputField}\n value={form.Email}\n onChange={(e) => handleChange(e)}\n style={{ marginTop: '20px' }}\n />\n \n \n \n Create Project\n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n margin: theme.spacing(1),\n },\n fields: {\n display: 'flex',\n },\n label: {\n flex: '25%',\n textAlign: 'left',\n },\n select: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n selectLabel: {\n fontSize: '12px',\n marginBottom: '5px',\n marginTop: '15px',\n },\n textButtonAlign: {\n textAlign: 'center',\n },\n inputField: { width: '75%' },\n errorMessage: {\n fontSize: '0.75rem',\n },\n}));\n","import React, { useState, memo, useContext, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n Grid,\n Typography,\n Button,\n InputLabel,\n TextField,\n} from '@material-ui/core';\nimport { Context, actions } from '../../context';\nimport { Link } from 'react-router-dom';\nimport { api, details } from '../../api';\nimport { useHistory } from 'react-router-dom';\nimport SnackBar from '../SnackBars';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nfunction Details({ onProjectChange }) {\n const [state, dispatch] = useContext(Context);\n const history = useHistory();\n const [redirectFlag, setRedirectFlag] = useState(false);\n const { BASE_URL, GET_RAM_DETAILS_BY_PROJECT_ID_URL } = details;\n const {\n selectedProject,\n banner,\n selectedProject: {\n Description,\n PointOfContactEmailID,\n Areas,\n ComplexityLevel,\n ImpactLevel,\n ImpactDescription,\n ComplexityDescription,\n ProjectName,\n FunnelProjectID,\n ProjectID,\n },\n project = {},\n } = state;\n const classes = useStyles();\n\n useEffect(() => {\n const params = { ProjectID };\n let url = `${BASE_URL}${GET_RAM_DETAILS_BY_PROJECT_ID_URL}`;\n if (ProjectID && Areas === 'Financial Operations') {\n api.getCalls('getDetails', url, params).then((response) => {\n let { data: { recordset = [] } = {}, error } = response;\n if (recordset.length >= 1) {\n setRedirectFlag(true);\n } else {\n setRedirectFlag(false);\n }\n });\n }\n return () => {\n setBanner(false, '', '');\n };\n }, [selectedProject]);\n\n const onTakeSurvey = () => {\n dispatch({\n type: actions.SET_TakingSurvey,\n payload: !state.takingSurvey,\n });\n if (Areas === 'Financial Operations') {\n if (!redirectFlag) {\n console.log('redirecting');\n history.push('/riskAssessment');\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 2,\n },\n });\n } else {\n console.log('not redirecting');\n setBanner(\n true,\n 'warning',\n 'Risk Assessment Matrix(RAM) is already evaluated for this project'\n );\n }\n } else {\n history.push('/survey');\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 1,\n },\n });\n }\n };\n\n const setBanner = (show, type = 'error', error) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message: error,\n },\n });\n };\n\n return (\n <>\n {banner.show ? (\n setBanner(false, '', '')}\n />\n ) : null}\n \n \n \n \n Project Name\n \n option.ProjectName || ''}\n renderInput={(params) => (\n \n )}\n />\n \n {selectedProject.ProjectID !== undefined && (\n <>\n \n \n Salesforce ID\n \n {FunnelProjectID}\n \n \n \n Domain\n \n {Areas}\n \n \n \n Email\n \n {PointOfContactEmailID}\n \n \n \n Project Description\n \n \n {Description}\n \n \n {Areas !== 'Financial Operations' && (\n <>\n {' '}\n \n \n Project Complexity\n \n \n {ComplexityLevel} {'\\u00A0'}\n {`(${ComplexityDescription})`}\n \n \n \n \n Project Impact\n \n \n {' '}\n {ImpactLevel} {'\\u00A0'}\n {`(${ImpactDescription})`}\n \n \n \n )}\n \n onTakeSurvey()}\n component={Link}\n >\n Take a New Survey\n \n \n \n )}\n \n \n \n );\n}\n\nexport default memo(Details);\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: theme.spacing(1),\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n fields: {\n display: 'flex',\n },\n label: {\n width: '25%',\n textAlign: 'left',\n },\n fieldsAlign: { width: '75%', textAlign: 'left' },\n textButtonAlign: {\n textAlign: 'end',\n },\n}));\n","import React, { memo } from 'react';\nimport clsx from 'clsx';\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n FormControl,\n Grid,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Create from './Create';\nimport Details from './Details';\n\nfunction StyledRadio(props) {\n const classes = useStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n}\n\nconst ProjectView = memo(\n ({\n banner,\n project,\n listOfAreas,\n listOfStages,\n listOfTeamSizes,\n onProjectChange,\n loadProjects,\n handleChange,\n selectedProject,\n selectedFlag,\n }) => {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n }\n label=\"New Project\"\n />\n }\n label=\"Existing Project\"\n />\n \n \n \n {selectedFlag === 'newProject' ? (\n <>\n \n
\n \n The DHC should be used as a 'Self-help' tool to allow you to\n reflect on how the project is progressing. Hence, it may be\n worth completing with the project team. There are 2 DHC\n surveys: Content Assurance and Software Engineering, as well\n as a Risk Assessment Matrix which will determine whether a\n formal TA review is required.\n \n
\n \n ) : project.listOfProjects.length !== 0 ? (\n
\n ) : (\n <>\n )}\n \n \n );\n }\n);\n\nexport default ProjectView;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n margin: 'auto',\n width: '80%',\n },\n footer: {\n marginTop: '50px',\n marginRight: '10px',\n color: 'rgba(0, 0, 0, 0.54)',\n },\n inputField: { width: 500 },\n margin: {\n height: theme.spacing(2),\n },\n icon: {\n borderRadius: '50%',\n width: 16,\n height: 16,\n boxShadow:\n 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\n backgroundColor: '#f5f8fa',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\n '$root.Mui-focusVisible &': {\n outline: '2px auto rgba(19,124,189,.6)',\n outlineOffset: 2,\n },\n 'input:hover ~ &': {\n backgroundColor: '#ebf1f5',\n },\n 'input:disabled ~ &': {\n boxShadow: 'none',\n background: 'rgba(206,217,224,.5)',\n },\n },\n checkedIcon: {\n backgroundColor: '#ffc107',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\n '&:before': {\n display: 'block',\n width: 16,\n height: 16,\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\n content: '\"\"',\n },\n 'input:hover ~ &': {\n backgroundColor: '#ffc107',\n },\n },\n}));\n","import React, { useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport SurveyView from './SurveyView';\n\nconst surveyHeading = {\n CA: 'Content Assurance Survey',\n SE: 'Software Engineering Survey',\n};\n\nexport default function Survey(props) {\n const [queId, setQueId] = useState(0);\n const [viewDesc, setViewDesc] = useState(false);\n const classes = useStyles();\n\n console.log(props);\n\n let {\n surveyQuestions,\n agreementLevels,\n contentSurveyResult,\n softwareSurveyResult,\n setContentSurveyResult,\n setSoftwareSurveyResult,\n Heading,\n incremental = 0,\n marks = agreementLevels.map((val) => {\n let res = {\n AgreementID: val.AgreementID,\n AgreementValueID: val.AgreementValueID,\n value: incremental,\n label: val.AgreementLevel,\n };\n incremental = (incremental || 0) + 25;\n return res;\n }),\n } = props;\n const onSliderChange = (event = {}, value, id) => {\n let ids = id,\n [Qid, Sid, RecommendedLevelofAgreementID] = ids.split('_');\n let index = marks.findIndex((mark) => mark.AgreementValueID === value),\n getResult = (inputContent) => {\n let content = inputContent;\n let contentIndex = content.findIndex((res) => res.QuestionID === Qid);\n\n if (contentIndex >= 0) {\n content[contentIndex].LevelofAgreementID =\n marks[index].AgreementValueID;\n content[contentIndex].SurveyID = Sid;\n } else {\n content.push({\n QuestionID: Qid,\n SurveyID: Sid,\n RecommendedLevelofAgreementID: RecommendedLevelofAgreementID,\n LevelofAgreementID: marks[index].AgreementValueID,\n });\n }\n props.setCount(Heading, content.length);\n return content;\n };\n\n if (surveyHeading[Heading] === surveyHeading.CA) {\n setContentSurveyResult(getResult(contentSurveyResult));\n } else if (surveyHeading[Heading] === surveyHeading.SE) {\n setSoftwareSurveyResult(getResult(softwareSurveyResult));\n }\n };\n\n const handleIconClicks = (questionId) => {\n setQueId(questionId);\n setViewDesc(!viewDesc);\n };\n\n return (\n
\n {surveyQuestions.map((data, index) => {\n if (\n surveyHeading[Heading] === surveyHeading.CA &&\n data.SurveyID === 2\n ) {\n const found = contentSurveyResult.find(\n (item) => Number(item.QuestionID) === data.QuestionID\n );\n\n return (\n
\n \n
\n );\n } else if (\n surveyHeading[Heading] === surveyHeading.SE &&\n data.SurveyID === 1\n ) {\n const found = softwareSurveyResult.find(\n (item) => Number(item.QuestionID) === data.QuestionID\n );\n return (\n
\n \n
\n );\n }\n })}\n
\n );\n}\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: 300 + theme.spacing(3) * 4,\n },\n margin: {\n height: theme.spacing(3),\n },\n survey: {\n flexGrow: 1,\n marginLeft: '50px',\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 200,\n },\n}));\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport {\n Paper,\n IconButton,\n TextField,\n Typography,\n Grid,\n} from \"@material-ui/core\";\nimport { Send } from \"@material-ui/icons\";\nimport { api, details } from \"../../api\";\nimport { Context, actions } from \"../../context\";\nimport { formatDate } from \"../../common/helper\";\n\nexport default function Comments({ expandedFeedback, projectid }) {\n const classes = useStyles();\n const [state, dispatch] = useContext(Context);\n const [reviewComments, setReviewComments] = useState([]);\n const [feedback, setFeedback] = useState(\"\");\n const [disableButton, setDisableButton] = useState(true);\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n const {\n BASE_URL,\n GET_GETSURVEYCOMMENTS_URL: GET_GetSurveyComments_URL,\n POST_SAVECOMMENTS_URL: POST_SaveComments_URL,\n } = details;\n\n const usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n };\n\n const previousFeedback = usePrevious(feedback);\n\n useEffect(() => {\n if (feedback !== previousFeedback) {\n getComments();\n }\n return () => {};\n }, []);\n\n const addComments = (event, id) => {\n setDisableButton(true);\n event.preventDefault();\n let url = `${BASE_URL}${POST_SaveComments_URL}`;\n let { UserID, EmailID, FirstName, LastName } = loginUser;\n\n let _comments = {\n EmailID,\n FirstName,\n LastName,\n CommenterID: UserID,\n ProjectID: id,\n Comment: feedback,\n CommentDate: new Date().toISOString(),\n };\n\n api\n .postCalls(\"addComments\", url, _comments)\n .then((res) => {\n let { error } = res;\n if (error) {\n setBanner(true, \"error\", error);\n setDisableButton(true);\n } else {\n setFeedback(\"\");\n setDisableButton(true);\n getComments();\n }\n })\n .catch((err) => {\n err && setBanner(true, \"error\", err);\n });\n };\n\n const getComments = () => {\n let url = `${BASE_URL}${GET_GetSurveyComments_URL}`;\n api\n .getCalls(\"fetchSurveyComments\", url)\n .then((response) => {\n let { data: { recordset = [] } = {}, error } = response;\n error ? setBanner(true, \"error\", error) : setReviewComments(recordset);\n })\n .catch((err) => {\n err && setBanner(true, \"error\", err);\n });\n };\n\n const setBanner = (show, type = \"error\", message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n const feedbackContent = (id) => {\n return (\n \n {\n let {\n target: { value },\n } = e;\n setFeedback(value);\n value.trim() ? setDisableButton(false) : setDisableButton(true);\n }}\n />\n addComments(e, id)}\n disabled={disableButton}\n >\n \n \n \n );\n };\n const found = reviewComments.findIndex((d) => d.ProjectID === projectid);\n return (\n <>\n {reviewComments.length > 0 && (\n <>\n {found !== -1 && (\n User Feedback:\n )}\n {reviewComments\n .map((content, index) => {\n let { FirstName, LastName, Comment, CommentDate, ProjectID } =\n content;\n return (\n ProjectID === projectid && (\n <>\n \n \n \n {`${FirstName} ${LastName}`} -{\" \"}\n {formatDate(CommentDate)}\n \n \n {Comment}\n \n \n \n \n )\n );\n })\n .filter((comment) => comment)}\n \n )}\n\n {feedbackContent(projectid)}\n \n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n feedbackContent: {\n padding: \"2px 4px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n title: {\n marginTop: 8,\n fontSize: \"14px\",\n fontWeight: 600,\n },\n subContent: {\n margin: 0,\n color: \"#7F7F7F\",\n fontSize: \"14px\",\n fontWeight: 400,\n },\n commentSection: {\n fontSize: \"14px\",\n fontWeight: 400,\n },\n}));\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport {\n Paper,\n IconButton,\n TextField,\n Typography,\n Grid,\n} from \"@material-ui/core\";\nimport { Send } from \"@material-ui/icons\";\nimport { api, details } from \"../../api\";\nimport { Context, actions } from \"../../context\";\nimport { formatDate } from \"../../common/helper\";\n\nexport default function QuestionComment({\n expandedQueFeedback,\n projectid,\n questionId,\n SurveyID,\n}) {\n const classes = useStyles();\n const [state, dispatch] = useContext(Context);\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n const [reviewComments, setReviewComments] = useState([]);\n const [feedback, setFeedback] = useState(\"\");\n const [disableButton, setDisableButton] = useState(true);\n const { BASE_URL, POST_QUESTION_COMMENT_URL, GET_QUESTION_COMMENT_URL } =\n details;\n\n useEffect(() => {\n getComments();\n }, []);\n\n const addComments = (event, projectid) => {\n event.preventDefault();\n let url = `${BASE_URL}${POST_QUESTION_COMMENT_URL}`;\n let { UserID, EmailID, FirstName, LastName } = loginUser;\n\n let _comments = {\n EmailID,\n FirstName,\n LastName,\n CommenterID: UserID,\n ProjectID: projectid,\n Comment: feedback,\n CommentDate: new Date().toISOString(),\n QuestionID: questionId,\n SurveyID,\n };\n api\n .postCalls(\"addQueComments\", url, _comments)\n .then((res) => {\n let { error } = res;\n if (error) setBanner(true, \"error\", error);\n else {\n setFeedback(\"\");\n setDisableButton(true);\n getComments();\n }\n })\n .catch((err) => {\n err && setBanner(true, \"error\", err);\n });\n };\n\n const getComments = () => {\n let url = `${BASE_URL}${GET_QUESTION_COMMENT_URL}`;\n api\n .getCalls(\"fetchSurveyQueComments\", url)\n .then((response) => {\n let { data: { recordset = [] } = {}, error } = response;\n error ? setBanner(true, \"error\", error) : setReviewComments(recordset);\n })\n .catch((err) => {\n err && setBanner(true, \"error\", err);\n });\n };\n\n const setBanner = (show, type = \"error\", message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n const feedbackContent = (projectid) => {\n return (\n \n {\n let {\n target: { value },\n } = e;\n setFeedback(value);\n value.trim() ? setDisableButton(false) : setDisableButton(true);\n }}\n />\n addComments(e, projectid)}\n disabled={disableButton}\n >\n \n \n \n );\n };\n const found = reviewComments.findIndex(\n (d) =>\n d.ProjectID === projectid &&\n d.QuestionID === questionId &&\n d.SurveyID === SurveyID\n );\n return (\n <>\n {reviewComments.length > 0 && (\n <>\n {found !== -1 && (\n User Feedback:\n )}\n {reviewComments\n .map((content, index) => {\n let {\n FirstName,\n LastName,\n Comment,\n CommentDate,\n ProjectID,\n QuestionID,\n SurveyID,\n } = content;\n return (\n ProjectID === projectid &&\n QuestionID === questionId &&\n SurveyID === SurveyID && (\n \n \n \n {`${FirstName} ${LastName}`} - {formatDate(CommentDate)}\n \n \n {Comment}\n \n \n \n )\n );\n })\n .filter((comment) => comment)}\n \n )}\n {feedbackContent(projectid)}\n \n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n feedbackContent: {\n padding: \"2px 2px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n title: {\n marginTop: 8,\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"#404040\",\n },\n subContent: {\n margin: 0,\n color: \"#595959\",\n fontSize: \"14px\",\n fontWeight: 400,\n },\n commentSection: {\n fontSize: \"14px\",\n fontWeight: 400,\n color: \"#595959\",\n },\n}));\n","import base64 from 'base64-js';\nimport config from '../../../config';\n\nlet codeVerifier, pingURL, code_challenge;\nconst HAS_CRYPTO = typeof window !== 'undefined' && !!window.crypto;\n\nconst bufferToString = (buffer) => {\n const CHARSET =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const state = new Array();\n for (let i = 0; i < buffer.byteLength; i += 1) {\n const index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n return state.join('');\n};\nconst generateRandom = (size) => {\n const buffer = new Uint8Array(size);\n if (HAS_CRYPTO) {\n window.crypto.getRandomValues(buffer);\n } else {\n // fall back to Math.random() if nothing else is available\n for (let i = 0; i < size; i += 1) {\n buffer[i] = Math.random();\n }\n }\n return bufferToString(buffer);\n};\nconst urlSafe = (buffer) => {\n const encoded = base64.fromByteArray(new Uint8Array(buffer));\n return encoded.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n};\nconst deriveChallenge = (code) => {\n return new Promise((resolve, reject) => {\n crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(\n (buffer) => {\n return resolve(urlSafe(new Uint8Array(buffer)));\n },\n (error) => reject(error)\n );\n });\n};\nconst textEncodeLite = (str) => {\n const buf = new ArrayBuffer(str.length);\n const bufView = new Uint8Array(buf);\n for (let i = 0; i < str.length; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return bufView;\n};\nconst setupCodeVerifier = (clientId) => {\n codeVerifier = generateRandom(43);\n const challenge = deriveChallenge(codeVerifier).catch((_error) => {\n return undefined;\n });\n return challenge.then((result) => {\n if (result) {\n code_challenge = result;\n navToPing(clientId);\n }\n });\n};\n\nconst navToPing = (clientId) => {\n const challenge = code_challenge;\n pingURL = `${config.PINGID_AUTH_URL}?redirect_uri=${config.REDIRECT_URL}&client_id=${clientId}&response_type=code&scope=email&audience=API_AUDIENCE&access_type=offline&code_challenge=${challenge}&code_challenge_method=S256`;\n window.localStorage.setItem('verifier', codeVerifier);\n window.location.href = pingURL;\n};\n\nconst redirectToPingId = async (clientId) => {\n await setupCodeVerifier(clientId);\n};\n\nexport default redirectToPingId;\n","const getURLParameter = (name, url) => {\n if (!url) {\n url = window.location.href;\n }\n name = name.replace(/\\[/, '\\\\[').replace(/\\]/, '\\\\]');\n const regexS = '[\\\\?&]' + name + '=([^&#]*)';\n const regex = new RegExp(regexS);\n const results = regex.exec(url);\n return results == null ? null : results[1];\n};\n\nexport default getURLParameter;\n","const config = {\n REDIRECT_URL: \"https://digitalhealthcheck.dev.aze.shell.io/\",\n PINGID_TOKEN_URL: \"https://sso-uat.shell.com/as/token.oauth2\",\n PINGID_AUTH_URL: \"https://sso-uat.shell.com/as/authorization.oauth2\",\n CLIENT_ID: \"ee8aa58a-5d3c-48c5-b972-22afc2ac3066\",\n // REDIRECT_URL: \"http://localhost:3000/\",\n // PINGID_TOKEN_URL: \"https://sso-dev.shell.com/as/token.oauth2\",\n // PINGID_AUTH_URL: \"https://sso-dev.shell.com/as/authorization.oauth2\",\n // CLIENT_ID: \"ee8aa58a-5d3c-48c5-b972-22afc2ac3066\",\n};\n\nexport default config;\n","import config from '../../../../config';\n\nconst getToken = async (clientId, code) => {\n const details = {\n client_id: clientId, //\"wfhc dev\",//\"\",\n grant_type: 'authorization_code',\n redirect_uri: config.REDIRECT_URL,\n code_verifier: window.localStorage.getItem('verifier'),\n code,\n };\n\n const formBody = new Array();\n // tslint:disable-next-line:forin\n for (const property in details) {\n if (details.hasOwnProperty(property)) {\n const encodedKey = property;\n const encodedValue = details[property];\n formBody.push(`${encodedKey}=${encodedValue}`);\n }\n }\n const formBodyObj = formBody.join('&');\n const url = new URL(config.PINGID_TOKEN_URL);\n\n const searchParams = new URLSearchParams(Object.entries(details));\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n\n const response = await fetch(config.PINGID_TOKEN_URL, {\n method: 'POST',\n // dataType: 'json',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: formBodyObj,\n });\n\n const result = await response.json();\n\n if (result.error_description) {\n throw new Error('You are not authorized to access application');\n }\n return result;\n};\n\nexport default getToken;\n","import getURLParameter from './getURLParameter';\nimport getToken from './getToken';\n\nconst hasPingIdRespondedWithError = () =>\n getURLParameter('error', window.location.href);\n\nconst extractCodeFromUrl = () => getURLParameter('code', window.location.href);\n\nconst getAccessToken = async (clientId) => {\n if (hasPingIdRespondedWithError()) {\n throw new Error('You are not authorized to use the application.');\n }\n const code = extractCodeFromUrl();\n if (code) {\n return getToken(clientId, code);\n }\n return '';\n};\n\nexport default getAccessToken;\n","import jwt from \"jsonwebtoken\";\n\nconst decodeAccessToken = (rawToken) => {\n const decodedToken = jwt.decode(rawToken, { complete: true });\n const {\n mail = \"\",\n givenName: firstName = \"\",\n sn: lastName = \"\",\n } = decodedToken.payload || {};\n\n return {\n mailId: mail.toLowerCase(),\n firstName,\n lastName,\n };\n};\n\nexport default decodeAccessToken;\n","import { api, details } from '../../../api';\n\nconst validateUser = async (_user) => {\n const { BASE_URL, GET_USERS_URL } = details;\n const url = `${BASE_URL}${GET_USERS_URL}`;\n\n const response = await api.getCalls('userLogin', url);\n const { data: { recordset: recordset = [] } = {} } = response;\n return {\n ...recordset[0],\n };\n};\n\nexport default validateUser;\n","import React from \"react\";\nimport config from \"../../../config\";\n\nconst refreshAuthToken = async (clientId, refreshToken) => {\n const details = {\n client_id: clientId,\n grant_type: \"refresh_token\",\n refresh_token: refreshToken,\n };\n\n const body = Object.keys(details)\n .map((key) => `${key}=${details[key]}`)\n .join(\"&\");\n\n const response = await fetch(config.PINGID_TOKEN_URL, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body,\n });\n\n const result = await response.json();\n return result;\n};\n\nexport default refreshAuthToken;\n","import { useEffect, useRef } from 'react';\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n let id;\n if (delay) {\n id = setInterval(() => savedCallback.current(), delay);\n }\n return () => clearInterval(id);\n }, [delay]);\n}\n\nexport default useInterval;\n","import React, { useState, useEffect } from \"react\";\nimport { refreshAuthToken } from \"./services\";\nimport useInterval from \"../../common/useInterval\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button } from \"@sede-x/shell-ds-react-framework\";\nimport { Cross } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport \"./TokenRefresher.css\";\n\nconst ADVANCE_REFRESH_OFFSET_IN_SECONDS = 5 * 60;\nconst SESSION_TIMEOUT_IN_SECONDS = 10 * 60; // 10 minutes\nconst WARNING_TIME_IN_SECONDS = 60; // 1 minute\n\nconst TokenRefresher = ({ onRefresh }) => {\n const history = useHistory();\n\n const [lastActivity, setLastActivity] = useState(Date.now());\n const [showWarning, setShowWarning] = useState(false);\n const [remainingTime, setRemainingTime] = useState(WARNING_TIME_IN_SECONDS);\n\n const tokenDetails = JSON.parse(localStorage.getItem(\"tokenDetails\"));\n const userDetails = JSON.parse(localStorage.getItem(\"loginUser\"));\n\n const refreshIntervalInMillis =\n (tokenDetails.expires_in || 305 - ADVANCE_REFRESH_OFFSET_IN_SECONDS) * 1000;\n useInterval(async () => {\n try {\n const accessTokenDetails = await refreshAuthToken(\n userDetails.clientId,\n tokenDetails.refresh_token\n );\n localStorage.setItem(\"tokenDetails\", JSON.stringify(accessTokenDetails));\n onRefresh({\n refresh_token: accessTokenDetails.refresh_token,\n accessToken: accessTokenDetails.access_token,\n });\n } catch (err) {\n console.error(\"Token Refresh failed\", err);\n }\n }, refreshIntervalInMillis);\n\n useInterval(() => {\n const idleTimeInSeconds = (Date.now() - lastActivity) / 1000;\n if (idleTimeInSeconds >= SESSION_TIMEOUT_IN_SECONDS) {\n // Session timeout logic here. For example:\n localStorage.clear();\n // Navigate to new page\n history.push({\n pathname: \"/signedOut\",\n state: { fromTokenRefresher: true },\n });\n } else if (\n idleTimeInSeconds >=\n SESSION_TIMEOUT_IN_SECONDS - WARNING_TIME_IN_SECONDS\n ) {\n // Show warning\n setShowWarning(true);\n setRemainingTime(SESSION_TIMEOUT_IN_SECONDS - idleTimeInSeconds);\n } else {\n setShowWarning(false);\n }\n }, 1000); // Check every second\n\n // Update lastActivity whenever there is any activity\n useEffect(() => {\n const activityHandler = () => {\n if (!showWarning) {\n setLastActivity(Date.now());\n }\n };\n window.addEventListener(\"click\", activityHandler);\n window.addEventListener(\"keydown\", activityHandler);\n return () => {\n window.removeEventListener(\"click\", activityHandler);\n window.removeEventListener(\"keydown\", activityHandler);\n };\n }, [showWarning]);\n\n return showWarning ? (\n
\n
\n
\n }\n variant=\"transparent\"\n onClick={() => {\n setShowWarning(false);\n setLastActivity(Date.now());\n }}\n className=\"close-button\"\n />\n
\n
\n

Session Timeout

\n

\n Session will be timed out in{\" \"}\n {Math.ceil(remainingTime)} seconds.\n

\n {\n setLastActivity(Date.now());\n setShowWarning(false);\n }}\n className=\"continue-button\"\n >\n Continue\n \n
\n
\n
\n ) : null;\n};\n\nexport default TokenRefresher;\n","import React, { useContext } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Backdrop, Modal, Fade, IconButton } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Context, actions } from '../context';\n\nconst useStyles = makeStyles((theme) => ({\n modal: {\n width: '55%',\n margin: 'auto',\n marginTop: '6%',\n },\n icon: {\n height: '20px',\n width: '20px',\n },\n paper: {\n backgroundColor: theme.palette.background.paper,\n border: '4px solid #FBCE07',\n },\n}));\n\nconst InfoModal = () => {\n const [state, dispatch] = useContext(Context);\n const { infoFlag } = state;\n const classes = useStyles();\n\n const handleModalClose = () => {\n dispatch({\n type: actions.SET_InfoModalFlag,\n payload: false,\n });\n };\n\n return (\n
\n \n \n
\n \n \n \n\n \n
\n
\n \n
\n );\n};\n\nexport default InfoModal;\n","import React, { useEffect, useState, useContext } from 'react';\nimport {\n getAccessToken,\n redirectToPingId,\n decodeAccessToken,\n validateUser,\n} from './services';\nimport { actions, Context } from '../../context';\nimport TokenRefresher from './TokenRefresher';\nimport { useHistory } from 'react-router-dom';\nimport config from '../../config';\nimport InfoModal from '../../common/infoModal';\nimport { Loading } from '@sede-x/shell-ds-react-framework';\n\nconst Authenticator = ({ children }) => {\n const [state, dispatch] = useContext(Context);\n const { infoFlag } = state;\n const [userData, setUserData] = useState(null);\n const [_error, setError] = useState('');\n const [authTokens, setAuthTokens] = useState(null);\n const history = useHistory();\n\n useEffect(() => {\n const validateUserAndUpdate = async () => {\n const {\n access_token: accessToken,\n refresh_token: refreshToken,\n expires_in: expiresIn,\n clientId,\n } = authTokens;\n const basicUserDetails = decodeAccessToken(accessToken);\n const userDetails = await validateUser(basicUserDetails);\n localStorage.setItem(\n 'loginUser',\n JSON.stringify({ isLogIn: true, ...userDetails, clientId })\n );\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 0,\n },\n });\n setUserData({\n ...userDetails,\n accessToken,\n refreshToken,\n expiresIn,\n clientId,\n });\n };\n\n const authenticate = async () => {\n try {\n const clientId = config.CLIENT_ID;\n const accessTokens = await getAccessToken(clientId);\n localStorage.setItem('tokenDetails', JSON.stringify(accessTokens));\n if (!accessTokens) {\n return redirectToPingId(clientId);\n }\n setAuthTokens({ ...accessTokens, clientId });\n history.push('/home');\n } catch (err) {\n setError(err);\n }\n return undefined;\n };\n\n if (userData) {\n return;\n }\n\n if (authTokens) {\n validateUserAndUpdate();\n } else {\n authenticate();\n }\n }, [authTokens]);\n\n if (!userData) {\n return (\n
\n \n
\n );\n }\n\n return (\n <>\n {\n setUserData({ ...userData, ...updatedAuthTokens });\n }}\n />\n {/* {infoFlag && } */}\n {children}\n \n );\n};\n\nexport default Authenticator;\n","export const checkArr = () => {\n return [\n {\n name: 'mathematics',\n label: 'Mathematics',\n },\n {\n name: 'computationalScience',\n label: 'Computational Science',\n },\n {\n name: 'dataScience',\n label: 'Data Science',\n },\n {\n name: 'statistics',\n label: 'Statistics',\n },\n {\n name: 'appliedPhysics',\n label: 'Applied Physics',\n },\n {\n name: 'optimization',\n label: 'Optimization',\n },\n {\n name: 'machineVision',\n label: 'Machine Vision',\n },\n {\n name: 'NLP',\n label: 'NLP',\n },\n {\n name: 'AIAutomation',\n label: 'AI Engineering/Automation',\n },\n {\n name: 'Visualization',\n label: 'Visualization/External Content',\n },\n { name: 'noneoftheabove', label: 'None of the above' },\n ];\n};\n\nexport const checkArrForYesOrNo = () => {\n return [\n {\n name: 'Yes',\n label: 'Yes',\n },\n {\n name: 'No',\n label: 'No',\n },\n ];\n};\n\nexport const technicalAssuranceOptions = () => {\n return [\n {\n name: 'Yes, less than 9 months ago',\n label: 'Yes, less than 9 months ago',\n },\n {\n name: 'Yes, more than 9 months ago',\n label: 'Yes, more than 9 months ago',\n },\n {\n name: 'No',\n label: 'No',\n },\n ];\n};\n","import React from \"react\";\n\nimport {\n checkArr,\n checkArrForYesOrNo,\n technicalAssuranceOptions,\n} from \"./DataConfig\";\nimport {\n FormField,\n RadioButton,\n Text,\n Checkbox,\n TextInput,\n} from \"@sede-x/shell-ds-react-framework\";\n\nexport default function RiskAssessmentSurveyView(props) {\n const {\n data,\n handleChoiceChange,\n index,\n selectedProject,\n handleSelectionChange,\n handleChecked,\n checked,\n handleCustomFieldData,\n customContain,\n errors,\n selectedFlag,\n formData,\n } = props;\n\n // console.log(data);\n\n return (\n
\n \n {`${\n data.QuestionID === 1 || data.QuestionID === 2\n ? \"\"\n : `${data.QuestionID - 2}.`\n } ${data.Question}`}\n \n\n {data.SectionID !== 0 ? (\n data.choiceList.map((cData, _i) => {\n return (\n \n handleChoiceChange(e, data.QuestionID)}\n />\n \n );\n })\n ) : data.QuestionID === 2 && selectedProject.FunnelProjectID ? (\n selectedFlag === \"existingProject\" ? (\n {selectedProject.FunnelProjectID}\n ) : (\n {formData.FunnelProjectID}\n )\n ) : data.QuestionID === 1 ? (\n selectedFlag === \"existingProject\" ? (\n {selectedProject.ProjectName}\n ) : (\n {formData.Name}\n )\n ) : data.QuestionID === 16 || data.QuestionID === 17 ? (\n <>\n {checkArrForYesOrNo().map((item) => (\n \n handleSelectionChange(e, index)}\n />\n \n ))}\n \n ) : data.QuestionID === 18 ? (\n <>\n {checkArr().map((item) => (\n \n \n \n ))}\n\n {checked.noneoftheabove && (\n handleCustomFieldData(e)}\n bottomLeftHelper={{\n content: errors.customContain ? errors.customContain : \"\",\n sentiment: \"negative\",\n }}\n autoComplete=\"new-password\"\n >\n \n \n )}\n \n ) : data.QuestionID === 15 ? (\n <>\n {technicalAssuranceOptions().map((item) => (\n \n handleSelectionChange(e, index)}\n />\n \n ))}\n \n ) : (\n <>\n )}\n
\n );\n}\n","import React, { useState, useContext, useEffect } from \"react\";\nimport RiskAssessmentSurveyView from \"./RiskAssessmentSurveyView\";\nimport { details } from \"../../api\";\nimport axios from \"axios\";\nimport { Context, actions } from \"../../context\";\nimport { useHistory } from \"react-router-dom\";\nimport get from \"lodash.get\";\nimport SnackBar from \"../SnackBars\";\nimport {\n Button,\n Card,\n Heading,\n Loading,\n Modal,\n Text,\n} from \"@sede-x/shell-ds-react-framework\";\nimport { InfoCircle } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport \"./RiskAssesment.css\";\n\nconst colorList = [];\n\nexport default function RiskAssessment() {\n const [open, setOpen] = useState(false);\n const handleOnClose = () => setOpen(false);\n const [customContain, setCustomContain] = useState(\"\");\n const [state, dispatch] = useContext(Context);\n const [errors, setErrors] = useState({});\n const [checked, setChecked] = React.useState({\n mathematics: false,\n computationalScience: false,\n dataScience: false,\n statistics: false,\n appliedPhysics: false,\n optimization: false,\n machineVision: false,\n NLP: false,\n AIAutomation: false,\n Visualization: false,\n noneoftheabove: false,\n });\n const defaultColorCode = [\n { sId: 1, lId: 1, color: \"#008443\" },\n { sId: 1, lId: 2, color: \"#EB8705\" },\n { sId: 1, lId: 3, color: \"#EB8705\" },\n { sId: 2, lId: 1, color: \"#EB8705\" },\n { sId: 2, lId: 2, color: \"#EB8705\" },\n { sId: 2, lId: 3, color: \"#DD1D21\" },\n { sId: 3, lId: 1, color: \"#EB8705\" },\n { sId: 3, lId: 2, color: \"#DD1D21\" },\n { sId: 3, lId: 3, color: \"#DD1D21\" },\n ];\n const {\n GET_RAM_QUESTIONS_URL,\n BASE_URL,\n POST_RAMDETAILS_URL,\n POST_PROJECTDETAILS_URL,\n POST_SURVEYDETAILS_URL,\n SAVE_EDT_SURVEY,\n } = details;\n const {\n newProjectID,\n project,\n RAMFinalData,\n formData,\n surveyAllData,\n ramQuestions,\n selectedProject,\n DHCID,\n EDT,\n banner,\n selectedFlag,\n EDTSurvey,\n } = state;\n\n const [formSubmit, setFormSubmit] = useState(false);\n const history = useHistory();\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n\n useEffect(() => {\n if (!formSubmit) {\n window.addEventListener(\"beforeunload\", alertUser);\n return () => {\n window.removeEventListener(\"beforeunload\", alertUser);\n };\n }\n }, [formSubmit]);\n\n const alertUser = (e) => {\n e.preventDefault();\n e.returnValue = \"You have unsaved changes, are you sure you want to leave?\";\n };\n\n useEffect(() => {\n console.log(formSubmit);\n\n if (!formSubmit) {\n const unblock = history.block((location, action) => {\n if (action === \"PUSH\" && location.pathname !== \"/ramResult\") {\n return window.confirm(\n \"You have unsaved changes, are you sure you want to leave this page?\"\n );\n }\n return true;\n });\n return () => unblock();\n }\n }, [history, formSubmit]);\n\n useEffect(() => {\n console.log(\"RAMFinalData\", RAMFinalData);\n console.log(\"formData\", formData);\n console.log(\"surveyAllData\", surveyAllData);\n }, []);\n const handleCustomFieldData = (e) => {\n setCustomContain(e.target.value);\n };\n\n // for Project Contents\n const handleChecked = (event) => {\n if (event.target.name === \"noneoftheabove\") {\n setChecked({\n mathematics: false,\n computationalScience: false,\n dataScience: false,\n statistics: false,\n appliedPhysics: false,\n [event.target.name]: event.target.checked,\n });\n } else {\n setErrors({});\n setChecked({\n ...checked,\n noneoftheabove: false,\n [event.target.name]: event.target.checked,\n });\n }\n };\n\n const handleSelectionChange = (e, index) => {\n console.log(index, e.target.value);\n ramQuestions[index].selectedChoice = e.target.value;\n dispatch({\n type: actions.SET_RAMQuestions,\n payload: ramQuestions,\n });\n };\n\n useEffect(() => {\n Promise.all([loadRAMQuestions()]);\n return () => {\n dispatch({\n type: actions.SET_RAMQuestions,\n payload: [],\n });\n setBanner(false, \"\", \"\");\n };\n }, []);\n\n const loadRAMQuestions = async () => {\n try {\n const url = `${BASE_URL}${GET_RAM_QUESTIONS_URL}`;\n const response = await axios.get(url); //loadRAMQuestions\n const { data: { recordset: recordSet = [] } = {}, error } = response;\n console.log(response);\n error\n ? setBanner(true, \"error\", error)\n : dispatch({\n type: actions.SET_RAMQuestions,\n payload: recordSet.map((item) => {\n const arr = [1, 2, 17];\n if (!arr.includes(item.QuestionID)) {\n return {\n ...item,\n selectedChoice: 0,\n };\n } else {\n return {\n ...item,\n };\n }\n }),\n });\n } catch (error) {\n const errorCode = error.response ? error.response.status : 500;\n console.log(`Risk Assessment Details not Loaded-`, error.message);\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n const setBanner = (show, type = \"error\", error) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message: error,\n },\n });\n };\n\n const setAnswerData = (data) => {\n const id = data.QuestionID;\n let objData = \"\";\n Object.keys(checked).forEach((obj) => {\n if (obj === \"noneoftheabove\" && checked[obj] === true) {\n objData = `${customContain};`;\n } else {\n if (checked[obj] === true) {\n objData = objData.concat(`${obj};`);\n }\n }\n });\n if (id === 1) {\n if (selectedFlag === \"newProject\") {\n return formData.Name;\n } else {\n return selectedProject.ProjectName;\n }\n } else if (id === 2) {\n if (selectedFlag === \"newProject\") {\n return formData.FunnelProjectID && formData.FunnelProjectID.toString();\n } else {\n return (\n selectedProject.FunnelProjectID &&\n selectedProject.FunnelProjectID.toString()\n );\n }\n } else if (id === 18) {\n if (objData === \";\") {\n setErrors({ customContain: \"Please Enter Contain Text\" });\n return \"\";\n } else {\n return objData;\n }\n }\n return \"\";\n };\n\n const handleSubmit = async () => {\n let RamAnswers = ramQuestions.map((data) => {\n return data.selectedChoice\n ? data.selectedChoice.toString()\n : setAnswerData(data);\n });\n console.log(\"Ram Answers-\", RamAnswers);\n const allAnswered = RamAnswers.findIndex((d) => d === \"\");\n // console.log(\"allAnswered - \", allAnswered);\n if (allAnswered === -1) {\n try {\n let ProjectID, ProjectAreas;\n // First API call\n if (selectedFlag === \"newProject\") {\n ProjectAreas = formData.Areas;\n let url1 = `${BASE_URL}${POST_PROJECTDETAILS_URL}`;\n let response1 = await axios.post(url1, formData);\n let { data: { recordset: recordSet = [] } = {}, error: error1 } =\n response1;\n ProjectID = recordSet[0].ProjectID;\n\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n\n // console.log(\"Project ID- \", ProjectID);\n // console.log(\"Response1\", response1);\n if (error1) {\n console.log(\"Error in Create Project\", response1.error);\n setBanner(true, \"error\", error1);\n throw new Error(error1); // Stop execution if there's an error\n } else {\n console.log(\"Project Created Successfully\", recordSet[0]);\n setBanner(true, \"success\", \"Project Created Successfully\");\n // LoadProjects(true);\n }\n } else if (selectedFlag === \"existingProject\") {\n ProjectID = selectedProject.ProjectID;\n ProjectAreas = selectedProject.Areas;\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n }\n // console.log(\"Project Area: \", ProjectAreas);\n let DHCIDreturnValue = \"\",\n EDTID;\n // Second API call\n if (ProjectAreas === \"Emerging Digital Technologies\") {\n // console.log(\"Inside\", ProjectAreas, ProjectID);\n const url2 = `${BASE_URL}${SAVE_EDT_SURVEY}`;\n const params = { ...EDTSurvey, projectId: ProjectID };\n const response2 = await axios.post(url2, params); //'saveEdt'\n // console.log(response2);\n EDTID = response2.data.edtId;\n dispatch({\n type: actions.SET_EDT,\n payload: response2.data,\n });\n } else {\n let url2 = `${BASE_URL}${POST_SURVEYDETAILS_URL}`;\n const params = { ...surveyAllData, ProjectID };\n let response2 = await axios.post(url2, params);\n let { error: error2, data: { recordset = [], returnValue } = {} } =\n response2;\n DHCIDreturnValue = returnValue;\n console.log(\"Response2\", response2);\n console.log(\"returnValue\", returnValue);\n // Check for errors in the second API call\n if (response2.error) {\n console.log(\"Error in Survey Details\", response2.error);\n setBanner(true, \"error\", response2.error);\n throw new Error(response2.error); // Stop execution if there's an error\n } else {\n dispatch({\n type: actions.SET_DHCID,\n payload: returnValue,\n });\n }\n }\n\n // Third API call\n const url3 = `${BASE_URL}${POST_RAMDETAILS_URL}`;\n const finalData = ramQuestions.map((data) => {\n const sectionData = colorList.find(\n (k) => k.SectionID === data.SectionID\n );\n return {\n ProjectID: ProjectID,\n QuestionID: data.QuestionID,\n SectionID: data.SectionID,\n Answer: data.selectedChoice\n ? data.selectedChoice.toString()\n : setAnswerData(data),\n colorCode: sectionData ? sectionData.color : \"\",\n userID: loginUser.UserID,\n DHCID: DHCIDreturnValue,\n EdtID: EDTID,\n };\n });\n // console.log(\"RRRReturnValue\", DHCIDreturnValue);\n console.log(\"Final Data URL 3- \", finalData);\n const found = finalData.findIndex((d) => d.Answer === \"\");\n console.log(\"FOUND-\", found);\n if (found === -1) {\n const response3 = await axios.post(url3, finalData); //\"submitRAM\"\n const { error } = response3;\n console.log(\"Response 3- \", response3);\n if (error) setBanner(true, \"error\", error);\n else {\n setBanner(true, \"info\", \"Successfully Added\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 1,\n },\n });\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n history.push(\"/ramResult\");\n // setTimeout(() => {\n // history.push(\"/ramResult\");\n // }, 2);\n }\n } else {\n setBanner(true, \"error\", \"Please Select All the Answer\");\n }\n } catch (error) {\n const errorCode = error.response ? error.response.status : 500;\n console.log(`RAM Survey not Submitted-`, error);\n history.push(\"/errorPage\", { error, errorCode });\n }\n } else {\n setBanner(true, \"error\", \"Please Select All the Answers\");\n }\n };\n\n // const handleSubmit = async () => {\n // try {\n // const url = `${BASE_URL}${POST_RAMDETAILS_URL}`;\n // const finalData = ramQuestions.map((data) => {\n // const sectionData = colorList.find(\n // (k) => k.SectionID === data.SectionID\n // );\n // return {\n // ProjectID: selectedProject.ProjectID,\n // QuestionID: data.QuestionID,\n // SectionID: data.SectionID,\n // Answer: data.selectedChoice\n // ? data.selectedChoice.toString()\n // : setAnswerData(data),\n // colorCode: sectionData ? sectionData.color : \"\",\n // userID: loginUser.UserID,\n // DHCID: DHCID,\n // EdtID: EDT.edtId,\n // };\n // });\n // const found = finalData.findIndex((d) => d.Answer === \"\");\n // if (found === -1) {\n // console.log(finalData);\n // dispatch({\n // type: actions.SET_RAM_FINAL_DATA,\n // payload: finalData,\n // });\n // const response = await axios.post(url, finalData); //\"submitRAM\"\n // console.log(response);\n // const { error } = response;\n // if (error) setBanner(true, \"error\", error);\n // else {\n // setBanner(true, \"info\", \"Successfully Added\");\n // return (\n // dispatch({\n // type: actions.SET_selectedMenuIndex,\n // payload: {\n // index: 1,\n // },\n // }),\n // // history.push('/review')\n // history.push(\"/ramResult\")\n // );\n // }\n // } else {\n // setBanner(true, \"error\", \"Please Select All the Answer\");\n // }\n // return undefined;\n // } catch (error) {\n // const errorCode = error.response ? error.response.status : 500;\n // console.log(`RAM Survey not Submitted-`, error.message);\n // history.push(\"/errorPage\", { error, errorCode });\n // }\n // };\n\n const handleChoiceChange = (e, id) => {\n console.log(id, e.target.value);\n const arr = ramQuestions.map((d) => {\n if (d.QuestionID === id) {\n const selectedData = ramQuestions.find(\n (k) => k.SectionID === d.SectionID && k.QuestionID !== d.QuestionID\n );\n if (id < selectedData.QuestionID) {\n const test = defaultColorCode.find(\n (item) =>\n item.sId === Number(e.target.value) &&\n item.lId === selectedData.selectedChoice\n );\n const found = colorList.findIndex(\n (e1) => e1.SectionID === d.SectionID\n );\n if (found === -1) {\n colorList.push({\n SectionID: d.SectionID,\n color: test ? test.color : \"\",\n });\n } else {\n colorList.splice(found, 1);\n const colors = test ? test.color : \"\";\n colorList.push({ SectionID: d.SectionID, color: colors });\n }\n } else {\n const test = defaultColorCode.find(\n (item) =>\n item.sId === selectedData.selectedChoice &&\n item.lId === Number(e.target.value)\n );\n const found = colorList.findIndex(\n (e1) => e1.SectionID === d.SectionID\n );\n if (found === -1) {\n colorList.push({\n SectionID: d.SectionID,\n color: test ? test.color : \"\",\n });\n } else {\n colorList.splice(found, 1);\n const colors = test ? test.color : \"\";\n colorList.push({ SectionID: d.SectionID, color: colors });\n }\n }\n console.log(e.target.value);\n return {\n ...d,\n selectedChoice: Number(e.target.value),\n };\n }\n return { ...d };\n });\n dispatch({\n type: actions.SET_RAMQuestions,\n payload: arr,\n });\n };\n\n return (\n <>\n {banner.show && (\n setBanner(false, \"\", \"\")} />\n )}\n \n \n MCDS PROJECT RISK ASSESMENT\n \n
\n \n The survey will take approximately 6 minutes to complete\n \n }\n variant=\"transparent\"\n onClick={() => {\n setOpen(true);\n }}\n />\n
\n
\n
\n
\n
\n
\n\n {ramQuestions && ramQuestions.length === 0 ? (\n \n \n \n ) : (\n ramQuestions.map((data, index) => {\n const arr = [0, 1, 14, 15, 16, 17];\n //selectedData is responsible for the thin side color bar on the right for each section\n const selectedData = colorList.find(\n (item) => item.SectionID === data.SectionID\n );\n if (arr.includes(index)) {\n return (\n \n \n \n );\n } else {\n //color is visible only when the 2nd question of the section is answered\n if (index % 2 !== 0) {\n return false;\n }\n return (\n <>\n \n \n \n
\n {ramQuestions.length !== Number(index + 1) && (\n \n )}\n \n
\n \n );\n }\n })\n )}\n
\n {ramQuestions.length !== 0 && (\n
\n handleSubmit()}\n style={{ marginBottom: \"100px\" }}\n >\n SUBMIT\n \n
\n )}\n
\n\n \n \n MCDS Project Risk Assessment\n \n
\n \n This form aims to create a qualitative assessment of the risks\n involved in putting a data science/computational science project into\n production. The outcomes of this risk assessment will lead to a\n decision on whether Technical Assurance is required for the project.\n
\n
\n This survey should be completed by the Project Lead or Digital\n Opportunity/Product Owner.\n
\n
\n
\n Please rate the project against the risks below, keeping in mind that\n indication should include:\n
    \n
  • Worst case Potential risk (how bad it can be)
  • \n
  • Without barriers (missing or failed)
  • \n
  • Based on historical incidents
  • \n
\n \n Identify potential consequences, specifically the “worst-case”\n consequences that could develop from the hazard under the prevailing\n conditions. Ask the question “What could happen if the controls don't\n work or are not in place?‟\n
\n
\n The Likelihood level is judged from past experience, by asking the\n question ”How often has a hazard release resulted in a consequence\n similar to the present one?‟\n
\n
\n Detailed guidance and examples of Consequences for each risk can be\n found{\" \"}\n \n here\n \n .\n
\n
\n For further questions, please contact Lydia Stanier ({\" \"}\n Lydia.Stanier@shell.com)\n or Tharini Thirukkumar (\n \n Tharini.Thirukkumar@shell.com\n \n )\n
\n \n \n );\n}\n","import React from \"react\";\nimport * as XLSX from \"xlsx\";\nimport orderBy from \"lodash.orderby\";\nimport get from \"lodash.get\";\nimport { Button, Text, Tooltip } from \"@sede-x/shell-ds-react-framework\";\nimport { Download } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\n\n//Transforming data\nconst handleExport = (\n DigitalHeathCheckID,\n createdDate,\n projectName,\n RAMId,\n reviewRAMDetails,\n reviewInDetails,\n shouldExport\n) => {\n // console.log(\"handleExport called\", shouldExport); // New log statement\n // console.log(\"reviewInDetails:\", reviewInDetails); // New log statement\n // console.log(\"reviewRAMDetails:\", reviewRAMDetails); // New log statement\n // console.log(\"DigitalHeathCheckID:\", DigitalHeathCheckID); // New log statement\n // console.log(\"RAMId:\", RAMId);\n let toExportCA;\n let toExportSE;\n if (DigitalHeathCheckID) {\n const filteredCaDetails = reviewInDetails.filter(\n (detail) =>\n detail.DigitalHeathCheckID === DigitalHeathCheckID &&\n detail.SurveyID === 2\n );\n const filteredSeDetails = reviewInDetails.filter(\n (detail) =>\n detail.DigitalHeathCheckID === DigitalHeathCheckID &&\n detail.SurveyID === 1\n );\n\n const orderedCA = orderBy(filteredCaDetails, \"QuestionID\", \"asc\");\n const orderedSE = orderBy(filteredSeDetails, \"QuestionID\", \"asc\");\n\n toExportCA = orderedCA.map((data) => ({\n Question: data.QuestionDisplay,\n \"Agreement Level\": data.AgreementLevel,\n \"Required Level\": data.RequiredLevelofAgreementID,\n \"Recommended Level\": data.RecommendedLevelofAgreementID,\n }));\n\n toExportSE = orderedSE.map((data) => ({\n Question: data.QuestionDisplay,\n \"Agreement Level\": data.AgreementLevel,\n \"Required Level\": data.RequiredLevelofAgreementID,\n \"Recommended Level\": data.RecommendedLevelofAgreementID,\n }));\n }\n\n // if RAM is present\n let toExportRAM;\n if (RAMId) {\n const filteredRAM = reviewRAMDetails.filter(\n (details) => details.RAMID === RAMId\n );\n console.log(filteredRAM);\n toExportRAM = filteredRAM.map((data) => {\n if (data.QuestionID > 14) {\n return {\n Question: data.Question,\n Answer: data.Answer,\n };\n }\n return {\n Question: data.Question,\n Answer: data.ChoiceDesc,\n };\n });\n }\n console.log(\"handleExport finished\"); // New log statement\n if (shouldExport) {\n const exportName = `${projectName}_Survey_On_${createdDate}`;\n exportToCSV(\n DigitalHeathCheckID,\n toExportCA,\n toExportSE,\n toExportRAM,\n exportName\n );\n } else {\n return { toExportCA, toExportSE, toExportRAM };\n }\n};\n\n// New function handleExportAll\nconst handleExportAll = (reviewDetails, reviewRAMDetails, reviewInDetails) => {\n console.log(\"handleExportAll called\"); // New log statement\n\n const wb = XLSX.utils.book_new();\n let allCAData = [];\n let allSEData = [];\n let allRAMData = [];\n\n reviewDetails.forEach((project, index) => {\n console.log(\"project:\", project);\n let localRamID;\n if (project.digitalheathcheckid) {\n // Only check for digitalheathcheckid\n const selectedRAMData = reviewRAMDetails.find(\n (r) => r.DHCID === project.digitalheathcheckid\n );\n localRamID = get(selectedRAMData, \"RAMID\");\n }\n\n const data = handleExport(\n project.digitalheathcheckid,\n new Date(project.CreatedDate).toDateString(),\n project.ProjectName,\n localRamID,\n reviewRAMDetails,\n reviewInDetails,\n false // Pass false for shouldExport\n );\n\n console.log(\"toExportCA:\", data.toExportCA);\n console.log(\"toExportSE:\", data.toExportSE);\n console.log(\"toExportRAM:\", data.toExportRAM);\n\n if (data.toExportCA && data.toExportSE) {\n data.toExportCA.forEach((item) => {\n allCAData.push({ ProjectName: project.ProjectName, ...item });\n });\n data.toExportSE.forEach((item) => {\n allSEData.push({ ProjectName: project.ProjectName, ...item });\n });\n }\n\n if (data.toExportRAM) {\n data.toExportRAM.forEach((item) => {\n allRAMData.push({ ProjectName: project.ProjectName, ...item });\n });\n }\n });\n\n if (allCAData.length > 0) {\n const ws1 = XLSX.utils.json_to_sheet(allCAData);\n XLSX.utils.book_append_sheet(wb, ws1, `Content Assurance`);\n }\n\n if (allSEData.length > 0) {\n const ws2 = XLSX.utils.json_to_sheet(allSEData);\n XLSX.utils.book_append_sheet(wb, ws2, `Software Engineering`);\n }\n\n if (allRAMData.length > 0) {\n const ws3 = XLSX.utils.json_to_sheet(allRAMData);\n XLSX.utils.book_append_sheet(wb, ws3, `RAM`);\n }\n\n if (wb.SheetNames.length > 0) {\n const date = new Date();\n const dateString = `${date.getFullYear()}-${\n date.getMonth() + 1\n }-${date.getDate()}`;\n const exportName = `All_Surveys_${dateString}`;\n XLSX.writeFile(wb, exportName + fileExtension);\n } else {\n console.log(\"No data to export\");\n }\n};\n\n//Exporting to excel\nconst fileExtension = \".xlsx\";\nconst exportToCSV = (\n DigitalHeathCheckID,\n caData,\n seData,\n ramData,\n exportName\n) => {\n const wb = XLSX.utils.book_new();\n if (DigitalHeathCheckID) {\n var ws1 = XLSX.utils.json_to_sheet(caData);\n var ws2 = XLSX.utils.json_to_sheet(seData);\n XLSX.utils.book_append_sheet(wb, ws1, \"Content Assurance\");\n XLSX.utils.book_append_sheet(wb, ws2, \"Software Engineering\");\n }\n\n if (ramData) {\n var ws3 = XLSX.utils.json_to_sheet(ramData);\n XLSX.utils.book_append_sheet(wb, ws3, \"RAM\");\n }\n\n XLSX.writeFile(wb, exportName + fileExtension);\n};\n\nconst Export = ({\n dhcID,\n date,\n projectName,\n ramDetails,\n reviewInDetails,\n ramId,\n shouldExport,\n}) => {\n return (\n <>\n }\n onClick={() => {\n let localRamID;\n if (dhcID && !ramId) {\n const selectedRAMData = ramDetails.find(\n (r) => r.DHCID === dhcID\n );\n localRamID = get(selectedRAMData, \"RAMID\");\n } else if (ramId) {\n localRamID = ramId;\n }\n\n handleExport(\n dhcID,\n date,\n projectName,\n localRamID,\n ramDetails,\n reviewInDetails,\n shouldExport\n );\n }}\n >\n }\n />\n \n );\n};\n\nexport default Export;\nexport { handleExportAll };\n","import React, { useState, useRef, useEffect, useContext, useMemo } from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport { amber } from '@material-ui/core/colors';\nimport {\n Comment,\n ExpandMore,\n GridOnOutlined,\n SearchOutlined,\n} from '@material-ui/icons';\nimport {\n Paper,\n Collapse,\n Avatar,\n Typography,\n IconButton,\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Tooltip,\n LinearProgress,\n Chip,\n Divider,\n Button,\n AccordionActions,\n TextField,\n InputAdornment,\n} from '@material-ui/core';\nimport MuiAccordion from '@material-ui/core/Accordion';\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\nimport MuiAccordionDetails from '@material-ui/core/AccordionDetails';\nimport { api, details } from '../../api';\nimport { SummaryView, Comments, QuestionComment } from '../survey';\nimport { Context, actions } from '../../context';\nimport orderBy from 'lodash.orderby';\n\nimport {\n Table,\n TableBody,\n TableContainer,\n TableHead,\n TableRow,\n TableCell,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport get from 'lodash.get';\n\nimport { Question } from 'survey-react';\nimport Export from './Export';\n\nconst surveyAllTypes = [\n ['CA', 'Quality Metrics - Content Assurance'],\n ['SE', 'Quality Metrics - Software Engineering'],\n ['RAM', 'Risk Assessment Matrix'],\n];\n\nconst surveyDHCTypes = [\n ['CA', 'Quality Metrics - Content Assurance'],\n ['SE', 'Quality Metrics - Software Engineering'],\n];\n\nconst levelColorCode = {\n Agree: '#008443',\n 'Strongly Agree': '#008443',\n Neutral: '#EB8705',\n Disagree: '#DD1D21',\n 'Strongly Disagree': '#DD1D21',\n 'Too Early': '#808080',\n};\n\nexport default function ReviewPage() {\n const classes = useStyles();\n const [state, dispatch] = useContext(Context);\n const [reviews, setReviews] = useState({\n reviewDetails: [],\n reviewInDetails: [],\n reviewRAMDetails: [],\n });\n const [expanded, setExpanded] = React.useState('panel0');\n const handleChange = (panel) => (event, newExpanded) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n const [detailExpanded, setDetailExpanded] = useState(false);\n const handleDetailChange = (panel, id) => (_, isExpanded) => {\n setDetailExpanded(isExpanded ? `${panel}:${id}` : false);\n };\n\n const [expandedFeedback, setExpandedFeedback] = useState(false);\n const [expandedQueFeedback, setExpandedQueFeedback] = useState(false);\n const [questionId, setQuestionId] = useState(0);\n const [collapsedRow, setCollapsedRow] = useState(null);\n const [loading, setLoading] = useState(false);\n const { BASE_URL, GET_REVIEWDETAILS_URL } = details;\n let { reviewDetails, reviewInDetails, reviewRAMDetails } = reviews;\n\n //Search Filter\n const [searchQuery, setSearchQuery] = useState('');\n const [domainFilters, setDomainFilters] = useState([]);\n const filteredReviews = useMemo(() => {\n if (domainFilters.length === 0) {\n return reviewDetails.filter((item) => {\n return item.ProjectName.toLowerCase().includes(\n searchQuery.toLowerCase()\n );\n // return domainFilters.includes(item.Areas);\n });\n } else {\n let filteredResults;\n filteredResults = reviewDetails.filter((item) => {\n return domainFilters.includes(item.Areas);\n });\n return filteredResults.filter((item) => {\n return item.ProjectName.toLowerCase().includes(\n searchQuery.toLowerCase()\n );\n });\n }\n }, [reviewDetails, searchQuery, domainFilters]);\n\n //Domain Filter Chip\n const [chipFilters, setChipFilters] = useState([\n { key: 0, label: 'Data Science', variant: 'outlined' },\n { key: 1, label: 'Computational Science', variant: 'outlined' },\n { key: 2, label: 'Financial Operations', variant: 'outlined' },\n ]);\n\n const handleFilterClick = (key) => {\n const newChipFilters = [...chipFilters];\n newChipFilters[key].variant =\n newChipFilters[key].variant === 'outlined' ? 'default' : 'outlined';\n setChipFilters(newChipFilters);\n // setDomainFilter([...domainFilter, chipFilters[key].label]);\n const newFilter = chipFilters[key].label;\n const filterIndex = domainFilters.indexOf(newFilter);\n if (filterIndex === -1) {\n setDomainFilters([...domainFilters, newFilter]);\n } else {\n const newDomainFilters = [...domainFilters];\n newDomainFilters.splice(filterIndex, 1);\n setDomainFilters(newDomainFilters);\n }\n };\n\n const usePrevious = (value = []) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n };\n\n const previousReviews = usePrevious(reviewDetails);\n\n useEffect(() => {\n setLoading(true);\n if (\n reviewDetails.length === 0 ||\n previousReviews.length !== reviewDetails.length\n ) {\n fetchReviews();\n }\n }, []);\n\n const fetchReviews = async () => {\n let url = `${BASE_URL}${GET_REVIEWDETAILS_URL}`;\n let response = await api.getCalls('fetchReviews', url);\n console.log(response);\n\n let { data: { recordsets = [] } = {}, error } = response;\n let [Details, InDetails, RAMDetails, RAMAllDetails] = recordsets;\n if (error) {\n setBanner(true, 'error', error);\n setLoading(false);\n } else {\n setReviews((prevState) => ({\n ...prevState,\n reviewDetails: [...Details, ...RAMAllDetails],\n reviewInDetails: InDetails,\n reviewRAMDetails: RAMDetails.filter(\n (d) => d.QuestionID !== 1 && d.QuestionID !== 2\n ),\n }));\n setLoading(false);\n }\n };\n\n console.log(reviews);\n const setBanner = (show, type = 'error', message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n const handleCommentClick = (queId) => {\n if (\n questionId !== 0 &&\n expandedQueFeedback === true &&\n questionId !== queId\n ) {\n setQuestionId(queId);\n } else {\n setExpandedQueFeedback(!expandedQueFeedback);\n setQuestionId(queId);\n }\n };\n\n const getReviewInDetail = (details, id, projectid, RAMId) => {\n let [panel, title] = details;\n\n let arr = [15, 16, 17];\n let tableRow = (\n id,\n question,\n agreement,\n SurveyID,\n Answer,\n ChoiceDesc,\n ColorCode,\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n ) => {\n const agreementColor = Object.keys(levelColorCode).filter(\n (key) => key === agreement\n );\n const requiredLevelColor = Object.keys(levelColorCode).filter(\n (key) => key === RequiredLevelofAgreementID\n );\n const recommendedLevelColor = Object.keys(levelColorCode).filter(\n (key) => key === RecommendedLevelofAgreementID\n );\n return (\n <>\n \n \n {`${\n panel === 'RAM'\n ? `${id - 2}. ${question}`\n : `${OrderID}. ${question}`\n }`}\n {\n handleCommentClick(id);\n }}\n className=\"contentPadding\"\n >\n \n \n \n \n \n {panel === 'RAM' ? (\n <>\n \n {arr.includes(id)\n ? Answer\n : id === 18\n ? Answer.split(';')\n .slice(0, -1)\n .map((d, index) => {\n if (Answer.length - 1 === index) {\n return {d};\n } else {\n return (\n <>\n {d}\n
\n \n );\n }\n })\n : ChoiceDesc}\n \n \n ) : (\n <>\n \n {agreement}\n \n \n {RequiredLevelofAgreementID}\n \n \n {RecommendedLevelofAgreementID}\n \n \n )}\n
\n {questionId === id && expandedQueFeedback && (\n \n \n \n \n \n )}\n \n );\n };\n return (\n \n }\n aria-controls={`panel${panel}-content`}\n id={id}\n className=\"heading\"\n >\n {title}\n \n \n \n \n \n {panel === 'RAM' ? (\n \n \n Question\n {' '}\n \n Answer\n \n \n ) : (\n \n \n Question\n \n \n Agreement Level\n \n \n Required Level\n \n \n Recommended Level\n \n \n )}\n \n {panel === 'RAM' ? (\n \n {\n reviewRAMDetails.map((row) => {\n let {\n Answer,\n QuestionID,\n Question,\n ChoiceDesc,\n SurveyID,\n ProjectID,\n ColorCode,\n RAMID,\n } = row;\n if (RAMId === RAMID) {\n // console.log(RAMId);\n //console.log(SurveyID, Question, Answer, ColorCode);\n return tableRow(\n QuestionID,\n Question,\n '',\n SurveyID,\n Answer,\n ChoiceDesc,\n ColorCode\n );\n }\n })\n // .filter((data) => data)}{' '}\n }\n \n ) : (\n \n {orderBy(reviewInDetails, 'QuestionID', 'asc')\n .map((row) => {\n let {\n DigitalHeathCheckID,\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n OrderID,\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n } = row;\n if (id === DigitalHeathCheckID) {\n if (panel === 'CA' && SurveyID === 2)\n return tableRow(\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n '',\n '',\n '',\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n );\n else if (panel === 'SE' && SurveyID === 1)\n return tableRow(\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n '',\n '',\n '',\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n );\n }\n })\n .filter((data) => data)}\n \n )}\n \n \n \n \n );\n };\n\n // Review Project Names\n\n return (\n
\n {loading && }\n {reviewDetails && reviewDetails.length === 0 ? (\n <>\n ) : (\n <>\n
\n
\n \n \n \n ),\n }}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n
\n
\n {chipFilters.map((filter) => (\n handleFilterClick(filter.key)}\n />\n ))}\n
\n
\n {(filteredReviews || []).map((item, idx) => {\n let {\n digitalheathcheckid,\n ProjectName,\n Areas,\n Description,\n EmailID,\n ComplexityID,\n ComplexityLevel,\n ComplexityDescription,\n ImpactID,\n ImpactLevel,\n ImpactDescription,\n projectid,\n } = item;\n let selectedArr = [];\n let selectedRAMArr = [];\n const ImpactColor =\n ImpactLevel === 'Low'\n ? '#008443'\n : ImpactLevel === 'Medium'\n ? '#EB8705'\n : '#DD1D21';\n const complexityColor =\n ComplexityLevel === 'Low'\n ? '#008443'\n : ComplexityLevel === 'Medium'\n ? '#EB8705'\n : '#DD1D21';\n reviewInDetails\n .filter((d) => d.ProjectID === projectid)\n .map((item) => {\n const found = selectedArr.findIndex(\n (e1) => e1.DigitalHeathCheckID === item.DigitalHeathCheckID\n );\n if (found === -1) {\n selectedArr.push({\n DigitalHeathCheckID: item.DigitalHeathCheckID,\n contentSurveyResult: item.contentSurveyResult,\n softwareSurveyResult: item.softwareSurveyResult,\n CreatedDate: item.CreatedDate,\n });\n }\n });\n reviewRAMDetails\n .filter((d) => d.ProjectID === projectid)\n .map((item) => {\n const found = selectedRAMArr.findIndex(\n (e1) => e1.RAMID === item.RAMID\n );\n if (found === -1) {\n selectedRAMArr.push({\n RAMID: item.RAMID,\n TARequiredOrNot: item.TARequiredOrNot,\n CreatedDate: item.CreatedDate,\n });\n }\n });\n const selectedDataForRAM = selectedRAMArr.find(\n (d) => d.TARequiredOrNot\n );\n\n return (\n \n \n }\n aria-controls=\"panel-content\"\n id=\"panel-header\"\n >\n
\n \n {ProjectName}\n \n
\n
\n \n {Areas}\n \n
\n
\n {digitalheathcheckid ? (\n \n {get(selectedDataForRAM, 'TARequiredOrNot')\n ? 'Technical Assurance is required'\n : 'Technical Assurance is not required'}\n \n ) : (\n <>\n \n {get(selectedDataForRAM, 'TARequiredOrNot')\n ? 'Technical Assurance is required'\n : 'Technical Assurance is not required'}\n \n \n )}\n
\n \n \n \n \n \n Description: {Description}\n \n {ImpactID ? (\n \n Impact Classification: {' '}\n \n {ImpactLevel}\n \n {` (${ImpactDescription})`}
\n
\n ) : null}\n {ComplexityID ? (\n \n Complexity: {' '}\n \n {ComplexityLevel}\n \n {` (${ComplexityDescription})`}
\n
\n ) : null}\n
\n
\n {digitalheathcheckid\n ? orderBy(selectedArr, 'CreatedDate', 'desc').map((e) => {\n const selectedRAMData = reviewRAMDetails.find(\n (r) => r.DHCID === e.DigitalHeathCheckID\n );\n return (\n <>\n
\n \n \n \n
\n {new Date(e.CreatedDate).toDateString()}\n \n
\n
\n {digitalheathcheckid && (\n \n )}\n
\n {(selectedRAMData\n ? surveyAllTypes\n : surveyDHCTypes\n ).map((details, index) =>\n getReviewInDetail(\n details,\n e.DigitalHeathCheckID,\n projectid,\n get(selectedRAMData, 'RAMID')\n )\n )}\n
\n
\n
\n \n );\n })\n : orderBy(selectedRAMArr, 'CreatedDate', 'desc').map(\n (e) => {\n return (\n <>\n \n \n {/* \n {e.TARequiredOrNot\n ? 'Technical Assurance is required'\n : 'Technical Assurance is not required'}\n \n
*/}\n \n
\n {new Date(e.CreatedDate).toDateString()}\n \n
\n
\n\n {getReviewInDetail(\n ['RAM', 'Risk Assessment Matrix'],\n '',\n projectid,\n e.RAMID\n )}\n
\n
\n
{' '}\n
\n \n );\n }\n )}\n \n {\n setExpandedFeedback(!expandedFeedback);\n }}\n >\n \n \n \n \n
\n \n \n
\n );\n })}\n \n )}\n \n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n // root: {\n // height: 'auto',\n // width: 'auto',\n // textAlign: 'left',\n // },\n root: {\n width: '100%',\n marginTop: '5px',\n },\n title: {\n textTransform: 'capitalize',\n },\n header: {\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n marginBottom: '35px',\n },\n search: {\n // width: '30%',\n },\n filters: {\n display: 'flex',\n flexBasis: '60%',\n justifyContent: 'space-evenly',\n },\n reviews: { margin: '10px' },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n icon: {\n verticalAlign: 'bottom',\n height: 20,\n width: 20,\n },\n export: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n details: {\n display: 'initial',\n },\n column: {\n flexBasis: '33.33%',\n },\n helper: {\n borderLeft: `2px solid ${theme.palette.divider}`,\n padding: theme.spacing(1, 2),\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n main: {\n marginBottom: '4px',\n },\n media: {\n height: 0,\n paddingTop: '56.25%', // 16:9\n },\n expand: {\n transform: 'rotate(0deg)',\n marginLeft: 'auto',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest,\n }),\n },\n expandOpen: {\n transform: 'rotate(180deg)',\n },\n avatar: {\n backgroundColor: amber[500],\n },\n table: {\n minWidth: 650,\n },\n cellPadding: {\n padding: '5px',\n borderBottom: '0.2px solid grey',\n },\n}));\n\nconst Accordion = withStyles({\n root: {\n border: '1px solid rgba(0, 0, 0, .125)',\n boxShadow: 'none',\n '&:not(:last-child)': {\n borderBottom: 0,\n },\n '&:before': {\n display: 'none',\n },\n '&$expanded': {\n margin: 'auto',\n backgroundColor: '#FBCE07',\n },\n },\n expanded: {},\n})(MuiAccordion);\n\nconst AccordionSummary = withStyles({\n root: {\n backgroundColor: 'rgba(0, 0, 0, .03)',\n borderBottom: '1px solid rgba(0, 0, 0, .125)',\n marginBottom: -1,\n minHeight: 56,\n '&$expanded': {\n minHeight: 56,\n },\n },\n content: {\n '&$expanded': {\n margin: '12px 0',\n },\n },\n expanded: {},\n})(MuiAccordionSummary);\n\nconst AccordionDetails = withStyles((theme) => ({\n root: {\n padding: theme.spacing(2),\n },\n}))(MuiAccordionDetails);\n","import {\n FormField,\n Grid,\n Option,\n Select,\n Text,\n Tooltip,\n} from \"@sede-x/shell-ds-react-framework\";\nimport React, { useCallback } from \"react\";\nimport orderBy from \"lodash.orderby\";\nimport { InfoCircle } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\n\nconst DhcQuestionView = React.memo(\n ({\n data,\n marks,\n heading,\n onSliderChange,\n handleIconClicks,\n queId,\n viewDesc,\n selectedData,\n index,\n }) => {\n const handleSliderChange = useCallback(\n (value) => {\n onSliderChange(\n value,\n `${data.QuestionID}_${data.SurveyID}_${data.RecommendedLevelofAgreementID}`\n );\n },\n [onSliderChange, data]\n );\n const handleIconClick = useCallback(\n () => handleIconClicks(data.QuestionID, index),\n [handleIconClicks, data.QuestionID, index]\n );\n return (\n \n \n
\n {data.CategoryName}\n
\n \n {data.OrderID}. \n {data.QuestionDisplay + \" \"}\n \n \n }\n placement=\"bottom\"\n />\n
\n {viewDesc[index] && (\n {data.Description}\n )}\n
\n
\n \n \n \n {orderBy(marks, \"AgreementID\", \"desc\").map((item, i) => {\n let { AgreementValueID, label } = item;\n return (\n \n );\n })}\n \n \n \n \n );\n }\n);\n\nconst styles = {\n infoCircle: {\n display: \"inline\",\n // justifyContent: \"center\",\n // alignItems: \"center\",\n // verticalalign: \"middle\",\n // iconPosition: \"stat\",\n },\n};\n\nexport default DhcQuestionView;\n","import React, { useState, useEffect } from \"react\";\nimport DhcQuestionView from \"./DhcQuestionView\";\n\nconst surveyHeading = {\n CA: \"Content Assurance Survey\",\n SE: \"Software Engineering Survey\",\n};\n\nconst DhcQuestions = (props) => {\n const [queId, setQueId] = useState(0);\n // const [viewDesc, setViewDesc] = useState(false);\n // console.log(\"M\", props.surveyQuestions.length);\n const [viewDesc, setViewDesc] = useState([]);\n useEffect(() => {\n // console.log(\"Survey Questions updated:\", props.surveyQuestions);\n // setViewDesc(\n // Array.from({ length: props.surveyQuestions.length }, () => false)\n // );\n setViewDesc((prevData) => {\n return Array.from({ length: props.surveyQuestions.length }, (_, index) =>\n index < prevData.length ? prevData[index] : false\n );\n });\n }, [props.surveyQuestions]);\n\n // console.log(props);\n // useEffect(() => {\n // setViewDesc(\n // Array.from({ length: props.surveyQuestions.length }, () => false)\n // );\n // }, []);\n // console.log(\"A\", viewDesc);\n let {\n surveyQuestions,\n agreementLevels,\n contentSurveyResult,\n softwareSurveyResult,\n setContentSurveyResult,\n setSoftwareSurveyResult,\n Heading,\n incremental = 0,\n marks = agreementLevels.map((val) => {\n let res = {\n AgreementID: val.AgreementID,\n AgreementValueID: val.AgreementValueID,\n value: incremental,\n label: val.AgreementLevel,\n };\n incremental = (incremental || 0) + 25;\n return res;\n }),\n } = props;\n\n const onSliderChange = (value, id) => {\n let ids = id,\n [Qid, Sid, RecommendedLevelofAgreementID] = ids.split(\"_\");\n let index = marks.findIndex((mark) => mark.AgreementValueID === value),\n getResult = (inputContent) => {\n let content = inputContent;\n let contentIndex = content.findIndex((res) => res.QuestionID === Qid);\n\n if (contentIndex >= 0) {\n content[contentIndex].LevelofAgreementID =\n marks[index].AgreementValueID;\n content[contentIndex].SurveyID = Sid;\n } else {\n content.push({\n QuestionID: Qid,\n SurveyID: Sid,\n RecommendedLevelofAgreementID: RecommendedLevelofAgreementID,\n LevelofAgreementID: marks[index].AgreementValueID,\n });\n }\n props.setCount(Heading, content.length);\n return content;\n };\n\n if (surveyHeading[Heading] === surveyHeading.CA) {\n setContentSurveyResult(getResult(contentSurveyResult));\n } else if (surveyHeading[Heading] === surveyHeading.SE) {\n setSoftwareSurveyResult(getResult(softwareSurveyResult));\n }\n };\n\n // useEffect(() => {\n // console.log(\"SSS\", viewDesc);\n // }, [viewDesc]);\n\n const handleIconClicks = (questionId, index) => {\n setQueId(questionId);\n // console.log(\"BB\", viewDesc);\n\n const newArray = [...viewDesc];\n newArray[index] = !newArray[index];\n // console.log(\"Saumya\", newArray);\n setViewDesc(newArray);\n };\n\n return (\n
\n {surveyQuestions.map((data, index) => {\n if (\n surveyHeading[Heading] === surveyHeading.CA &&\n data.SurveyID === 2\n ) {\n const found = contentSurveyResult.find(\n (item) => Number(item.QuestionID) === data.QuestionID\n );\n\n return (\n
\n \n
\n );\n } else if (\n surveyHeading[Heading] === surveyHeading.SE &&\n data.SurveyID === 1\n ) {\n const found = softwareSurveyResult.find(\n (item) => Number(item.QuestionID) === data.QuestionID\n );\n return (\n
\n \n
\n );\n }\n })}\n
\n );\n};\n\nexport default DhcQuestions;\n","import { ProgressBar, Text } from '@sede-x/shell-ds-react-framework';\nimport React from 'react';\n\nconst ScoreIndicator = ({ Score, text, size = 'medium' }) => {\n const ScoreCard = {\n veryGood: 'VERY GOOD',\n Good: 'GOOD',\n BelowMinimum: 'Below minimum',\n StandardResponses: 'Standard Responses',\n };\n const getScoreCard = (score) => {\n if (score < 50) {\n return ScoreCard.BelowMinimum;\n } else if (score >= 50 && score <= 60) {\n return ScoreCard.Good;\n } else if (score >= 60 && score <= 100) {\n return ScoreCard.veryGood;\n } else {\n return ScoreCard.StandardResponses;\n }\n };\n const value = Score !== null || Score !== '' ? Math.round(Number(Score)) : 0;\n return (\n
\n 50 && value < 60\n ? 'default'\n : 'positive'\n }\n />\n
\n {text} \n \n {text !== 'Required Level Agreement' ? (\n {getScoreCard(value)}\n ) : (\n getScoreCard()\n )}\n \n
\n );\n};\n\nexport default ScoreIndicator;\n","import React from 'react';\nimport ScoreIndicator from './ScoreIndicator';\nimport { Divider } from '@sede-x/shell-ds-react-framework';\n\nconst ScoreSummary = ({\n overallSurveyResult,\n contentSurveyResult,\n softwareSurveyResult,\n}) => {\n return (\n
\n
\n \n
\n \n\n
\n
\n

Content Assurance Survey

\n
\n \n
\n
\n
\n

Software Engineering Survey

\n
\n \n
\n
\n );\n};\n\nexport default ScoreSummary;\n","import React from \"react\";\nimport ScoreSummary from \"../../dasboard/ScoreSummary\";\nimport { Card, Grid, Text } from \"@sede-x/shell-ds-react-framework\";\nimport get from \"lodash.get\";\n\nconst DhcScoreSummary = ({\n ProjectName,\n Description,\n EmailID,\n overallSurveyResult,\n contentSurveyResult,\n softwareSurveyResult,\n complexity,\n complexity: { ComplexityLevel, ComplexityDescription },\n impact,\n impact: { ImpactLevel, ImpactDescription },\n selectedFlag,\n formData,\n}) => {\n if (selectedFlag === \"newProject\") {\n if (formData.ComplexityID === 1) {\n ComplexityLevel = \"Low\";\n ComplexityDescription = \"no code or >100 lines of code\";\n } else if (formData.ComplexityID === 2) {\n ComplexityLevel = \"Medium\";\n ComplexityDescription = \"100-10,000 lines of code\";\n } else if (formData.ComplexityID === 3) {\n ComplexityLevel = \"High\";\n ComplexityDescription = \"more than 10,000 lines of code\";\n }\n if (formData.ImpactID === 4) {\n ImpactLevel = \"Low\";\n ImpactDescription =\n \"Feasibility study/PoC/support with theoretical methods and modelling\";\n } else if (formData.ImpactID === 5) {\n ImpactLevel = \"Medium\";\n ImpactDescription =\n \"Pilot Mid size project (within portfolio) which uses simulation modelling\";\n } else if (formData.ImpactID === 6) {\n ImpactLevel = \"High\";\n ImpactDescription =\n \"Flagship projects(Business) critical process HSSE relevant\";\n } else if (formData.ImpactID === 10) {\n ImpactLevel = \"Low\";\n ImpactDescription =\n \"Feasibility Study/PoC with theoretical methods & modelling, ML or statistical content\";\n } else if (formData.ImpactID === 11) {\n ImpactLevel = \"Medium\";\n ImpactDescription =\n \"Pilot mid-size project (within a portfolio) using simulation modelling, ML or statistical methodology\";\n } else if (formData.ImpactID === 12) {\n ImpactLevel = \"High\";\n ImpactDescription = \"Flagship project with business-critical risks\";\n }\n }\n\n const ImpactColor =\n ImpactLevel === \"Low\"\n ? \"#008443\"\n : ImpactLevel === \"Medium\"\n ? \"#EB8705\"\n : \"#DD1D21\";\n\n const complexityColor =\n ComplexityLevel === \"Low\"\n ? \"#008443\"\n : ComplexityLevel === \"Medium\"\n ? \"#EB8705\"\n : \"#DD1D21\";\n return (\n <>\n
\n \n
\n \n \n Project Name: \n \n \n {ProjectName}\n \n {Description && (\n <>\n \n Description: \n \n \n {Description}\n \n \n )}\n\n {get(impact, \"ImpactID\") && (\n <>\n \n Impact Classification: \n \n \n \n \n {ImpactLevel} -\n \n {ImpactDescription}\n \n \n \n )}\n\n {get(complexity, \"ComplexityID\") && (\n <>\n \n Complexity: \n \n \n \n \n {ComplexityLevel} -\n \n {ComplexityDescription}\n \n \n \n )}\n \n Point of Contact: \n \n \n {EmailID}\n \n \n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default DhcScoreSummary;\n","import React, { useEffect } from \"react\";\nimport DhcScoreSummary from \"./DhcScoreSummary\";\n\nconst DhcSummary = ({\n contentSurveyResult = [],\n softwareSurveyResult = [],\n listofAgreementLevels,\n selectedProject,\n selectedProject: {\n ProjectName,\n Description,\n PointOfContactEmailID,\n ImpactID,\n ImpactLevel,\n ImpactDescription,\n ComplexityID,\n ComplexityLevel,\n ComplexityDescription,\n } = {},\n graphResult,\n setGraphResult,\n selectedFlag,\n formData,\n}) => {\n useEffect(() => {\n console.log(\"Summary Page - Form Data\", formData);\n }, []);\n useEffect(() => {\n surveyCalculation();\n }, []);\n\n const surveyCalculation = () => {\n let sumOfContentSurvey = contentSurveyResult.reduce((sum, res) => {\n return (\n sum +\n (res.LevelofAgreementID === -1\n ? 0\n : parseInt(res.LevelofAgreementID, 10) >\n parseInt(res.RecommendedLevelofAgreementID, 10)\n ? parseInt(res.RecommendedLevelofAgreementID, 10)\n : parseInt(res.LevelofAgreementID, 10))\n );\n }, 0);\n let sumOfSoftwareSurvey = softwareSurveyResult.reduce((sum, res) => {\n return (\n sum +\n (res.LevelofAgreementID === -1\n ? 0\n : parseInt(res.LevelofAgreementID, 10) >\n parseInt(res.RecommendedLevelofAgreementID, 10)\n ? parseInt(res.RecommendedLevelofAgreementID, 10)\n : parseInt(res.LevelofAgreementID, 10))\n );\n }, 0);\n let percentOfContentQuestions = contentSurveyResult.reduce((sum, res) => {\n return sum + parseInt(res.RecommendedLevelofAgreementID, 10);\n }, 0);\n\n let percentOfSoftwareQuestions = softwareSurveyResult.reduce((sum, res) => {\n return sum + parseInt(res.RecommendedLevelofAgreementID, 10);\n }, 0);\n\n let percentOfContentResult = Math.floor(\n (sumOfContentSurvey / percentOfContentQuestions) * 100\n );\n\n let percentOfSoftwareResult = Math.floor(\n (sumOfSoftwareSurvey / percentOfSoftwareQuestions) * 100\n );\n\n let overallSummary = Math.floor(\n (percentOfContentResult + percentOfSoftwareResult) / 2\n );\n\n setGraphResult((prevState) => ({\n ...prevState,\n contentSurveyResult: !isNaN(percentOfContentResult)\n ? percentOfContentResult\n : 0,\n softwareSurveyResult: !isNaN(percentOfSoftwareResult)\n ? percentOfSoftwareResult\n : 0,\n overallSurveyResult: !isNaN(overallSummary) ? overallSummary : 0,\n }));\n };\n\n return (\n \n );\n};\n\nexport default DhcSummary;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { details } from \"../../api\";\nimport axios from \"axios\";\nimport { Context, actions } from \"../../context\";\nimport {\n Button,\n Card,\n Grid,\n Loading,\n Stepper,\n Text,\n} from \"@sede-x/shell-ds-react-framework\";\nimport \"./DhcSurvey.css\";\nimport {\n Prompt,\n Redirect,\n useHistory,\n} from \"react-router-dom/cjs/react-router-dom\";\nimport DhcQuestions from \"./DhcQuestions\";\nimport orderBy from \"lodash.orderby\";\nimport DhcSummary from \"./DhcSummary\";\n\nconst steps = [\"Content Assurance\", \"Software Engineering\", \"Summary\"];\n\nconst DhcSurvey = () => {\n const [state, dispatch] = useContext(Context);\n const history = useHistory();\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n const [activeStep, setActiveStep] = useState(0);\n const [contentSurveyResult, setContentSurveyResult] = useState([]);\n const [softwareSurveyResult, setSoftwareSurveyResult] = useState([]);\n const [count, setCount] = useState({});\n const [graphResult, setGraphResult] = useState({\n contentSurveyResult: 0,\n softwareSurveyResult: 0,\n overallSurveyResult: 0,\n });\n\n const [loader, setLoader] = useState(false);\n\n const {\n BASE_URL,\n GET_QUESTIONS_URL,\n GET_AGREEMENTLEVEL_URL,\n POST_SURVEYDETAILS_URL,\n POST_PROJECTDETAILS_URL,\n SAVE_EDT_SURVEY,\n } = details;\n\n const {\n banner,\n selectedFlag,\n selectedProject,\n surveyQuestions,\n agreementLevels,\n surveyAllData,\n RAMNeeded,\n newProjectID,\n DHCID,\n EDT,\n EDTSurvey,\n } = state;\n const formData = state.formData;\n const contentFinalSurveyResult = state.contentFinalSurveyResult;\n const softwareFinalSurveyResult = state.softwareFinalSurveyResult;\n const [formSubmit, setFormSubmit] = useState(false);\n\n useEffect(() => {\n if (!formSubmit) {\n window.addEventListener(\"beforeunload\", alertUser);\n return () => {\n window.removeEventListener(\"beforeunload\", alertUser);\n };\n }\n }, [formSubmit]);\n\n const alertUser = (e) => {\n e.preventDefault();\n e.returnValue = \"You have unsaved changes, are you sure you want to leave?\";\n };\n\n useEffect(() => {\n if (!formSubmit) {\n const unblock = history.block((location, action) => {\n if (\n action === \"PUSH\" &&\n location.pathname !== \"/review\" &&\n location.pathname !== \"/riskAssessment\"\n ) {\n return window.confirm(\n \"You have unsaved changes, are you sure you want to leave this page?\"\n );\n }\n return true;\n });\n return () => unblock();\n }\n }, [history, formSubmit]);\n\n // useEffect(() => {\n // console.log(\"Survey Page - Form Data\", formData);\n // }, []);\n // useEffect(() => {\n // console.log(\"State\", state);\n // }, []);\n\n useEffect(() => {\n Promise.all([loadAgreementLevels(), loadSurveyQuestions()]);\n }, [selectedProject]);\n\n const loadAgreementLevels = async () => {\n try {\n let url = `${BASE_URL}${GET_AGREEMENTLEVEL_URL}`;\n let response = await axios.get(url); //\"loadAgreementLevels\",\n // let response1 = await api.getCalls(\"loadAgreementLevels\", url);\n let { data: { recordset: recordSet = [] } = {}, error } = response;\n // console.log(\"Agreement-\", response);\n error\n ? setBanner(true, \"error\", error)\n : dispatch({\n type: actions.SET_AgreementLevels,\n payload: recordSet,\n });\n } catch (error) {\n const errorCode = error.response ? error.response.status : 500;\n console.log(`Agreement Levels not Loaded-`, error.message);\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n const loadSurveyQuestions = async () => {\n try {\n let ComplexityID;\n if (selectedFlag === \"existingProject\") {\n ComplexityID = selectedProject.ComplexityID;\n } else {\n ComplexityID = formData.ComplexityID;\n }\n let url = `${BASE_URL}${GET_QUESTIONS_URL}`;\n // let response = await api.getCalls(\"loadSurveyQuestions\", url, {\n // ComplexityID,\n // });\n let response = await axios.get(url, { params: { ComplexityID } }); //\"loadSurveyQuestions\",\n let { data: { recordset: recordSet = [] } = {}, error } = response;\n // console.log(\"Complexity Call-\", response);\n\n if (error) setBanner(true, \"error\", error);\n else {\n if (selectedFlag === \"existingProject\") {\n dispatch({\n type: actions.SET_SurveyQuestions,\n payload: recordSet.filter((d) => d.Areas === selectedProject.Areas),\n });\n } else {\n dispatch({\n type: actions.SET_SurveyQuestions,\n payload: recordSet.filter((d) => d.Areas === formData.Areas),\n });\n }\n }\n } catch (error) {\n const errorCode = error.response ? error.response.status : 500;\n console.log(`DHC Survey Questions not Loaded-`, error.message);\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n const resetTakeSurvey = () => {\n dispatch({\n type: actions.SET_TakingSurvey,\n payload: !state.takingSurvey,\n });\n };\n\n const GetFeedbackCount = (type, num) => {\n switch (type) {\n case \"CA\":\n setCount({ ...count, CA: num });\n break;\n default:\n setCount({ ...count, SE: num });\n break;\n }\n };\n\n const setBanner = (show, type = \"error\", error) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message: error,\n },\n });\n };\n\n const getStepContent = (step) => {\n switch (step) {\n case 0:\n return (\n \n );\n case 1:\n return (\n \n );\n case 2:\n return (\n \n );\n }\n };\n\n const getfeedback = (activeStep) => {\n if (activeStep === 0) {\n return (\n surveyQuestions.filter((item) => item.SurveyID !== 1).length !==\n count.CA\n );\n } else {\n return (\n surveyQuestions.filter((item) => item.SurveyID !== 2).length !==\n count.SE\n );\n }\n };\n\n const handleNext = async () => {\n // console.log(\"State\", state);\n let { ProjectID } = selectedProject;\n if (activeStep === 0 && ProjectID && ProjectID !== null) {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n } else if (activeStep === 2) {\n setLoader(!loader);\n // let url = `${BASE_URL}${POST_SURVEYDETAILS_URL}`;\n let { UserID } = loginUser;\n // let response = await api.postCalls(\"submitSurvey\", url, {\n // UserID,\n // selectedProject,\n // contentSurveyResult,\n // softwareSurveyResult,\n // graphResult,\n // }); //\"submitSurvey\",\n\n // console.log(\"Content Survey Result\", contentSurveyResult);\n // console.log(\"Software Survey Result\", softwareSurveyResult);\n dispatch({\n type: actions.SET_CONTENT_SURVEY_RESULT,\n payload: contentSurveyResult,\n });\n dispatch({\n type: actions.SET_SOFTWARE_SURVEY_RESULT,\n payload: softwareSurveyResult,\n });\n const params = {\n UserID,\n contentSurveyResult,\n softwareSurveyResult,\n graphResult,\n };\n dispatch({\n type: actions.SET_SURVEY_ALL_DATA,\n payload: params,\n });\n if (RAMNeeded) {\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n history.push(\"/riskAssessment\");\n } else {\n try {\n let ProjectID, ProjectAreas;\n // First API call\n if (selectedFlag === \"newProject\") {\n ProjectAreas = formData.Areas;\n let url1 = `${BASE_URL}${POST_PROJECTDETAILS_URL}`;\n let response1 = await axios.post(url1, formData);\n let { data: { recordset: recordSet = [] } = {}, error: error1 } =\n response1;\n ProjectID = recordSet[0].ProjectID;\n\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n\n // console.log(\"Project ID- \", ProjectID);\n // console.log(\"Response1\", response1);\n if (error1) {\n console.log(\"Error in Create Project\", response1.error);\n setBanner(true, \"error\", error1);\n throw new Error(error1); // Stop execution if there's an error\n } else {\n console.log(\"Project Created Successfully\", recordSet[0]);\n }\n } else if (selectedFlag === \"existingProject\") {\n ProjectID = selectedProject.ProjectID;\n ProjectAreas = selectedProject.Areas;\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n }\n // console.log(\"Project Area: \", ProjectAreas);\n let DHCIDreturnValue = \"\",\n EDTID;\n // Second API call\n if (ProjectAreas === \"Emerging Digital Technologies\") {\n // console.log(\"Inside\", ProjectAreas, ProjectID);\n const url2 = `${BASE_URL}${SAVE_EDT_SURVEY}`;\n const params = { ...EDTSurvey, projectId: ProjectID };\n const response2 = await axios.post(url2, params); //'saveEdt'\n // console.log(response2);\n EDTID = response2.data.edtId;\n dispatch({\n type: actions.SET_EDT,\n payload: response2.data,\n });\n } else {\n let url2 = `${BASE_URL}${POST_SURVEYDETAILS_URL}`;\n const params1 = { ...params, ProjectID };\n console.log(\"Params - \", params1);\n let response2 = await axios.post(url2, params1);\n let { error: error2, data: { recordset = [], returnValue } = {} } =\n response2;\n DHCIDreturnValue = returnValue;\n console.log(\"Response2 DS\", response2);\n console.log(\"returnValue\", returnValue);\n // Check for errors in the second API call\n if (response2.error) {\n console.log(\"Error in Survey Details\", response2.error);\n setBanner(true, \"error\", response2.error);\n throw new Error(response2.error); // Stop execution if there's an error\n } else {\n dispatch({\n type: actions.SET_DHCID,\n payload: returnValue,\n });\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 1,\n },\n });\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n history.push(\"/review\");\n }\n }\n } catch (error) {\n console.log(\"Error in Survey Details\", error);\n console.log(`Project Not Created-`, error.message);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n }\n }\n } else setActiveStep((prevActiveStep) => prevActiveStep + 1);\n };\n\n useEffect(() => {\n if (formData) {\n console.log(\"Content SURVEY CONTENT: \", state.contentFinalSurveyResult);\n console.log(\"SOFTWARE SURVEY CONTENT: \", state.softwareFinalSurveyResult);\n }\n }, [state.contentFinalSurveyResult, state.softwareFinalSurveyResult]);\n\n const handleBack = () => {\n if (activeStep === 0) {\n history.push(\"/home\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 5,\n },\n });\n dispatch({\n type: actions.SET_SelectedFlag,\n payload: {\n selectedFlag: \"searchProject\",\n },\n });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n }\n };\n\n const getNextText = (activeStep) => {\n switch (activeStep) {\n case 0:\n return \"NEXT\";\n case 1:\n return \"NEXT\";\n case 2:\n return RAMNeeded ? \"RAM SURVEY\" : \"SUBMIT\";\n default:\n return \"SAVE AND CONTINUE\";\n }\n };\n\n return (\n <>\n \n {activeStep === steps.length ? (\n \n ) : (\n
\n \n \n {steps.map((label, index) => (\n \n ))}\n \n \n
\n
\n {activeStep === steps.length ? (\n resetTakeSurvey()\n ) : (\n
\n {activeStep === 0 && (\n <>\n \n
\n \n \n Project Name:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.ProjectName}\n ) : (\n {formData.Name}\n )}\n \n {(selectedProject.FunnelProjectID ||\n formData.FunnelProjectID) && (\n <>\n \n Project Opportunity ID:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.FunnelProjectID}\n ) : (\n {formData.FunnelProjectID}\n )}\n \n \n )}\n\n \n Domain:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.Areas}\n ) : (\n {formData.Areas}\n )}\n \n \n
\n
\n
\n
\n \n )}\n\n {getStepContent(activeStep)}\n {surveyQuestions.length === 0 && agreementLevels.length === 0 && (\n \n \n
\n )}\n
\n \n BACK\n \n \n {\" \"}\n {getNextText(activeStep)}\n \n
\n
\n )}\n
\n \n )}\n \n );\n};\n\nexport default DhcSurvey;\n","import {\n Accordion,\n AccordionPanel,\n Table,\n} from \"@sede-x/shell-ds-react-framework\";\nimport {\n TBody,\n TD,\n TH,\n THead,\n TR,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Table/Table.styles\";\nimport React from \"react\";\nimport orderBy from \"lodash.orderby\";\n\nconst levelColorCode = {\n Agree: \"#008443\",\n \"Strongly Agree\": \"#008443\",\n Neutral: \"#EB8705\",\n Disagree: \"#DD1D21\",\n \"Strongly Disagree\": \"#DD1D21\",\n \"Too Early\": \"#808080\",\n};\n\nconst ReviewDetails = ({\n details,\n id,\n projectid,\n RAMId,\n reviewRAMDetails,\n reviewInDetails,\n}) => {\n let [panel, title] = details;\n const tableRow = (\n id,\n question,\n agreement,\n SurveyID,\n Answer,\n ChoiceDesc,\n ColorCode,\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n ) => {\n const agreementColor = Object.keys(levelColorCode).filter(\n (key) => key === agreement\n );\n const requiredLevelColor = Object.keys(levelColorCode).filter(\n (key) => key === RequiredLevelofAgreementID\n );\n const recommendedLevelColor = Object.keys(levelColorCode).filter(\n (key) => key === RecommendedLevelofAgreementID\n );\n //Feedback part to be done later on\n return (\n <>\n \n {panel === \"RAM\" ? (\n \n {id - 2}. {question}\n \n ) : (\n \n {OrderID}. {question}\n \n )}\n\n {panel === \"RAM\" ? (\n \n {[15, 16, 17].includes(id)\n ? Answer\n : id === 18\n ? Answer.split(\";\")\n .slice(0, -1)\n .map((d, index) => {\n if (Answer.length - 1 === index) {\n return {d};\n } else {\n return (\n <>\n {d}\n
\n \n );\n }\n })\n : ChoiceDesc}\n \n ) : (\n <>\n \n {agreement}\n \n \n {RequiredLevelofAgreementID}\n \n \n {RecommendedLevelofAgreementID}\n \n \n )}\n \n \n );\n };\n return (\n \n \n \n \n {panel === \"RAM\" ? (\n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n {panel === \"RAM\" ? (\n \n {reviewRAMDetails.map((row) => {\n let {\n Answer,\n QuestionID,\n Question,\n ChoiceDesc,\n SurveyID,\n ProjectID,\n ColorCode,\n RAMID,\n } = row;\n\n if (RAMId === RAMID) {\n return tableRow(\n QuestionID,\n Question,\n \"\",\n SurveyID,\n Answer,\n ChoiceDesc,\n ColorCode\n );\n }\n })}\n \n ) : (\n \n {orderBy(reviewInDetails, \"QuestionID\", \"asc\")\n .map((row) => {\n let {\n DigitalHeathCheckID,\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n OrderID,\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n } = row;\n if (id === DigitalHeathCheckID) {\n if (panel === \"CA\" && SurveyID === 2)\n return tableRow(\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n \"\",\n \"\",\n \"\",\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n );\n else if (panel === \"SE\" && SurveyID === 1)\n return tableRow(\n QuestionID,\n QuestionDisplay,\n AgreementLevel,\n SurveyID,\n \"\",\n \"\",\n \"\",\n RequiredLevelofAgreementID,\n RecommendedLevelofAgreementID,\n OrderID\n );\n }\n })\n .filter((data) => data)}\n \n )}\n
QuestionAnswer
QuestionAgreement LevelRequired LevelRecommended Level
\n
\n
\n );\n};\n\nexport default ReviewDetails;\n","import {\n Accordion,\n AccordionPanel,\n Button,\n Card,\n FormField,\n Grid,\n Loading,\n ProgressBar,\n Table,\n Tag,\n Text,\n TextInput,\n} from \"@sede-x/shell-ds-react-framework\";\nimport * as FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx\";\nimport {\n ArrowDown,\n ArrowUp,\n CalendarNote,\n Download,\n Search,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport React, { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport \"./DashBoard.css\";\nimport {\n BASE_URL,\n GET_EDT_SURVEY_DETAILS,\n GET_EDT_SURVEY_RESULTS,\n GET_EDT_SURVEY_RES_NO_RAM,\n} from \"../api/APIdetails\";\nimport { api, details } from \"../api\";\nimport {\n TBody,\n TD,\n TH,\n THead,\n TR,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Table/Table.styles\";\nimport EdtReviews from \"./EdtReviews\";\nimport { Context, actions } from \"../context\";\nimport { handleExportAll } from \"../components/review/Export\";\nimport get from \"lodash.get\";\nimport orderBy from \"lodash.orderby\";\nimport concat from \"lodash/concat\";\nimport Export from \"../components/review/Export\";\nimport ScoreSummary from \"./ScoreSummary\";\nimport ReviewDetails from \"./ReviewDetails\";\n\nconst surveyAllTypes = [\n [\"CA\", \"Quality Metrics - Content Assurance\"],\n [\"SE\", \"Quality Metrics - Software Engineering\"],\n [\"RAM\", \"Risk Assessment Matrix\"],\n];\n\nconst surveyDHCTypes = [\n [\"CA\", \"Quality Metrics - Content Assurance\"],\n [\"SE\", \"Quality Metrics - Software Engineering\"],\n];\n\nconst DashBoard = () => {\n const [state, dispatch] = useContext(Context);\n const [descendingOrder, setDescendingOrder] = useState(true);\n const [reviews, setReviews] = useState({\n reviewDetails: [],\n reviewInDetails: [],\n reviewRAMDetails: [],\n });\n const { RAMNeeded } = state;\n const [loading, setLoading] = useState(false);\n const { BASE_URL, GET_REVIEWDETAILS_URL } = details;\n let { reviewDetails, reviewInDetails, reviewRAMDetails } = reviews;\n\n const [edtSurveyResults, setEdtSurveyResults] = useState([]);\n\n // Toggle Sort Order\n function toggleSortOrder() {\n const sortedReviews = [...reviewDetails];\n const isNextSortOrderDescending = !descendingOrder;\n if (isNextSortOrderDescending) {\n console.log(descendingOrder, \"descend\");\n sortedReviews.sort(\n (a, b) =>\n new Date(b.CreatedDate || b.LastModifiedDate) -\n new Date(a.CreatedDate || a.LastModifiedDate)\n );\n } else {\n console.log(descendingOrder, \"ascend\");\n sortedReviews.sort(\n (a, b) =>\n new Date(a.CreatedDate || a.LastModifiedDate) -\n new Date(b.CreatedDate || b.LastModifiedDate)\n );\n }\n setReviews((prevState) => ({\n ...prevState,\n reviewDetails: sortedReviews,\n }));\n setDescendingOrder(isNextSortOrderDescending);\n }\n\n //Search Filter\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [domainFilters, setDomainFilters] = useState([]);\n\n const filteredReviews = useMemo(() => {\n // If there are no domain filters selected, return only the search results\n if (domainFilters.length === 0) {\n return reviewDetails.filter((item) => {\n return item.ProjectName.toLowerCase().includes(\n searchQuery.toLowerCase()\n );\n });\n } // Else, return the search results filtered by the domain filters\n else {\n let filteredResults;\n filteredResults = reviewDetails.filter((item) => {\n let projectMCDFilterArray;\n if (item.MCDSOrg !== null) {\n // console.log(item.MCDSOrg);\n projectMCDFilterArray = item.MCDSOrg.split(\",\");\n // console.log(\n // \"Filter Array- \",\n // projectMCDFilterArray,\n // item.ProjectName\n // );\n\n // filter out projects requiring Technical Assurance\n if (domainFilters.includes(\"Technical Assurance\")) {\n let selectedRAMArr = [];\n reviewRAMDetails\n .filter((d) => d.ProjectID === item.projectid)\n .forEach((item) => {\n const found = selectedRAMArr.findIndex(\n (e1) => e1.RAMID === item.RAMID\n );\n if (found === -1) {\n selectedRAMArr.push({\n RAMID: item.RAMID,\n TARequiredOrNot: item.TARequiredOrNot,\n CreatedDate: item.CreatedDate,\n });\n }\n });\n const selectedDataForRAM = selectedRAMArr.find(\n (d) => d.TARequiredOrNot\n );\n if (item.Areas !== \"Emerging Digital Technologies\") {\n // if other domain filters are also selected\n if (domainFilters.length > 1) {\n return (\n get(selectedDataForRAM, \"TARequiredOrNot\") &&\n projectMCDFilterArray.some((e) => domainFilters.includes(e))\n );\n }\n return get(selectedDataForRAM, \"TARequiredOrNot\");\n } else {\n // if other domain filters are also selected\n if (domainFilters.length > 1) {\n return (\n item.TARequiredOrNot &&\n projectMCDFilterArray.some((e) => domainFilters.includes(e))\n );\n }\n return item.TARequiredOrNot;\n }\n }\n return projectMCDFilterArray.some((e) => domainFilters.includes(e));\n }\n });\n console.log(\"Results\", filteredResults);\n return filteredResults.filter((item) => {\n return item.ProjectName.toLowerCase().includes(\n searchQuery.toLowerCase()\n );\n });\n }\n }, [reviewDetails, searchQuery, domainFilters]);\n\n //Domain Filter Chip\n // const [chipFilters, setChipFilters] = useState([\n // { key: 0, label: \"IDA CC DSML\", variant: \"outlined\" },\n // { key: 1, label: \"IDT Digital Innovation\", variant: \"outlined\" },\n // { key: 2, label: \"PTX\", variant: \"outlined\" },\n // { key: 3, label: \"Commercial Data Science\", variant: \"outlined\" },\n // { key: 4, label: \"Other\", variant: \"outlined\" },\n // { key: 5, label: \"Technical Assurance\", variant: \"outlined\" },\n // ]);\n const initialFilters = [\n { key: 0, label: \"IDA CC DSML\", variant: \"outlined\" },\n { key: 1, label: \"IDT Digital Innovation\", variant: \"outlined\" },\n { key: 2, label: \"PTX\", variant: \"outlined\" },\n { key: 3, label: \"Commercial Data Science\", variant: \"outlined\" },\n { key: 4, label: \"Other\", variant: \"outlined\" },\n ];\n\n const [chipFilters, setChipFilters] = useState(\n RAMNeeded\n ? [\n ...initialFilters,\n { key: 5, label: \"Technical Assurance\", variant: \"outlined\" },\n ]\n : initialFilters\n );\n\n const handleFilterClick = (key) => {\n const newChipFilters = [...chipFilters];\n newChipFilters[key].variant =\n newChipFilters[key].variant === \"outlined\" ? \"filled\" : \"outlined\";\n setChipFilters(newChipFilters);\n // setDomainFilter([...domainFilter, chipFilters[key].label]);\n const newFilter = chipFilters[key].label;\n const filterIndex = domainFilters.indexOf(newFilter);\n if (filterIndex === -1) {\n setDomainFilters([...domainFilters, newFilter]);\n } else {\n const newDomainFilters = [...domainFilters];\n newDomainFilters.splice(filterIndex, 1);\n console.log(newDomainFilters);\n setDomainFilters(newDomainFilters);\n }\n };\n\n const usePrevious = (value = []) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n };\n\n const previousReviews = usePrevious(reviewDetails);\n\n useEffect(() => {\n setLoading(true);\n if (\n reviewDetails.length === 0 ||\n previousReviews.length !== reviewDetails.length\n ) {\n fetchReviews();\n }\n }, []);\n\n useEffect(() => {\n console.log(\"Review Details\", reviewDetails);\n }, [reviewDetails][reviews]);\n\n const fetchReviews = async () => {\n //fetch non - edt reviews\n let url = `${BASE_URL}${GET_REVIEWDETAILS_URL}`;\n let response = await api.getCalls(\"fetchReviews\", url);\n let { data: { recordsets = [] } = {}, error } = response;\n let [Details, InDetails, RAMDetails, RAMAllDetails] = recordsets;\n\n console.log(\"Record Sets:\", recordsets);\n //fetch edt reviews\n const edtUrl = `${BASE_URL}${GET_EDT_SURVEY_DETAILS}`;\n const edtResponse = await api.getCalls(\"loadEdtSurvey\", edtUrl);\n\n // const edtResUrl = `${BASE_URL}${GET_EDT_SURVEY_RESULTS}`;\n const edtResUrl = RAMNeeded\n ? `${BASE_URL}${GET_EDT_SURVEY_RESULTS}`\n : `${BASE_URL}${GET_EDT_SURVEY_RES_NO_RAM}`;\n const edtResResponse = await api.getCalls(\"loadEdtRes\", edtResUrl);\n setEdtSurveyResults(edtResResponse.data);\n\n if (error || edtResponse.error) {\n setBanner(true, \"error\", error);\n setLoading(false);\n } else {\n if (RAMNeeded) {\n const updatedReviewDetails = concat(\n Details,\n RAMAllDetails,\n edtResponse.data\n );\n // console.log(updatedReviewDetails);\n\n setReviews((prevState) => ({\n ...prevState,\n reviewDetails: updatedReviewDetails.sort(\n (a, b) =>\n new Date(b.CreatedDate || b.LastModifiedDate) -\n new Date(a.CreatedDate || a.LastModifiedDate)\n ),\n reviewInDetails: InDetails,\n reviewRAMDetails: RAMDetails.filter(\n (d) => d.QuestionID !== 1 && d.QuestionID !== 2\n ),\n }));\n setLoading(false);\n } else {\n const updatedReviewDetails = concat(\n Details,\n RAMAllDetails,\n edtResResponse.data\n );\n // console.log(\"Update Review Details - \", updatedReviewDetails);\n setReviews((prevState) => ({\n ...prevState,\n reviewDetails: updatedReviewDetails.sort(\n (a, b) =>\n new Date(b.CreatedDate || b.LastModifiedDate || b.date_created) -\n new Date(a.CreatedDate || a.LastModifiedDate || a.date_created)\n ),\n reviewInDetails: InDetails,\n reviewRAMDetails: RAMDetails.filter(\n (d) => d.QuestionID !== 1 && d.QuestionID !== 2\n ),\n }));\n setLoading(false);\n }\n }\n };\n\n console.log(edtSurveyResults);\n const setBanner = (show, type = \"error\", message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n // console.log(reviewDetails);\n\n const exportEdtSurveyResponses = (survey, ProjectName) => {\n console.log(survey.results);\n const toExportEdt = survey.results.map((data) => ({\n Question: data.text,\n Answer: data.answer,\n Type: data.type,\n }));\n\n const date = new Date(survey.date_created).toLocaleDateString();\n exportToCSV(toExportEdt, `${ProjectName}_EDT_Survey_On_${date}`);\n };\n\n const exportToCSV = (apiData, fileName) => {\n const fileType =\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n const fileExtension = \".xlsx\";\n const ws = XLSX.utils.json_to_sheet(apiData);\n\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n const data = new Blob([excelBuffer], { type: fileType });\n FileSaver.saveAs(data, fileName + fileExtension);\n };\n\n const exportAllEdtSurveyResponses = (edtSurveyResults) => {\n let allData = [];\n\n // Loop over all surveys\n edtSurveyResults.forEach((survey) => {\n const toExportEdt = survey.results.map((data) => ({\n ProjectName: survey.ProjectName,\n ProjectOpportunityID: survey.project_id,\n Question: data.text,\n Answer: data.answer,\n Type: data.type,\n }));\n\n allData = [...allData, ...toExportEdt];\n });\n\n const fileType =\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n const fileExtension = \".xlsx\";\n const ws = XLSX.utils.json_to_sheet(allData); // generate worksheet\n\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n const data = new Blob([excelBuffer], { type: fileType });\n const date = new Date().toLocaleDateString();\n FileSaver.saveAs(data, `All_EDT_Surveys_on_${date}` + fileExtension);\n };\n\n return (\n
\n {loading && (\n
\n \n
\n )}\n {reviewDetails && reviewDetails.length > 0 && (\n
\n }}\n placeholder=\"Search Projects\"\n size=\"small\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n
\n {chipFilters.map((filter) => (\n handleFilterClick(filter.key)}\n style={{ cursor: \"pointer\" }}\n />\n ))}\n
\n \n {descendingOrder ? : }\n
\n
\n
\n }\n variant=\"transparent\"\n onClick={() => exportAllEdtSurveyResponses(edtSurveyResults)}\n >\n Export All EDT Surveys\n \n }\n onClick={() =>\n handleExportAll(\n reviewDetails,\n reviewRAMDetails,\n reviewInDetails\n )\n }\n >\n Export All Data Science/Computational Science Surveys\n \n
\n
\n )}\n\n
\n
\n \n {(filteredReviews || []).map((item, idx) => {\n // console.log(item);\n let {\n digitalheathcheckid,\n ProjectName,\n FunnelProjectID,\n Areas,\n EmailID,\n Description,\n PointOfContactEmailID,\n ComplexityID,\n ComplexityLevel,\n ComplexityDescription,\n ImpactID,\n ImpactLevel,\n ImpactDescription,\n projectid,\n MCDSOrg,\n } = item;\n let selectedArr = [];\n let selectedRAMArr = [];\n const ImpactColor =\n ImpactLevel === \"Low\"\n ? \"#008443\"\n : ImpactLevel === \"Medium\"\n ? \"#EB8705\"\n : \"#DD1D21\";\n const complexityColor =\n ComplexityLevel === \"Low\"\n ? \"#008443\"\n : ComplexityLevel === \"Medium\"\n ? \"#EB8705\"\n : \"#DD1D21\";\n reviewInDetails\n .filter((d) => d.ProjectID === projectid)\n .forEach((item) => {\n const found = selectedArr.findIndex(\n (e1) => e1.DigitalHeathCheckID === item.DigitalHeathCheckID\n );\n if (found === -1) {\n selectedArr.push({\n DigitalHeathCheckID: item.DigitalHeathCheckID,\n contentSurveyResult: item.contentSurveyResult,\n softwareSurveyResult: item.softwareSurveyResult,\n CreatedDate: item.CreatedDate,\n });\n }\n });\n reviewRAMDetails\n .filter((d) => d.ProjectID === projectid)\n .forEach((item) => {\n const found = selectedRAMArr.findIndex(\n (e1) => e1.RAMID === item.RAMID\n );\n if (found === -1) {\n selectedRAMArr.push({\n RAMID: item.RAMID,\n TARequiredOrNot: item.TARequiredOrNot,\n CreatedDate: item.CreatedDate,\n });\n }\n });\n const selectedDataForRAM = selectedRAMArr.find(\n (d) => d.TARequiredOrNot\n );\n return (\n \n
\n {ProjectName}\n
\n
\n {MCDSOrg}\n
\n
\n {Areas}\n
\n {RAMNeeded ? (\n
\n {digitalheathcheckid ? (\n \n {get(selectedDataForRAM, \"TARequiredOrNot\")\n ? \"Technical Assurance is required\"\n : \"Technical Assurance is not required\"}\n \n ) : Areas === \"Emerging Digital Technologies\" ? (\n
\n {item.TARequiredOrNot ? (\n \n Technical Assurance is required\n \n ) : (\n \n Technical Assurance is not required\n \n )}\n
\n ) : (\n <>\n \n {get(selectedDataForRAM, \"TARequiredOrNot\")\n ? \"Technical Assurance is required\"\n : \"Technical Assurance is not required\"}\n \n \n )}\n
\n ) : null}\n
\n }\n >\n
\n \n
\n \n {FunnelProjectID && (\n <>\n \n Project Opportunity ID:\n \n \n {FunnelProjectID}\n \n \n )}\n\n {Description && (\n <>\n \n Description:\n \n \n {Description}\n \n \n )}\n\n {ImpactID && (\n <>\n \n Impact Classification: \n \n \n \n \n {ImpactLevel}{\" \"}\n \n - {ImpactDescription}\n \n \n \n )}\n {ComplexityID && (\n <>\n \n Complexity: \n \n \n \n \n {ComplexityLevel}{\" \"}\n \n - {ComplexityDescription}\n \n \n \n )}\n \n Point of Contact:\n \n \n {EmailID || PointOfContactEmailID}\n \n \n
\n
\n {digitalheathcheckid ? (\n orderBy(selectedArr, \"CreatedDate\", \"desc\").map((e) => {\n const selectedRAMData = reviewRAMDetails.find(\n (r) => r.DHCID === e.DigitalHeathCheckID\n );\n return (\n \n
\n {new Date(e.CreatedDate).toDateString()}\n \n
\n {digitalheathcheckid && (\n \n )}\n
\n
\n {(selectedRAMData\n ? surveyAllTypes\n : surveyDHCTypes\n ).map((details, index) => (\n \n ))}\n
\n
\n );\n })\n ) : Areas === \"Emerging Digital Technologies\" ? (\n <>\n {edtSurveyResults\n .filter((el) => el.project_id === item.project_id)\n .map((survey) => (\n \n
\n \n {new Date(survey.date_created).toDateString()}\n \n }\n iconOnly\n variant=\"transparent\"\n onClick={() =>\n exportEdtSurveyResponses(\n survey,\n item.ProjectName\n )\n }\n >\n
\n
\n
\n

EDT Survey Score

\n 50 && survey.score < 60\n ? \"default\"\n : \"positive\"\n }\n />\n

\n {survey.score < 50\n ? \"Below Minimum\"\n : survey.score > 50 && survey.score < 60\n ? \"Good\"\n : \"Very Good\"}\n

\n
\n
\n
\n
\n \n \n EDT SURVEY RESULTS\n
\n }\n >\n \n \n \n \n \n \n \n \n \n {survey.results.map((ques, idx) => (\n \n \n \n \n \n ))}\n \n
QuestionAnswerType
\n {idx + 1}.{\" \"}\n {\n \n }\n {ques.answer}{ques.type}
\n \n \n
\n \n ))}\n {RAMNeeded ? (\n
\n \n \n RAM SURVEY DETAILS\n
\n }\n >\n \n \n \n \n \n \n \n \n {item.ramResults &&\n item.ramResults.map(\n (row) =>\n row.QuestionID > 2 && (\n \n \n \n \n )\n )}\n \n
QuestionAnswer
\n {row.QuestionID - 2}.{\" \"}\n {row.Question}\n \n {[15, 16, 17].includes(\n row.QuestionID\n )\n ? row.Answer\n : row.QuestionID === 18\n ? row.Answer.split(\";\")\n .slice(0, -1)\n .map((d, index) => {\n if (\n row.Answer.length - 1 ===\n index\n ) {\n return {d};\n } else {\n return (\n <>\n {d}\n
\n \n );\n }\n })\n : row.ChoiceDesc}\n
\n \n \n \n ) : null}\n \n ) : (\n orderBy(selectedRAMArr, \"CreatedDate\", \"desc\").map((e) => (\n \n
\n {new Date(e.CreatedDate).toDateString()}\n \n
\n\n
\n
\n \n
\n
\n ))\n )}\n \n );\n })}\n \n \n {/*
\n
\n {(domainFilters.length === 0 || domainFilters.includes('EDT')) && (\n \n )} */}\n\n
\n \n );\n};\n\nexport default DashBoard;\n","import {\n Button,\n FormField,\n Grid,\n Icons,\n Option,\n Select,\n Tag,\n Text,\n TextArea,\n TextInput,\n Checkbox,\n} from \"@sede-x/shell-ds-react-framework\";\nimport React, { useContext, useState, useRef, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { api, details } from \"../../api\";\nimport omit from \"lodash.omit\";\nimport { Context, actions } from \"../../context\";\nimport SnackBar from \"../SnackBars\";\nimport \"./NewProject.css\";\nimport {\n Add,\n Cross,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport { GET_ALL_EMAIL_IDS } from \"../../api/APIdetails\";\nimport { checkArr } from \"./DataConfig\";\nimport axios from \"axios\";\n\nconst NewProject = ({\n loadProjects,\n listOfAreas,\n listOfStages,\n listOfTeamSizes,\n edtStages,\n}) => {\n const history = useHistory();\n const [state, dispatch] = useContext(Context);\n const { project = {} } = state;\n const { BASE_URL, POST_PROJECTDETAILS_URL, GET_PROJECTOTHERDETAILS_URL } =\n details;\n const { banner, listOfComplexity = [], listOfImpacts = [] } = state;\n const formData = state.formData;\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n\n const [errors, setErrors] = useState({});\n const [errorMsg, setErrMsg] = useState(\"\");\n const [detErrorMsg, setDetErrMsg] = useState(\"\");\n\n const [selectedListOfImpact, setSelectedListOfImpact] = useState([]);\n const [selectedStagesList, setSelectedStagesList] = useState(listOfStages);\n\n const [FOFlag, setFOFlag] = useState(true);\n const [edtFlag, setEdtFlag] = useState(true);\n\n const [value, setValue] = useState();\n const [inputValue, setInputValue] = useState(\"\");\n\n const [selectedCheckboxes, setSelectedCheckboxes] = useState([]);\n // const [checkBoxVal, setCheckBoxVal] = useState();\n\n const [loader, setLoader] = useState(false);\n const [btnDis, setBtnDis] = useState(false);\n\n const [formHasData, setFormHasData] = useState(false);\n\n const [form, setFormData] = useState({\n Areas: \"Data Science, Statistics & A.I\",\n ProjectStage: null,\n TeamSize: null,\n FunnelProjectID: null,\n Name: null,\n Email: loginUser.EmailID + \"\",\n Description: null,\n ImpactID: null,\n ComplexityID: null,\n MCDSOrg: null,\n });\n\n const [allEmailIds, setAllEmailIds] = useState([]);\n\n const handleClick = async () => {\n const isValid = validate(errors);\n if (isValid === true) {\n await new Promise((resolve) => {\n setFormHasData(false);\n resolve();\n });\n postProjectDetails();\n setLoader(!loader);\n setBtnDis(!btnDis);\n } else {\n setErrors({ ...isValid });\n setLoader(false);\n setBtnDis(false);\n }\n };\n\n const validate = (errors) => {\n const {\n Name,\n ImpactID,\n ComplexityID,\n Areas,\n TeamSize,\n FunnelProjectID,\n Description,\n MCDSOrg,\n } = form;\n let validForm = {\n Name,\n ImpactID,\n ComplexityID,\n TeamSize,\n FunnelProjectID,\n Description,\n MCDSOrg,\n };\n\n // if (Areas === \"Financial Operations\") {\n // validForm = omit(validForm, [\"ImpactID\", \"ComplexityID\", \"TeamSize\"]);\n // }\n // if (Areas === \"Emerging Digital Technologies\") {\n // validForm = omit(validForm, [\"TeamSize\", \"ImpactID\"]);\n // }\n\n let isError = false,\n inValid = false;\n console.log(\"aAAaSss\", form);\n Object.keys(validForm).forEach((key) => {\n if (\n form[key] === null ||\n form[key] === undefined ||\n form[key].length <= 0\n ) {\n // console.log(form[key], key);\n isError = true;\n errors[key] = `Please Enter ${key}`;\n } else if (key === \"Description\") {\n if (validateDescription(form.Description)) {\n isError = true;\n errors[key] = `Please Enter Valid Characters in ${key}`;\n }\n } else if (errors[key] && !inValid) {\n // console.log('here', key, errors[key]);\n inValid = errors[key].value !== \"\" ? true : false;\n }\n });\n if (isError) {\n return errors;\n } else if (inValid) {\n return errors;\n } else {\n return true;\n }\n };\n\n const usePrevious = (value = {}) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current | {};\n };\n\n const prevlistOfImpacts = usePrevious(listOfImpacts);\n\n useEffect(() => {\n if (formHasData) {\n window.addEventListener(\"beforeunload\", alertUser);\n return () => {\n window.removeEventListener(\"beforeunload\", alertUser);\n };\n }\n }, [formHasData]);\n\n const alertUser = (e) => {\n e.preventDefault();\n e.returnValue = \"You have unsaved changes, are you sure you want to leave?\";\n };\n\n useEffect(() => {\n console.log(formHasData);\n\n if (formHasData) {\n const unblock = history.block((location, action) => {\n if (action === \"PUSH\") {\n return window.confirm(\n \"You have unsaved changes, are you sure you want to leave this page?\"\n );\n }\n return true;\n });\n return () => unblock();\n }\n }, [history, formHasData]);\n\n useEffect(() => {\n dispatch({\n type: actions.SET_Projects,\n payload: {\n ...project,\n isNewProject: true,\n },\n });\n\n if (\n (listOfImpacts.length === 0 && listOfComplexity.length === 0) ||\n listOfImpacts.length !== prevlistOfImpacts.length\n ) {\n loadDetails();\n loadEmailIds();\n }\n return () => {\n setBanner(false, \"\", \"\");\n };\n }, []);\n\n const loadEmailIds = async () => {\n try {\n // const header = {\n // Authorization: `Bearer ${\n // JSON.parse(localStorage.getItem(\"tokenDetails\")).access_token\n // }`,\n // };\n let url = `${BASE_URL}${GET_ALL_EMAIL_IDS}`;\n setErrMsg(\"\");\n let response = await axios.get(url); //load all email ids\n // console.log(response);\n let { data: { recordsets = [] } = {}, error } = response;\n // console.log(recordsets);\n setAllEmailIds(recordsets[0]);\n\n // if (error) {\n // setBanner(error);\n // // console.log(error.toJSON());\n // }\n } catch (error) {\n // console.log(error.toJSON.message());\n // console.log(err.response.status);\n // console.log(err.response.headers);\n console.log(`Email-`, error.message);\n // setErrMsg(error.message);\n // if (!error.response) {\n // history.push(\"/errorPage\");\n // } else {\n // console.log(error.response.status);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n // }\n // console.log(error.toJSON());\n }\n };\n\n const loadDetails = async () => {\n try {\n let url = `${BASE_URL}${GET_PROJECTOTHERDETAILS_URL}`;\n let response = await axios.get(url);\n\n let { data: { recordsets = [] } = {}, error } = response;\n let [listOfImpacts, listOfComplexity] = recordsets;\n const selectedData = listOfImpacts.filter((t) => t.Areas === form.Areas);\n setSelectedListOfImpact(selectedData);\n error\n ? setBanner(error)\n : dispatch({\n type: actions.SET_ProjectDetails,\n payload: { listOfImpacts, listOfComplexity },\n });\n } catch (error) {\n console.log(`Project Other Details-`, error.message);\n setDetErrMsg(error.message);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n // console.log(error.response);\n }\n };\n\n // Create new project\n const postProjectDetails = async () => {\n try {\n const {\n ComplexityID,\n Description,\n ImpactID,\n Name,\n Areas,\n ProjectStage,\n TeamSize,\n FunnelProjectID,\n } = form;\n let Email = loginUser.EmailID;\n if (\n typeof value !== \"undefined\" &&\n value !== null &&\n Array.isArray(value)\n ) {\n const valueString = value.join(\",\");\n Email = Email + \",\" + valueString;\n }\n let McdsCheck = \"\";\n if (\n typeof selectedCheckboxes !== \"undefined\" &&\n selectedCheckboxes !== null &&\n Array.isArray(selectedCheckboxes)\n ) {\n const valueString = selectedCheckboxes.join(\",\");\n McdsCheck = valueString;\n }\n console.log(\"Mcds- \" + McdsCheck);\n const params = {\n ComplexityID,\n Description,\n Email,\n ImpactID,\n Name,\n Areas,\n ProjectStage,\n TeamSize,\n FunnelProjectID,\n McdsCheck,\n userName: `${loginUser.FirstName} ${loginUser.LastName}`,\n };\n\n dispatch({\n type: actions.SET_FORM_DATA,\n payload: params,\n });\n dispatch({\n type: actions.SET_SelectedFlag,\n payload: \"newProject\",\n });\n let url = `${BASE_URL}${POST_PROJECTDETAILS_URL}`;\n // let response = await axios.post(url, params);\n // let { data: { recordset: recordSet = [] } = {}, error } = response;\n // let ProjectID = recordSet[0].ProjectID;\n // console.log(\"Project ID- \", ProjectID);\n // console.log(\"Record Set Post- \", recordSet);\n // console.log(\"Response- \", response);\n // if (error) {\n // console.log(\"Error in Create Project\");\n // setBanner(true, \"error\", error);\n // } else {\n // setBanner(true, \"success\", \"Project Created Successfully\");\n loadProjects(true);\n setFormHasData(false);\n if (Areas === \"Financial Operations\") {\n history.push(\"/riskAssessment\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 5,\n },\n });\n } else if (Areas === \"Emerging Digital Technologies\") {\n history.push(\"/edt\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 6,\n },\n });\n } else {\n history.push(\"/survey\");\n\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 4,\n },\n });\n }\n // }\n } catch (error) {\n console.log(`Project Not Created-`, error.message);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n // setDetErrMsg(error.message);\n // console.log(error.response);\n }\n };\n\n useEffect(() => {\n if (formData) {\n console.log(\"Form Data\", formData);\n }\n }, [state.formData]);\n\n const setBanner = (show, type = \"error\", message) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message,\n },\n });\n };\n\n //not in use for area\n const handleChange = (e) => {\n setFormHasData(true);\n let { name, value } = e.target;\n if (name === \"Areas\") {\n const selectedData = listOfImpacts.filter((t) => t.Areas === value);\n // if (\n // value === \"Financial Operations\" ||\n // value === \"Emerging Digital Technologies\"\n // )\n if (value === \"Financial Operations\") {\n setFOFlag(false);\n } else {\n setFOFlag(true);\n }\n setSelectedListOfImpact(selectedData);\n }\n if (name === \"Description\") {\n if (validateDescription(value)) {\n setErrors({\n ...errors,\n Description: \"Description contains invalid characters\",\n });\n console.log(\"Invalid Description\");\n } else {\n setErrors({ ...errors, Description: \"\" });\n }\n }\n name === \"Areas\" &&\n setFormData({\n ...form,\n [\"ImpactID\"]: null,\n [\"ComplexityID\"]: null,\n });\n setFormData({\n ...form,\n [name]: value,\n });\n };\n\n const validateDescription = (value) => {\n const invalidChars = /['\"\\n]/;\n return invalidChars.test(value);\n };\n\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [selectedEmails, setSelectedEmails] = useState([]);\n\n const handleSearch = (value) => {\n setSearchTerm(value);\n };\n\n const handleEmailSelect = (value) => {\n // setFormHasData(true);\n if (selectedEmails.length < 2) {\n setSelectedEmails(value);\n setValue(value);\n }\n };\n\n const filteredOptions = allEmailIds.filter((option) =>\n option.EmailID.toString().toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleCheckboxChange = (itemName) => {\n setFormHasData(true);\n // Toggle the selection status for the clicked checkbox\n const updatedSelection = selectedCheckboxes.includes(itemName)\n ? selectedCheckboxes.filter((item) => item !== itemName)\n : [...selectedCheckboxes, itemName];\n setErrors({ ...errors, MCDSOrg: \"\" });\n setFormData({\n ...form,\n [\"MCDSOrg\"]: updatedSelection,\n });\n // Update the state with the new selection\n setSelectedCheckboxes(updatedSelection);\n // console.log(selectedCheckboxes);\n // Remove the error when at least one checkbox is selected\n };\n // console.log(selectedCheckboxes);\n // console.log(\"Errors:\", errors);\n return (\n
\n {banner.show && (\n setBanner(false, \"\", \"\")} />\n )}\n \n \n handleChange(e)}\n bottomLeftHelper={{\n content: errors.Name ? errors.Name : \"\",\n sentiment: \"negative\",\n }}\n onBlur={(e) => {\n if (e.target.value !== \"\") {\n setErrors({ ...errors, Name: \"\" });\n }\n }}\n >\n \n \n \n \n {\n if (e.target.value !== \"\") {\n setErrors({ ...errors, FunnelProjectID: \"\" });\n }\n }}\n placeholder=\"If multiple, separate by semi-colon\"\n onChange={(e) => handleChange(e)}\n >\n \n \n \n \n
\n \n \n handleChange(e)}\n mandatory\n bottomLeftHelper={{\n content: errors.Description ? errors.Description : \"\",\n sentiment: \"negative\",\n }}\n onBlur={(e) => {\n if (e.target.value !== \"\") {\n setErrors({ ...errors, Description: \"\" });\n }\n }}\n >\n \n \n \n \n \n {checkArr().map((item, index) => (\n
\n handleCheckboxChange(item.name)}\n name={item.name}\n size=\"small\"\n label={item.label}\n />\n
\n ))}\n \n
\n
\n
\n \n \n \n {\n const selectedData = listOfImpacts.filter(\n (t) => t.Areas === value\n );\n setSelectedStagesList(listOfStages);\n setEdtFlag(true);\n if (value === \"Financial Operations\") {\n setFOFlag(false);\n } else {\n setFOFlag(true);\n }\n setSelectedListOfImpact(selectedData);\n setFormData({\n ...form,\n [\"ImpactID\"]: null,\n [\"ComplexityID\"]: null,\n [\"ProjectStage\"]: null,\n Areas: value,\n });\n }}\n >\n {listOfAreas.map((item, i) => (\n \n ))}\n \n \n \n \n \n {\n if (value !== \"\") {\n setErrors({ ...errors, ProjectStage: \"\" });\n }\n }}\n onChange={(value) => {\n setFormData({\n ...form,\n ProjectStage: value,\n });\n }}\n >\n {selectedStagesList.map((item, i) => (\n \n ))}\n \n \n \n \n
\n {FOFlag && (\n <>\n \n {detErrorMsg.length < 1 ? (\n \n \n {\n if (value !== \"\") {\n setErrors({ ...errors, ComplexityID: \"\" });\n }\n }}\n onChange={(value) => {\n setFormData({\n ...form,\n ComplexityID: value,\n });\n }}\n >\n {listOfComplexity.map((item, i) => {\n let { ComplexityLevel, ComplexityID, Desciption } = item;\n return (\n \n );\n })}\n \n \n \n ) : (\n

\n {detErrorMsg}\n

\n )}\n {edtFlag && (\n \n \n {\n if (value !== \"\") {\n setErrors({ ...errors, TeamSize: \"\" });\n }\n }}\n onChange={(value) => {\n setFormData({\n ...form,\n TeamSize: value,\n });\n }}\n >\n {listOfTeamSizes.map((item, i) => {\n return (\n \n );\n })}\n \n \n \n )}\n \n
\n {edtFlag && (\n \n {detErrorMsg.length < 1 ? (\n \n \n {\n if (value !== \"\") {\n setErrors({ ...errors, ImpactID: \"\" });\n }\n }}\n onChange={(value) => {\n setFormData({\n ...form,\n ImpactID: value,\n });\n }}\n >\n {selectedListOfImpact.map((item, i) => {\n let { ImpactLevel, ImpactID, Description } = item;\n return (\n \n );\n })}\n \n \n \n ) : (\n

\n {detErrorMsg}\n

\n )}\n
\n )}\n \n )}\n
\n \n {errorMsg.length < 1 ? (\n \n
\n Point of Contact\n
\n {loginUser.EmailID}\n \n {/* Render options only for the filtered options */}\n {searchTerm &&\n filteredOptions.map((option) => (\n \n ))}\n \n {selectedEmails.length === 2 && (\n } // Replace with your Cross icon\n variant=\"transparent\"\n onClick={() => {\n setSelectedEmails([]);\n setSearchTerm(\"\");\n setValue(undefined);\n // setSelectedEmails(!emailBtnDis);\n }}\n >\n )}\n
\n
\n
\n ) : (\n

{errorMsg}

\n )}\n
\n
\n \n \n
\n {\n handleClick();\n }}\n loading={loader}\n disabled={btnDis}\n >\n CREATE PROJECT\n \n
\n
\n
\n
\n
\n
\n \n The DHC is a ‘self-help’ tool to allow you to reflect, as the project\n team, on how the project is progressing. The surveys, which include\n content assurance and software engineering questions are loosely based\n on the MCDS Technical Standards (more information available in the FAQ\n section).\n

\n We suggest that you, as a project team, also complete the MCDS RAM\n (Risk Assessment Matrix) which can be found separately following this{\" \"}\n \n form\n {\" \"}\n or on the MCDS website. This Risk Matrix will also determine whether\n your project requires MCDS Technical Assurance. Take a look at the\n MCDS Website for more information.\n \n

\n
\n
\n );\n};\n\nexport default NewProject;\n","export const checkArr = () => {\n return [\n {\n name: \"IDA CC DSML\",\n label: \"IDA CC DSML\",\n },\n {\n name: \"IDT Digital Innovation\",\n label: \"IDT Digital Innovation\",\n },\n {\n name: \"PTX\",\n label: \"PTX\",\n },\n {\n name: \"Commercial Data Science\",\n label: \"Commercial Data Science\",\n },\n {\n name: \"Other\",\n label: \"Other\",\n },\n ];\n};\n","import {\n Option,\n Select,\n Text,\n Grid,\n Button,\n} from \"@sede-x/shell-ds-react-framework\";\nimport React, { useEffect, useContext, useState } from \"react\";\nimport { actions, Context } from \"../../context\";\nimport { details, api } from \"../../api\";\nimport \"./ExistingProject.css\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\nimport SnackBar from \"../SnackBars\";\nimport {\n Add,\n Cross,\n Check,\n Edit,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport { GET_ALL_EMAIL_IDS } from \"../../api/APIdetails\";\nimport { checkArr } from \"./DataConfig\";\nimport axios from \"axios\";\n\nconst ExistingProject = ({ onProjectChange, loadProjects }) => {\n const [state, dispatch] = useContext(Context);\n const history = useHistory();\n const [redirectFlag, setRedirectFlag] = useState(false);\n const {\n BASE_URL,\n GET_RAM_DETAILS_BY_PROJECT_ID_URL,\n PUT_POC_EMAIL_IDS,\n PUT_MCDS_ORG,\n } = details;\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [selectedEmails, setSelectedEmails] = useState([]);\n const [allEmailIds, setAllEmailIds] = useState([]);\n const [value, setValue] = useState();\n const [editMode, setEditMode] = useState(false);\n const [editSelectMode, setEditSelectMode] = useState(false);\n const [editMCDS, setEditMCDS] = useState(false);\n const [editMCDSBtn, setMCDSBtn] = useState(false);\n const [selectedMCDS, setSelectedMCDS] = useState([]);\n const [selectedMCDSCheck, setSelectedMCDSCheck] = useState([]);\n\n useEffect(() => {\n loadEmailIds();\n }, []);\n\n useEffect(() => {\n // console.log(\"New Project\");\n setEditMode(false);\n setEditSelectMode(false);\n setEditMCDS(false);\n setMCDSBtn(false);\n }, [onProjectChange]);\n const {\n selectedProject,\n banner,\n selectedFlag,\n selectedProject: {\n Description,\n PointOfContactEmailID,\n Areas,\n ComplexityLevel,\n ImpactLevel,\n ImpactDescription,\n ComplexityDescription,\n ProjectName,\n FunnelProjectID,\n ProjectID,\n MCDSOrg,\n },\n project = {},\n } = state;\n\n useEffect(() => {\n dispatch({\n type: actions.SET_SelectedProject,\n payload: {},\n });\n }, []);\n\n useEffect(() => {\n const params = { ProjectID };\n let url = `${BASE_URL}${GET_RAM_DETAILS_BY_PROJECT_ID_URL}`;\n if (ProjectID && Areas === \"Financial Operations\") {\n api.getCalls(\"getDetails\", url, params).then((response) => {\n let { data: { recordset = [] } = {}, error } = response;\n if (recordset.length >= 1) {\n setRedirectFlag(false);\n } else {\n setRedirectFlag(false);\n }\n });\n }\n setEditMode(false);\n setMCDSBtn(false);\n return () => {\n setBanner(false, \"\", \"\");\n };\n }, [selectedProject]);\n\n // console.log(redirectFlag);\n console.log(selectedProject);\n\n const onTakeSurvey = () => {\n dispatch({\n type: actions.SET_TakingSurvey,\n payload: !state.takingSurvey,\n });\n dispatch({\n type: actions.SET_SelectedFlag,\n payload: \"existingProject\",\n });\n\n if (Areas === \"Financial Operations\") {\n if (!redirectFlag) {\n console.log(\"redirecting\");\n history.push(\"/riskAssessment\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 5,\n },\n });\n } else {\n console.log(\"not redirecting\");\n setBanner(\n true,\n \"warning\",\n \"Risk Assessment Matrix(RAM) is already evaluated for this project\"\n );\n }\n } else if (Areas === \"Emerging Digital Technologies\") {\n history.push(\"/edt\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 6,\n },\n });\n } else {\n history.push(\"/survey\");\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 4,\n },\n });\n }\n };\n\n const setBanner = (show, type = \"error\", error) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message: error,\n },\n });\n };\n\n const putMCDSOrg = async () => {\n console.log(\"Check Clicked\");\n const params = { ProjectID };\n try {\n let McdsCheck = \"\";\n if (\n typeof selectedMCDS !== \"undefined\" &&\n selectedMCDS !== null &&\n Array.isArray(selectedMCDS)\n ) {\n const valueString = selectedMCDS.join(\",\");\n McdsCheck = valueString;\n }\n console.log(\"Mcds- \" + McdsCheck);\n const body = {\n McdsCheck,\n };\n let url = `${BASE_URL}${PUT_MCDS_ORG}`;\n // console.log(\"URL: \", url);\n let response = await axios.put(url, body, { params: { ProjectID } });\n // console.log(response);\n let { data: { recordsets = [] } = {}, error } = response;\n if (error) {\n setBanner(true, \"error\", error);\n console.log(error);\n } else {\n setBanner(true, \"success\", \"MCDS Organisation Updated Successfully\");\n loadProjects(true);\n }\n } catch (error) {\n console.log(`PUT Email-`, error.message);\n\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n const putPOCemail = async () => {\n // console.log(\"Check Clicked\");\n const params = { ProjectID };\n try {\n let Email = \"\";\n if (\n typeof value !== \"undefined\" &&\n value !== null &&\n Array.isArray(value)\n ) {\n const valueString = value.join(\",\");\n Email = Email ? Email + \",\" + valueString : valueString;\n }\n // console.log(\"Email List:\", Email);\n const body = {\n Email,\n };\n let url = `${BASE_URL}${PUT_POC_EMAIL_IDS}`;\n // console.log(\"URL: \", url);\n let response = await axios.put(url, body, { params: { ProjectID } });\n // console.log(response);\n let { data: { recordsets = [] } = {}, error } = response;\n if (error) {\n setBanner(true, \"error\", error);\n console.log(error);\n } else {\n setBanner(true, \"success\", \"Email Updated Successfully\");\n loadProjects(true);\n }\n } catch (error) {\n console.log(`PUT Email-`, error.message);\n\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n // useEffect(() => {\n // console.log(\"UseEffect-\", state);\n // if (ProjectID) {\n // onProjectChange(null, { value: ProjectID });\n // }\n // }, [state]);\n const loadEmailIds = async () => {\n try {\n let url = `${BASE_URL}${GET_ALL_EMAIL_IDS}`;\n let response = await axios.get(url);\n // console.log(response);\n let { data: { recordsets = [] } = {}, error } = response;\n console.log(recordsets);\n setAllEmailIds(recordsets[0]);\n } catch (error) {\n // console.log(error.toJSON.message());\n // console.log(err.response.status);\n // console.log(err.response.headers);\n console.log(`Email-`, error.message);\n // setErrMsg(error.message);\n // if (!error.response) {\n // history.push(\"/errorPage\");\n // } else {\n // console.log(error.response.status);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n // }\n // console.log(error.toJSON());\n }\n };\n\n const handleSearch = (value) => {\n setSearchTerm(value);\n };\n\n const handleEmailSelect = (value) => {\n if (selectedEmails.length < 3) {\n setSelectedEmails(value);\n setValue(value);\n }\n };\n\n const filteredOptions = allEmailIds.filter((option) =>\n option.EmailID.toString().toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const toggleEditMode = () => {\n setEditMode(!editMode);\n setEditSelectMode(true);\n };\n const toggleCheckMode = () => {\n setEditMode(!editMode);\n putPOCemail();\n };\n\n const handleMCDSSelect = (value) => {\n setSelectedMCDSCheck(value);\n setSelectedMCDS(value);\n };\n console.log(selectedMCDS + \" hh \" + selectedMCDSCheck);\n const toggleMCDSBtn = () => {\n setMCDSBtn(!editMCDSBtn);\n setEditMCDS(true);\n };\n const toggleMCDSCheckMode = () => {\n setMCDSBtn(!editMCDSBtn);\n putMCDSOrg();\n };\n\n return (\n
\n {banner.show && (\n setBanner(false, \"\", \"\")} />\n )}\n {project && (\n \n {project.listOfProjects.map((projectItem, index) => (\n \n ))}\n \n )}\n
\n {selectedProject && selectedProject.ProjectID !== undefined && (\n <>\n \n {FunnelProjectID && (\n <>\n \n Project Opportunity ID\n \n \n {FunnelProjectID}\n \n \n )}\n \n MCDS Project Organisation\n \n \n
\n {editMCDS ? (\n \n {/* Render options only for the filtered options */}\n {/* {searchTerm && */}\n {checkArr().map((option) => (\n \n ))}\n \n ) : (\n {MCDSOrg}\n )}\n \n {editMCDSBtn ? (\n }\n variant=\"transparent\"\n onClick={toggleMCDSCheckMode}\n >\n ) : (\n }\n variant=\"transparent\"\n onClick={toggleMCDSBtn}\n >\n )}\n\n {/* {editMCDSBtn && (\n } // Replace with your Cross icon\n variant=\"transparent\"\n onClick={() => {\n setSelectedMCDSCheck([]);\n setSelectedMCDS(undefined);\n }}\n style={{ gridColumn: \"1 / span 2\" }}\n >\n )} */}\n
\n
\n \n \n Domain\n \n \n {Areas}\n \n \n Email\n \n\n \n
\n {editSelectMode ? (\n \n {/* Render options only for the filtered options */}\n {searchTerm &&\n filteredOptions.map((option) => (\n \n ))}\n \n ) : (\n \n {PointOfContactEmailID}\n \n )}\n \n {editMode ? (\n }\n variant=\"transparent\"\n onClick={toggleCheckMode}\n >\n ) : (\n }\n variant=\"transparent\"\n onClick={toggleEditMode}\n >\n )}\n\n {editMode && selectedEmails.length === 3 && (\n } // Replace with your Cross icon\n variant=\"transparent\"\n onClick={() => {\n setSelectedEmails([]);\n setSearchTerm(\"\");\n setValue(undefined);\n // setSelectedEmails(!emailBtnDis);\n }}\n style={{ gridColumn: \"1 / span 2\" }}\n >\n )}\n
\n
\n \n {Description && (\n <>\n \n Project Description\n \n \n {Description}\n \n \n )}\n\n {Areas !== \"Financial Operations\" && (\n <>\n \n Project Complexity\n \n \n \n {\" \"}\n {ComplexityLevel} {\"\\u00A0\"}\n {`(${ComplexityDescription})`}\n \n \n {ImpactDescription && (\n <>\n \n Project Impact\n \n \n \n {ImpactLevel} {\"\\u00A0\"}\n {`(${ImpactDescription})`}\n \n \n \n )}\n \n )}\n \n
\n
\n
\n
\n onTakeSurvey()}\n >\n TAKE A NEW SURVEY\n \n
\n \n )}\n \n \n );\n};\n\nexport default ExistingProject;\n","import { Tabs } from \"@sede-x/shell-ds-react-framework\";\nimport React, { useEffect, useContext } from \"react\";\nimport { actions, Context } from \"../../context\";\nimport { details, api } from \"../../api\";\nimport NewProject from \"./NewProject\";\nimport ExistingProject from \"./ExistingProject\";\n\nconst Home = () => {\n const [state, dispatch] = useContext(Context);\n\n const listOfAreas = [\n {\n label: \"Data Science, Statistics & A.I\",\n value: \"Data Science, Statistics & A.I\",\n },\n {\n label: \"Computational Science\",\n value: \"Computational Science\",\n },\n {\n label: \"Emerging Digital Technologies\",\n value: \"Emerging Digital Technologies\",\n },\n ];\n\n const listOfStages = [\n {\n label: \"Ideation (Understand, Frame & Define)\",\n value: \"Ideation (Understand, Frame & Define)\",\n },\n {\n label:\n \"Discover (Prepare, Research & Validation - PoC/PoT/Prototype or Tech Design)\",\n value:\n \"Discover (Prepare, Research & Validation - PoC/PoT/Prototype or Tech Design)\",\n },\n {\n label: \"Develop & Demonstrate (Pilot, Model, Evaluate, MVP iterations)\",\n value: \"Develop & Demonstrate (Pilot, Model, Evaluate, MVP iterations)\",\n },\n {\n label: \"Production Deployment & Replication (MDP)\",\n value: \"Production Deployment & Replication (MDP)\",\n },\n ];\n\n const edtStages = [\n {\n label: \"PoC/PoT\",\n value: \"PoC/PoT\",\n },\n {\n label: \"MVP\",\n value: \"MVP\",\n },\n {\n label: \"Production\",\n value: \"Production\",\n },\n ];\n\n const listOfTeamSizes = [\n {\n label: \"1-3 members\",\n value: \"1-3 members\",\n },\n {\n label: \">3 members but co-located\",\n value: \">3 members but co-located\",\n },\n {\n label: \">3 members but not co-located\",\n value: \">3 members but not co-located\",\n },\n ];\n\n //Getting state\n const {\n project = {},\n selectedProject,\n banner,\n takingSurvey,\n selectedFlag,\n } = state;\n\n //Get Project Details request URL\n const { BASE_URL, GET_PROJECTS_URL } = details;\n\n //Fetches existing projects\n const loadProjects = async (flag) => {\n let url = `${BASE_URL}${GET_PROJECTS_URL}`;\n let response = await api.getCalls(\"loadProjects\", url);\n let { data: { recordset: recordset = [] } = {}, error } = response;\n // console.log(\"Record Set Load- \", recordset);\n if (!error) {\n dispatch({\n type: actions.SET_Projects,\n payload: {\n ...project,\n listOfProjects: recordset,\n },\n });\n console.log(`LoadProjects()`, state);\n //newly created project\n if (recordset.length > 0) {\n flag &&\n dispatch({\n type: actions.SET_SelectedProject,\n payload: recordset[recordset.length - 1],\n });\n }\n }\n };\n // c-onsole.log(`Re-render`, state);\n\n //load existing projects on app load\n useEffect(() => {\n loadProjects();\n if (project.listOfProjects.length === 0) {\n loadProjects();\n setValidProject();\n }\n }, [project.validProject]);\n\n const onProjectChange = (event, value) => {\n let currentProject;\n // console.log(\"Value-\", value);\n if (value) {\n currentProject = project.listOfProjects.find(\n (project) => project.ProjectID === value.value\n );\n // console.log(`IFFFFF()`, currentProject);\n }\n // console.log(value, currentProject);\n currentProject !== null &&\n dispatch({\n type: actions.SET_SelectedProject,\n payload: currentProject,\n });\n\n // console.log(`onProjectChange()`, currentProject);\n setValidProject();\n };\n\n // console.log(`OnProject Change Re-render`, state);\n\n const setValidProject = () => {\n let { ProjectID = undefined } = selectedProject;\n dispatch({\n type: actions.SET_Projects,\n payload: {\n ...project,\n validProject:\n ProjectID !== undefined && ProjectID !== null ? true : false,\n },\n });\n };\n\n return (\n <>\n \n ),\n },\n {\n label: \"Existing Project\",\n key: \"2\",\n children: (\n \n ),\n },\n ]}\n />\n \n );\n};\n\nexport default Home;\n","import React, { useState } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { Login, Project, RiskAssessment, Authenticator } from '../components';\nimport {\n ThemeProvider,\n createMuiTheme,\n makeStyles,\n} from '@material-ui/core/styles';\nimport { amber } from '@material-ui/core/colors';\n\nimport '../styles/styles.scss';\nimport ReviewPage from './review/ReviewPage';\nimport DhcSurvey from './survey/DhcSurvey';\nimport DashBoard from '../dasboard/DashBoard';\nimport Home from './project/Home';\n\nconst useStyles = makeStyles((theme) => ({\n // necessary for content to be below app bar\n toolbar: theme.mixins.toolbar,\n content: {\n padding: '5px',\n [theme.breakpoints.up('md')]: {\n marginLeft: '250px',\n },\n backgroundColor: '#FFFAF1',\n margin: '65px 0px',\n height: 'auto',\n },\n}));\n\nconst PrivateRoute = () => {\n const classes = useStyles();\n\n return (\n <>\n {/* {auth && auth.userData && ( */}\n <>\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n {/* )} */}\n \n );\n};\nconst Theme = createMuiTheme({\n palette: {\n primary: amber,\n },\n});\nexport { PrivateRoute };\n","import {\n Avatar,\n Card,\n Grid,\n Heading,\n Text,\n} from \"@sede-x/shell-ds-react-framework\";\nimport \"./ContactDetails.css\";\n\nimport React from \"react\";\n\nexport default function ContactDetails({ contactArr }) {\n return (\n <>\n \n \n CONTACT INFORMATION\n \n \n
\n
\n {contactArr[0] && (\n \n \n \n
\n \n\n \n {contactArr[0].name}\n \n {contactArr[0].role}\n \n \n {contactArr[0].email}\n \n \n
\n
\n
\n
\n )}\n
\n
\n \n {contactArr.slice(1).map((item) => (\n \n \n
\n \n\n \n {item.name}\n \n {item.role}\n \n {item.email}\n \n
\n
\n
\n ))}\n
\n {/* \n {contactArr.map((item) => {\n return (\n \n \n
\n \n \n
\n {item.name}\n\n \n {item.role}\n \n \n \n {' '}\n {item.email}\n \n \n
\n
\n
\n \n );\n })}\n */}\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/pecten.323a4654.svg\";","export default __webpack_public_path__ + \"static/media/dayeeta_roy.1f72846c.jpg\";","export default __webpack_public_path__ + \"static/media/lydia_stanier.df30a368.jpg\";","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ContactDetails from \"./ContactDetails\";\nimport pecten from \"../../styles/images/pecten.svg\";\nimport dayeeta_roy from \"../../styles/images/dayeeta_roy.jpg\";\nimport lydia_stanier from \"../../styles/images/lydia_stanier.jpg\";\nimport chiranjib_sur from \"../../styles/images/chiranjib_sur.jpg\";\nimport paul_gelderblom from \"../../styles/images/paul_gelderblom.jpg\";\nimport tharini_thiru from \"../../styles/images/tharini_thirukkumar.jpg\";\n\nconst contactArr = [\n {\n name: \"Paul Gelderblom\",\n email: \"paul.gelderblom@shell.com\",\n imageSrc: paul_gelderblom,\n role: \"Application Owner\",\n },\n {\n name: \"Lydia Stanier\",\n email: \"lydia.stanier@shell.com\",\n imageSrc: lydia_stanier,\n role: \"Business Analyst\",\n },\n {\n name: \"Tharini Thirukkumar\",\n email: \"tharini.thirukkumar@shell.com\",\n imageSrc: tharini_thiru,\n role: \"MCDS Opportunity Manager\",\n },\n];\n\nexport default function ContactForm() {\n return (\n <>\n \n \n );\n}\n","export default __webpack_public_path__ + \"static/media/chiranjib_sur.eb0187a9.jpg\";","export default __webpack_public_path__ + \"static/media/paul_gelderblom.76164a65.jpg\";","export default __webpack_public_path__ + \"static/media/tharini_thirukkumar.b7587108.jpg\";","export default __webpack_public_path__ + \"static/media/swiss_cheese.892fa2c7.png\";","export default __webpack_public_path__ + \"static/media/qa.8bce9d30.jpg\";","import React from \"react\";\n\nimport swiss_cheese from \"../../styles/images/swiss_cheese.png\";\nimport qa from \"../../styles/images/qa.jpg\";\nimport {\n Accordion,\n AccordionPanel,\n Card,\n Heading,\n} from \"@sede-x/shell-ds-react-framework\";\nimport \"./FAQPage.css\";\n\nconst FAQPage = () => {\n return (\n <>\n \n \n FREQUENTLY ASKED QUESTIONS (FAQ)\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n

When did it start?

\n
\n

\n Quality Assurance started in 2018 for PTX/D to improve the\n overall quality of the delivery in projects in the data\n science and computational science space, and the scope and\n understanding has grown and spread across other areas of\n Shell today.\n

\n
\n
\n
\n

What is Quality Assurance?

\n
\n
\n \n
\n \n Click here for more information\n \n
\n
\n
\n

Why we do it?

\n
\n

\n “Quality” is a mindset and culture. This is NOT a checkbox\n exercise. QA is mandatory for all projects and the\n criticality and risks of the projects (as revealed by the\n RAM), determines the next steps.\n

\n\n

\n Project “Quality” is owned by “Everyone” involved in the\n project and adaptation of this is led by the projects which\n is supported by MCDS discipline via the standards\n (Computational Science, Data Science, and Implementation\n Standards). The QA process is there to help and empower\n teams on their quality journey.\n

\n\n

\n For projects which are in scope for Technical Assurance (TA)\n the DHC forms an important part of the documentation to\n assess the technical maturity of a project.\n

\n
\n
\n
\n

Quality Control versus Quality Assurance

\n
\n \n
\n
\n
\n
\n \n
\n
\n

What and why?

\n
\n

\n The DHC is a scalable framework to recommend “every” project\n completes a self-assessment on how they are doing against\n various software engineering and statistical/data science\n modelling aspects over time. The DHC and Risk Assessment\n Matrix (RAM) should be used from early stages of the project\n lifecycle to understand the exposure of risk.{\" \"}\n

\n
\n
\n
\n

Frequency

\n
\n

\n The DHC is recommended to be done every 6 months or at every\n project milestone/stage gate.{\" \"}\n

\n
\n
\n
\n

The Process

\n
\n

\n Complete the various surveys in the DHC, looking at code\n implementation, testing and modelling approach, and based on\n your answers, the portal will produce a score based on your\n answers. This score is for the project team to assess\n internally and discuss ways they can improve their score\n over the project lifecycle.​\n

\n
\n
\n
\n
\n \n
\n
\n

What is MCDS?

\n
\n

\n MCDS is the Maths, Computational and Data Science discipline\n in the Shell R&D Technical function. The MCDS community\n includes all technical staff across PTX, IDT and Commercial\n Data Science, which offers upskilling and learning sessions,\n career development and mentoring opportunities, to name just\n a few. Take a look at the MCDS{\" \"}\n \n website\n {\" \"}\n for more information\n

\n

\n The discipline has 4 key technical standards which define\n the technical requirements for projects in the MCDS scope\n which can be found on the website:\n

\n
    \n
  • \n \n MCDS Data Science and Statistics Content Standard\n \n
  • \n
  • \n \n MCDS Computational Science Content Standard\n \n
  • \n
  • \n \n MCDS Implementation Standard\n \n
  • \n
  • \n \n MCDS AI Ethics Standard\n \n
  • \n
\n

\n For information on the Technical Assurance process, the Risk\n Assessment Matrix and other MCDS queries, please visit the\n \n {\" \"}\n website.\n \n

\n
\n
\n
\n
\n
\n\n
\n
\n \n );\n};\n\nexport default FAQPage;\n","import {\n Avatar,\n Button,\n Menu,\n MenuItem,\n Modal,\n NavBar,\n Text,\n Tooltip,\n} from \"@sede-x/shell-ds-react-framework\";\nimport {\n BarChartSquareSolid,\n HomeSolid,\n InfoSquare,\n PeopleSquare,\n QuestionMarkSquare,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport React, { useContext, useState } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom/cjs/react-router-dom\";\nimport { Context, actions } from \"../../context\";\nimport { useEffect } from \"react\";\n\nconst MENU_OPTIONS_TO_COMPONENT = {\n Home: HomeSolid,\n Dashboard: BarChartSquareSolid,\n FAQ: QuestionMarkSquare,\n Contact: PeopleSquare,\n // TestPage: PeopleSquare,\n};\n\nconst VerticalMenu = ({ onClick }) => {\n return (\n \n {Object.keys(MENU_OPTIONS_TO_COMPONENT).map((text, index) => {\n const Component = MENU_OPTIONS_TO_COMPONENT[text];\n return (\n // \n onClick(text, index)}\n itemIcon={}\n >\n //\n );\n })}\n \n );\n};\n\nconst SideNavBar = () => {\n console.log(\"rendered\");\n const history = useHistory();\n const location = useLocation();\n const [_, dispatch] = useContext(Context);\n\n const [open, setOpen] = useState(false);\n const handleOnClose = () => setOpen(false);\n\n // Set index of the selected menu everytime when app renders (consistency)\n useEffect(() => {\n if (location.pathname === \"/home\") {\n storeIndexData(0);\n } else if (location.pathname === \"/review\") {\n storeIndexData(1);\n } else if (location.pathname === \"/FAQ\") {\n storeIndexData(2);\n } else if (location.pathname === \"/contact\") {\n storeIndexData(3);\n } else if (location.pathname === \"/survey\") {\n storeIndexData(4);\n } else if (location.pathname === \"/riskAssessment\") {\n storeIndexData(5);\n } else if (location.pathname === \"/edt\") {\n storeIndexData(6);\n } else if (location.pathname === \"/edtResult\") {\n storeIndexData(7);\n }\n }, []);\n\n // storing index in state\n const storeIndexData = (index) => {\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index,\n },\n });\n };\n\n // handle click of menu items, navigating to the desired route\n const handleClick = (text, index) => {\n storeIndexData(index);\n if (text === \"Home\") {\n history.push(\"/home\");\n } else if (text === \"Dashboard\") {\n history.push(\"/review\");\n }\n if (text === \"FAQ\") {\n history.push(\"/FAQ\");\n }\n if (text === \"Contact\") {\n history.push(\"/contact\");\n }\n // if (text === 'TestPage') {\n // history.push('/test');\n // }\n };\n\n // vertical menu options of navbar\n\n return (\n }\n iconOnly\n iconPosition=\"left\"\n sentiment=\"default\"\n size=\"medium\"\n variant=\"transparent\"\n onClick={() => setOpen(true)}\n />\n }\n >\n \n \n \n \n \n );\n};\n\nexport default SideNavBar;\n","import { Avatar, NavBar, Text } from \"@sede-x/shell-ds-react-framework\";\nimport React from \"react\";\nimport \"./NavBars.css\";\n\nconst TopNavBar = () => {\n const loginUser = localStorage.getItem(\"loginUser\")\n ? JSON.parse(localStorage.getItem(\"loginUser\"))\n : {};\n return (\n {`${loginUser.FirstName} ${loginUser.LastName}`}\n }\n >\n
\n \"MCDSLogo\"\n

Digital Health Check Portal

\n
\n \n );\n};\n\nexport default TopNavBar;\n","import {\n FormField,\n Grid,\n Option,\n Select,\n Text,\n} from '@sede-x/shell-ds-react-framework';\nimport React from 'react';\n\nconst EdtQuestion = ({\n index,\n questionId,\n questionText,\n questionCategory,\n answerOptions,\n handleAnswerChange,\n type = 'general',\n generalLength,\n}) => {\n return (\n \n \n
\n {questionCategory}\n \n {type === 'domain' ? generalLength + index + 1 : index + 1}.{' '}\n {\n \n }\n \n
\n
\n \n \n handleAnswerChange(questionId, option)}\n >\n {answerOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n \n );\n};\n\nexport default EdtQuestion;\n","import {\n Alert,\n Button,\n Card,\n FormField,\n Grid,\n Heading,\n Loading,\n Option,\n Select,\n Text,\n} from \"@sede-x/shell-ds-react-framework\";\nimport React, { Fragment } from \"react\";\nimport \"./EdtSurvey.css\";\nimport { useEffect, useState, useContext } from \"react\";\nimport _, { set } from \"lodash\";\nimport EdtQuestion from \"./EdtQuestion\";\nimport { Context, actions } from \"../../context\";\nimport { Snackbar } from \"@material-ui/core\";\nimport {\n BASE_URL,\n GET_EDT_QUESTIONS,\n SAVE_EDT_SURVEY,\n} from \"../../api/APIdetails\";\nimport { api } from \"../../api\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom\";\n\nconst answerOptions = [\n {\n label: \"Strongly Agree\",\n value: 4,\n },\n {\n label: \"Agree\",\n value: 3,\n },\n {\n label: \"Neutral\",\n value: 2,\n },\n {\n label: \"Disagree\",\n value: 1,\n },\n {\n label: \"Strongly Disagree\",\n value: 0,\n },\n {\n label: \"Too Early/ NA\",\n value: -1,\n },\n];\n\nconst questionTypes = {\n general: \"general\",\n blockchain: \"blockchain\",\n IOT: \"IOT\",\n HPC: \"HPC\",\n};\n\nconst EdtSurvey = () => {\n const [fetchedQuestions, setFetchedQuestions] = useState({});\n const [domain, setDomain] = useState();\n const [answers, setAnswers] = useState({});\n const [state, dispatch] = useContext(Context);\n const { selectedProject, formData, selectedFlag, EDTSurvey, EDTScore } =\n state;\n const [error, setError] = useState();\n const [formSubmit, setFormSubmit] = useState(false);\n const [loading, setLoading] = useState(true);\n const history = useHistory();\n\n useEffect(() => {\n if (!formSubmit) {\n window.addEventListener(\"beforeunload\", alertUser);\n return () => {\n window.removeEventListener(\"beforeunload\", alertUser);\n };\n }\n }, [formSubmit]);\n\n const alertUser = (e) => {\n e.preventDefault();\n e.returnValue = \"You have unsaved changes, are you sure you want to leave?\";\n };\n\n useEffect(() => {\n console.log(formSubmit);\n\n if (!formSubmit) {\n const unblock = history.block((location, action) => {\n if (action === \"PUSH\") {\n return window.confirm(\n \"You have unsaved changes, are you sure you want to leave this page?\"\n );\n }\n return true;\n });\n return () => unblock();\n }\n }, [history, formSubmit]);\n\n const handleAnswerChange = (questionId, answer) => {\n console.log(answer);\n setAnswers((prevAnswers) => ({\n ...prevAnswers,\n [questionId]: answer,\n }));\n };\n\n const handleSubmit = async () => {\n const unansweredGeneralQuestions = fetchedQuestions.general.filter(\n (question) => !answers[question.id]\n );\n\n console.log(unansweredGeneralQuestions);\n if (unansweredGeneralQuestions.length > 0) {\n setError(\"Please answer all questions\");\n setTimeout(() => {\n setError(undefined);\n }, 5000);\n console.log(\"Please answer all questions\");\n return;\n }\n\n if (domain) {\n const unansweredDomainQuestions = fetchedQuestions[domain].filter(\n (question) => !answers[question.id]\n );\n if (unansweredDomainQuestions.length > 0) {\n setError(\"Please answer all questions\");\n setTimeout(() => {\n setError(undefined);\n }, 5000);\n console.log(\"Please answer all questions\");\n return;\n }\n }\n\n console.log(\"Submitting answers\", answers);\n const score = calculateScore();\n dispatch({\n type: actions.SET_EDT_Score,\n payload: score,\n });\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n saveEdtSurvey(score);\n console.log(score);\n };\n\n const saveEdtSurvey = async (score) => {\n const url = `${BASE_URL}${SAVE_EDT_SURVEY}`;\n const params = {\n score,\n data: answers,\n };\n dispatch({\n type: actions.SET_EDT_Survey,\n payload: params,\n });\n // const response = await axios.post(url, params); //'saveEdt'\n // console.log(response);\n // dispatch({\n // type: actions.SET_EDT,\n // payload: response.data,\n // });\n dispatch({\n type: actions.SET_EDTAnswers,\n payload: answers,\n });\n console.log(answers);\n history.push(\"/edtResult\");\n };\n\n const calculateScore = () => {\n const highestScore = 4;\n let sum = 0;\n let total = Object.keys(answers).length * highestScore;\n for (let key in answers) {\n if (answers.hasOwnProperty(key)) {\n sum = sum + answers[key].value;\n }\n }\n const finalScore = Math.round((sum / total) * 100);\n if (finalScore < 0) return 0;\n return finalScore;\n };\n useEffect(() => {\n const loadEdtQuestions = async () => {\n setLoading(true);\n let url = `${BASE_URL}${GET_EDT_QUESTIONS}`;\n let response = await api.getCalls(\"loadEdtQuestions\", url);\n let { data: { recordsets = [] } = {}, error } = response;\n if (error) {\n setError(\"Error fetching data\");\n }\n console.log(recordsets[0]);\n const questions = recordsets[0];\n console.log(questions);\n const getAllQuestions = (questions) =>\n _.groupBy(questions, ({ type }) => type);\n setFetchedQuestions(getAllQuestions(questions));\n setLoading(false);\n };\n loadEdtQuestions();\n }, []);\n\n // console.log(fetchedQuestions);\n // console.log(selectedProject);\n\n return (\n
\n \n \n EDT SURVEY\n \n \n
\n \n
\n \n \n Project Name:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.ProjectName}\n ) : (\n {formData.Name}\n )}\n \n {(selectedProject.FunnelProjectID || formData.FunnelProjectID) && (\n <>\n \n Project Opportunity ID:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.FunnelProjectID}\n ) : (\n {formData.FunnelProjectID}\n )}\n \n \n )}\n\n \n Domain:\n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.Areas}\n ) : (\n {formData.Areas}\n )}\n \n \n
\n
\n
\n {loading && }\n {error && (\n setError(undefined)}\n title={error}\n />\n )}\n {fetchedQuestions.general &&\n fetchedQuestions.general.map((question, idx) => (\n \n ))}\n {!loading && !error && (\n \n \n Does your project fall under any specialty?\n \n \n \n {\n setDomain(value);\n }}\n >\n \n \n \n \n \n \n \n )}\n\n {domain &&\n fetchedQuestions[domain].map((question, idx) => (\n \n ))}\n
\n
\n {!loading && !error && (\n \n \n
\n \n SUBMIT EDT SURVEY\n \n
\n
\n
\n
\n )}\n
\n );\n};\n\nexport default EdtSurvey;\n","import {\n Accordion,\n AccordionPanel,\n Button,\n Card,\n Grid,\n Heading,\n ProgressBar,\n Table,\n Text,\n} from \"@sede-x/shell-ds-react-framework\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport \"./EdtResult.css\";\nimport axios from \"axios\";\nimport { Context, actions } from \"../../context\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom\";\nimport {\n BASE_URL,\n GET_EDT_QUESTIONS,\n GET_EDT_SURVEY_DETAILS,\n SAVE_EDT_SURVEY,\n POST_PROJECTDETAILS_URL,\n} from \"../../api/APIdetails\";\nimport { api } from \"../../api\";\nimport * as FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx\";\nimport {\n TBody,\n TD,\n TH,\n THead,\n TR,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Table/Table.styles\";\nimport { Download } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\n\nconst EdtSurveyResult = () => {\n const [state, dispatch] = useContext(Context);\n const [isRamDone, setRamDone] = useState(false);\n const history = useHistory();\n const [formSubmit, setFormSubmit] = useState(false);\n const {\n banner,\n selectedProject,\n EDT,\n EDTAnswers,\n formData,\n EDTScore,\n selectedFlag,\n RAMNeeded,\n EDTSurvey,\n } = state;\n const [edtSurveyAnswers, setEdtSurveyAnswers] = useState([]);\n // console.log(selectedProject);\n // console.log(EDT);\n // console.log(EDTAnswers);\n\n useEffect(() => {\n if (!formSubmit) {\n window.addEventListener(\"beforeunload\", alertUser);\n return () => {\n window.removeEventListener(\"beforeunload\", alertUser);\n };\n }\n }, [formSubmit]);\n\n const alertUser = (e) => {\n e.preventDefault();\n e.returnValue = \"You have unsaved changes, are you sure you want to leave?\";\n };\n\n useEffect(() => {\n console.log(formSubmit);\n\n if (!formSubmit) {\n const unblock = history.block((location, action) => {\n if (\n action === \"PUSH\" &&\n location.pathname !== \"/review\" &&\n location.pathname !== \"/riskAssessment\"\n ) {\n return window.confirm(\n \"You have unsaved changes, are you sure you want to leave this page?\"\n );\n }\n return true;\n });\n return () => unblock();\n }\n }, [history, formSubmit]);\n\n useEffect(() => {\n const loadEdtSurveyDetails = async () => {\n // const url = `${BASE_URL}${GET_EDT_SURVEY_DETAILS}`;\n // const response = await api.getCalls(\"loadEdtSurvey\", url);\n // const edtDetails = response.data;\n // console.log(edtDetails);\n // const ramExists = edtDetails.some(\n // (item) => item.project_id === selectedProject.ProjectID\n // );\n // console.log(ramExists);\n setRamDone(false);\n\n const quesUrl = `${BASE_URL}${GET_EDT_QUESTIONS}`;\n const quesResponse = await api.getCalls(\"loadEdtQuestions\", quesUrl);\n console.log(quesResponse.data.recordset);\n const questions = quesResponse.data.recordset;\n const surveyRes = questions\n .filter((item) => EDTAnswers[item.id]) // Filter out items with no matching id in EDTAnswers\n .map((item) => ({\n id: item.id,\n text: item.text,\n type: item.type,\n ...EDTAnswers[item.id], // Merge properties from EDTAnswers\n }));\n\n setEdtSurveyAnswers(surveyRes);\n };\n loadEdtSurveyDetails();\n }, []);\n\n console.log(edtSurveyAnswers);\n const setBanner = (show, type = \"error\", error) => {\n dispatch({\n type: actions.SET_Banner,\n payload: {\n show,\n type,\n message: error,\n },\n });\n };\n\n const handleClick = async () => {\n if (RAMNeeded) {\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n setTimeout(() => {\n history.push(\"/riskAssessment\");\n }, 1);\n } else {\n try {\n let ProjectID, ProjectAreas;\n // First API call\n if (selectedFlag === \"newProject\") {\n ProjectAreas = formData.Areas;\n let url1 = `${BASE_URL}${POST_PROJECTDETAILS_URL}`;\n let response1 = await axios.post(url1, formData);\n let { data: { recordset: recordSet = [] } = {}, error: error1 } =\n response1;\n ProjectID = recordSet[0].ProjectID;\n\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n\n console.log(\"Project ID- \", ProjectID);\n console.log(\"Response1\", response1);\n if (error1) {\n console.log(\"Error in Create Project\", response1.error);\n setBanner(true, \"error\", error1);\n throw new Error(error1); // Stop execution if there's an error\n } else {\n console.log(\"Project Created Successfully\", recordSet[0]);\n }\n } else if (selectedFlag === \"existingProject\") {\n ProjectID = selectedProject.ProjectID;\n ProjectAreas = selectedProject.Areas;\n dispatch({\n type: actions.SET_PROJECT_ID,\n payload: ProjectID,\n });\n }\n console.log(\"Project Area: \", ProjectAreas);\n let EDTID;\n // Second API call\n if (ProjectAreas === \"Emerging Digital Technologies\") {\n // console.log(\"Inside\", ProjectAreas, ProjectID);\n const url2 = `${BASE_URL}${SAVE_EDT_SURVEY}`;\n const params = { ...EDTSurvey, projectId: ProjectID };\n const response2 = await axios.post(url2, params); //'saveEdt'\n console.log(\"EDT Response - \", response2);\n EDTID = response2.data.edtId;\n dispatch({\n type: actions.SET_EDT,\n payload: response2.data,\n });\n await new Promise((resolve) => {\n setFormSubmit(true);\n resolve();\n });\n setTimeout(() => {\n history.push(\"/review\");\n });\n } else {\n console.log(\"ERROR NOT EDT SURVEY: \", ProjectAreas);\n }\n } catch (error) {\n console.log(\"Error in Survey Details\", error);\n console.log(`Project Not Created-`, error.message);\n const errorCode = error.response ? error.response.status : 500;\n history.push(\"/errorPage\", { error, errorCode });\n }\n }\n };\n const exportEdtSurveyResponses = () => {\n const toExportEdt = edtSurveyAnswers.map((data) => ({\n Question: data.text,\n Answer: data.children,\n Type: data.type,\n }));\n\n const today = new Date().toLocaleDateString();\n let name =\n selectedFlag === \"existingProject\"\n ? selectedProject.ProjectName\n : formData.Name;\n exportToCSV(toExportEdt, `${name}_EDT_Survey_On_${today}`);\n };\n\n const exportToCSV = (apiData, fileName) => {\n const fileType =\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n const fileExtension = \".xlsx\";\n const ws = XLSX.utils.json_to_sheet(apiData);\n\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n const data = new Blob([excelBuffer], { type: fileType });\n FileSaver.saveAs(data, fileName + fileExtension);\n };\n\n let ComplexityLevel, ComplexityDescription;\n if (selectedFlag === \"newProject\") {\n if (formData.ComplexityID === 1) {\n ComplexityLevel = \"Low\";\n ComplexityDescription = \"no code or >100 lines of code\";\n } else if (formData.ComplexityID === 2) {\n ComplexityLevel = \"Medium\";\n ComplexityDescription = \"100-10,000 lines of code\";\n } else if (formData.ComplexityID === 3) {\n ComplexityLevel = \"High\";\n ComplexityDescription = \"more than 10,000 lines of code\";\n }\n }\n\n return (\n
\n \n \n EDT SURVEY RESULT\n \n \n
\n
\n \n \n \n
\n \n \n \n Project Name: \n \n \n \n \n {\" \"}\n {selectedFlag === \"existingProject\" ? (\n {selectedProject.ProjectName}\n ) : (\n {formData.Name}\n )}\n \n \n {(formData.Description || selectedProject.Description) && (\n <>\n \n \n Description:\n \n \n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.Description}\n ) : (\n {formData.Description}\n )}\n \n \n \n )}\n\n \n \n Point of Contact: \n \n \n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.PointOfContactEmailID}\n ) : (\n {formData.Email}\n )}\n \n \n \n \n Code Complexity: \n \n \n \n \n {selectedFlag === \"existingProject\" ? (\n \n {selectedProject.ComplexityLevel} -{\" \"}\n {selectedProject.ComplexityDescription}\n \n ) : (\n \n {ComplexityLevel} - {ComplexityDescription}\n \n )}\n \n \n \n
\n
\n \n
\n
\n 50 && EDTScore < 60\n ? \"default\"\n : \"positive\"\n }\n />\n

Total Score

\n
\n }\n iconOnly\n variant=\"transparent\"\n onClick={exportEdtSurveyResponses}\n >\n
\n
\n
\n
\n \n \n
\n {isRamDone ? (\n {\n history.push(\"/review\");\n }}\n >\n GO TO DASHBOARD\n \n ) : (\n \n {RAMNeeded ? \"TAKE RAM SURVEY\" : \"SUBMIT\"}\n \n )}\n
\n
\n
\n
\n
\n
\n \n \n EDT SURVEY RESPONSES
}\n >\n \n \n \n \n \n \n \n \n \n {edtSurveyAnswers.length > 0 &&\n edtSurveyAnswers.map((response, idx) => (\n \n \n \n \n \n ))}\n \n
QuestionAnswerType
\n {idx + 1}.{\" \"}\n {\n \n }\n {response.children}{response.type}
\n \n \n \n \n );\n};\n\nexport default EdtSurveyResult;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom\";\nimport { Context, actions } from \"../../context\";\nimport {\n Accordion,\n AccordionPanel,\n Button,\n Card,\n Divider,\n Grid,\n Heading,\n Table,\n Tag,\n Text,\n Tooltip,\n} from \"@sede-x/shell-ds-react-framework\";\nimport { Download } from \"@sede-x/shell-ds-react-framework/build/esm/components/Icon/components\";\nimport { BASE_URL, GET_RAM_SURVEY_BY_PROJECT_ID } from \"../../api/APIdetails\";\nimport { api } from \"../../api\";\nimport axios from \"axios\";\nimport {\n TBody,\n TD,\n TH,\n THead,\n TR,\n} from \"@sede-x/shell-ds-react-framework/build/esm/components/Table/Table.styles\";\nimport * as FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx\";\n\nconst RAMSurveyByProject = () => {\n const [state, dispatch] = useContext(Context);\n const history = useHistory();\n const {\n selectedProject,\n RAMFinalData,\n formData,\n surveyAllData,\n newProjectID,\n selectedFlag,\n } = state;\n const [technicalAssurance, setTechnicalAssurance] = useState(false);\n const [surveyResponses, setSurveyResponses] = useState([]);\n const [loader, setLoader] = useState(false);\n\n useEffect(() => {\n console.log(\"RAMFinalData\", RAMFinalData);\n console.log(\"formData\", formData);\n console.log(\"surveyAllData\", surveyAllData);\n }, []);\n\n useEffect(() => {\n if (newProjectID) {\n loadRamSurveyByProject(newProjectID);\n }\n }, [newProjectID]);\n\n const loadRamSurveyByProject = async (id) => {\n try {\n const url = `${BASE_URL}${GET_RAM_SURVEY_BY_PROJECT_ID}/${id}`;\n const response = await axios.get(url); //loadRamSurveyByProject\n setSurveyResponses(response.data.recordset);\n setTechnicalAssurance(response.data.recordset[0].TARequiredOrNot);\n } catch (error) {\n const errorCode = error.response ? error.response.status : 500;\n console.log(`RAM Survey Details not Loaded-`, error.message);\n history.push(\"/errorPage\", { error, errorCode });\n }\n };\n\n const exportRamSurveyResponses = () => {\n const toExportRam = surveyResponses\n .filter((response) => response.QuestionID > 2)\n .map((data) => {\n if (data.QuestionID > 14) {\n return {\n Question: data.Question,\n Answer: data.Answer,\n };\n }\n return {\n Question: data.Question,\n Answer: data.ChoiceDesc,\n };\n });\n\n const today = new Date().toLocaleDateString();\n\n exportToCSV(toExportRam, `${formData.Name}_RAM_Survey_On_${today}`);\n };\n\n const exportToCSV = (apiData, fileName) => {\n const fileType =\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n const fileExtension = \".xlsx\";\n const ws = XLSX.utils.json_to_sheet(apiData);\n\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n const data = new Blob([excelBuffer], { type: fileType });\n FileSaver.saveAs(data, fileName + fileExtension);\n };\n\n const surveyTableRow = (response) => (\n \n \n {response.QuestionID - 2}. {response.Question}\n \n \n {[15, 16, 17].includes(response.QuestionID)\n ? response.Answer\n : response.QuestionID === 18\n ? response.Answer.split(\";\")\n .slice(0, -1)\n .map((d, index) => {\n if (response.Answer.length - 1 === index) {\n return {d};\n } else {\n return (\n <>\n {d}\n
\n \n );\n }\n })\n : response.ChoiceDesc}\n \n \n );\n\n return (\n
\n \n \n RAM SURVEY RESULT\n \n \n
\n
\n \n \n \n
\n \n \n \n Project Name: \n \n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.ProjectName}\n ) : (\n {formData.Name}\n )}\n \n {(selectedProject.Description || formData.Description) && (\n <>\n \n \n Description:\n \n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.Description}\n ) : (\n {formData.Description}\n )}\n \n \n )}\n\n \n \n Point of Contact: \n \n \n \n {selectedFlag === \"existingProject\" ? (\n {selectedProject.PointOfContactEmailID}\n ) : (\n {formData.Email}\n )}\n \n \n
\n
\n \n
\n \n \n {technicalAssurance\n ? \"Technical Assurance is Required\"\n : \"Technical Assurance Not Required\"}\n \n }\n iconOnly\n variant=\"transparent\"\n onClick={exportRamSurveyResponses}\n >\n }\n />\n
\n
\n
\n
\n \n \n
\n {\n dispatch({\n type: actions.SET_selectedMenuIndex,\n payload: {\n index: 1,\n },\n });\n history.push(\"/review\");\n setLoader(!loader);\n }}\n loading={loader}\n >\n GO TO DASHBOARD\n \n
\n
\n
\n
\n
\n
\n {surveyResponses.length > 0 && (\n \n \n RAM SURVEY RESPONSES
}\n >\n \n \n \n \n \n \n \n \n {surveyResponses.map((response) => {\n if (response.QuestionID > 2 && response.QuestionID <= 18) {\n return surveyTableRow(response);\n }\n })}\n \n
QuestionAnswer
\n \n \n \n )}\n \n );\n};\n\nexport default RAMSurveyByProject;\n","import React from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\n\nconst PageNotFound = () => {\n const history = useHistory();\n const location = useLocation();\n const errorCode = location.state ? location.state.errorCode : \"Unknown Error\";\n const error = location.state ? location.state.error : \"No Error\";\n\n let errorMessage;\n switch (errorCode) {\n case 404:\n errorMessage = \"Oops! Page not found.\";\n break;\n case 500:\n errorMessage = \"Oops! Something went wrong on our server.\";\n break;\n default:\n errorMessage = \"Oops! Something unexpected happened.\";\n break;\n }\n const goBack = () => {\n history.goBack();\n };\n\n return (\n
\n
\n

Error - {errorCode}

\n

{errorMessage}

\n {/*

{error.message}

*/}\n

\n Please refresh the page. If this doesn't work, please reach out to a\n focal listed in the contact page.\n

\n \n
\n
\n );\n};\n\nconst styles = {\n container: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100vh\",\n // backgroundColor: \"#f8f8f8\",\n },\n errorBox: {\n textAlign: \"center\",\n padding: \"40px\",\n borderRadius: \"8px\",\n boxShadow: \"0 4px 8px rgba(0, 0, 0, 0.1)\",\n backgroundColor: \"#fff\",\n },\n errorCode: {\n fontSize: \"48px\",\n color: \"#e74c3c\",\n margin: \"0\",\n },\n errorText: {\n fontSize: \"24px\",\n color: \"#333\",\n margin: \"20px 0 0\",\n },\n button: {\n padding: \"10px 20px\",\n fontSize: \"16px\",\n backgroundColor: \"#fecb00\",\n color: \"#000000\",\n border: \"none\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n marginTop: \"20px\",\n },\n};\n\nexport default PageNotFound;\n","import React, { useEffect } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { Button } from \"@sede-x/shell-ds-react-framework\";\nimport \"./SignOutPage.css\"; // import the CSS file\n\nconst SignedOut = () => {\n const history = useHistory();\n const location = useLocation();\n\n useEffect(() => {\n if (!location.state || !location.state.fromTokenRefresher) {\n history.replace(\"/home\"); // or wherever you want to redirect\n }\n }, [history, location]);\n\n const handleSignIn = () => {\n history.push(\"/home\"); // Redirect to homepage\n };\n\n return (\n
\n
\n \"MCDSLogo\"\n \n
\n {/*

Signed Out

*/}\n

\n You've been signed out due to inactivity.\n

\n \n Sign In\n \n
\n );\n};\n\nexport default SignedOut;\n","import React, { useState } from \"react\";\nimport {\n Route,\n BrowserRouter as Router,\n Switch,\n Redirect,\n} from \"react-router-dom\";\nimport {\n Login,\n Project,\n LinearStepper,\n RiskAssessment,\n Authenticator,\n FAQ,\n ContactForm,\n} from \"./components\";\nimport { Store } from \"./context\";\n\n// import './styles/styles.scss';\n\nimport FAQPage from \"./components/FAQ/FAQPage\";\nimport { ShellThemeProvider } from \"@sede-x/shell-ds-react-framework\";\nimport Home from \"./components/project/Home\";\nimport SideNavBar from \"./components/layout/SideNavBar\";\nimport \"./index.css\";\n\nimport styled, { css } from \"styled-components\";\nimport TopNavBar from \"./components/layout/TopNavBar\";\nimport EdtSurvey from \"./components/survey/EdtSurvey\";\nimport EdtSurveyResult from \"./components/survey/EdtSurveyResult\";\nimport DashBoard from \"./dasboard/DashBoard\";\nimport DhcSurvey from \"./components/survey/DhcSurvey\";\nimport RAMSurveyByProject from \"./components/RAM/RAMSurveyByProject\";\nimport ErrorPageNotFound from \"./components/ErrorPages/PageNotFound\";\nimport SignOutPage from \"./components/SignOutPage/SignOutPage\";\n\nconst Wrapper = styled.div`\n ${({ theme, narrow }) => css`\n background-color: ${theme.background.base};\n height: 100%;\n width: ${narrow ? \"500px\" : \"100%\"};\n `}\n`;\n\nconst AppContainer = () => {\n return (\n <>\n {/* */}\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* \n \n */}\n \n
\n
\n \n );\n};\n\nexport default function App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as serviceWorker from './serviceWorker';\nimport App from './App';\n\n// import \"./index.css\";\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}