{"version":3,"sources":["app/components/CustomBlock.js","app/components/Overlay.js","app/components/NavBlock.js","app/components/DrawerNav.js","app/components/Button.js","app/components/Image.js","app/components/TopNav.js","app/assets/img/icon.svg","app/redux/authRedux.js","app/redux/projectDetailRedux.js","app/routes/PrivateRoute.js","app/components/DotIndicator.js","app/components/TextHeader.js","app/components/ContentHeader.js","app/components/ModalBlock.js","app/redux/confirmModalRedux.js","app/components/ConfirmModal.js","app/redux/alertToastRedux.js","app/components/AlertToast.js","app/components/FormBlock.js","app/components/InputBlock.js","app/pages/admin/authentication/_partials/ForgotPasswordBlock.js","app/assets/img/logo.svg","app/helpers/validators/management/user/LoginValidator.js","app/constants/constants.js","app/helpers/helper.js","app/redux/rootReducer.js","app/redux/store.js","app/services/interceptor/axiosInterceptor.js","app/services/apiService.js","app/services/management/userService.js","app/pages/admin/authentication/LoginPage.js","app/components/Section.js","app/components/ContentBlock.js","app/components/CheckboxBlock.js","app/components/SelectBlock.js","app/services/management/roleService.js","app/helpers/validators/management/user/RegisterUserValidator.js","app/helpers/validators/management/user/UpdatePasswordValidator.js","app/helpers/validators/management/user/EditUserValidator.js","app/pages/admin/management/system/user/UserListingPage.js","app/pages/admin/management/system/user/UserProfilePage.js","app/services/project/projectService.js","app/pages/admin/project/project/ProjectListingPage.js","app/helpers/validators/project/project/ProjectValidator.js","app/pages/admin/project/project/ProjectManagementPage.js","app/components/FileUploadBlock.js","app/components/RecursiveDocumentTree.js","app/services/project/projectDocumentService.js","app/pages/admin/project/project/ProjectDocumentPage.js","app/components/DataGridFilterModule.js","app/services/project/testPackageLogService.js","app/components/ExcelImportWizard.js","app/services/project/weldLogService.js","app/services/project/flangeLogService.js","app/services/project/psvLogService.js","app/components/ExcelImportChangeLogWizard.js","app/components/ExcelImportExportComponent.js","app/pages/admin/project/project/TestPackageLogPage.js","app/pages/admin/project/project/FlangeLogPage.js","app/services/project/ndeRequestService.js","app/pages/admin/project/project/WeldLogPage.js","app/pages/admin/project/project/PSVLogPage.js","app/pages/admin/project/project/documents/LogDocumentPage.js","app/services/project/dailyFormService.js","app/services/project/dailyInspectionVtFormService.js","app/services/project/dailyFlangeLogFormService.js","app/pages/admin/project/project/DailyFormsPage.js","app/pages/admin/project/project/DailyInspectionVtFormPage.js","app/pages/admin/project/project/ProjectAccessPage.js","app/pages/admin/project/project/NDERequestListingPage.js","app/services/management/statusService.js","app/helpers/validators/management/status/StatusValidator.js","app/pages/admin/project/management/status/CustomStatusListingPage.js","app/services/management/clientService.js","app/pages/admin/project/management/client/ClientListingPage.js","app/helpers/validators/management/client/ClientValidator.js","app/pages/admin/project/management/client/ClientManagementPage.js","app/services/management/contractorService.js","app/pages/admin/project/management/contractor/ContractorListingPage.js","app/helpers/validators/management/contractor/ContractorValidator.js","app/pages/admin/project/management/contractor/ContractorManagementPage.js","app/components/SideNav.js","app/routes/ProjectRoute.js","app/services/management/dailyFormNotificationEmailService.js","app/pages/admin/management/system/notificationEmail/DailyFormNotificationEmailListingPage.js","app/pages/admin/project/project/WeldLogReportTable.js","app/pages/admin/project/project/WeldLogReportPage.js","app/pages/admin/project/project/FlangeLogReportPage.js","app/pages/admin/project/project/DailyFlangeLogFormPage.js","app/components/TextAreaBlock.js","app/pages/admin/project/project/NDERequestFormPage.js","app/pages/admin/project/project/KPIReportPage.js","app/Routes.js","app/App.js","reportWebVitals.js","index.js"],"names":["CustomBlock","props","className","style","children","defaultProps","Overlay","isContained","overlayDarkness","onClick","hasLoader","animateShow","useSpring","opacity","from","loader","size","normal","dark","NavBlock","title","titleColor","type","iconLeft","iconRight","to","backgroundColor","tooltipText","tooltipTextColor","tooltipBackgroundColor","isCollapsed","history","useHistory","path","push","DrawerNav","isOpen","navigationItems","onClickLogout","hasOverlay","willCloseOnMaskPress","strokeWidth","Button","text","isTextUppercase","isBadge","isLoading","isDisabled","buttonSubActions","isSubActionsVisible","lg","md","sm","xs","xxs","icon","disabled","Image","containerClassName","hasRoundCorners","source","alt","src","TopNav","iconTo","headerTitle","headerTitleColor","returnIconColor","menuItems","menuItemTextColor","menuToggleIcon","activeMenuItemBackgroundColor","routePath","primaryButtonActionText","userInitials","userAvatarBackgroundColor","primaryIconActionOnClick","secondaryIconActionOnClick","optionalIconActionOnClick","hasNavigation","hasReturnAction","hasReturnActionText","hasReturnActionBackground","hasHeaderTitle","onClickAvatar","navigateToPath","goBack","map","menuItem","submenuItems","name","action","submenuItem","actionTypes","initialAuthState","user","firstName","lastName","username","authToken","refreshToken","accessLevel","tempAccessLevel","reducer","persistReducer","storage","key","whitelist","state","token","payload","userDetail","decodedToken","jwt_decode","parseInt","AccessLevel","actions","login","logout","updateJwtToken","initialProjectDetails","projectName","projectId","isCompleted","setProjectDetails","model","resetProjectDetails","connect","auth","projectDetail","Component","component","rest","useState","isDrawerOpen","setIsDrawerOpen","iconColor","topNavMenuItems","id","subMenuItems","isVisible","render","Icon","filter","x","item","index","setTimeout","DotIndicator","hasDotIndicator","dotIndicatorColor","TextHeader","subtitle","subtitleSize","subtitleClassName","isCentered","iconLeftClassName","textSize","xl","mdlg","ContentHeader","headerSize","primaryButtonText","primaryButtonBackgroundColor","primaryButtonIconLeft","secondaryButtonText","secondaryButtonBackgroundColor","secondaryButtonIconLeft","buttonSize","headerIcon","headerIconContainerClass","primaryButtonTo","secondaryButtonTo","headerIconTo","primaryButtonOnClick","secondaryButtonOnClick","headerIconOnClick","isPrimaryLinkTargetBlank","isSecondaryLinkTargetBlank","isButtonTextUppercase","isPrimaryButtonLoading","isPrimaryButtonDisabled","isSecondaryButtonLoading","isSecondaryButtonDisabled","isTitleCentered","openInNewTab","uppercaseText","ModalBlock","closeIconColor","contentHeader","contentDescription","buttonActionsContainerClassName","primaryModalActionType","primaryModalActionText","primaryModalActionColor","secondaryModalActionType","secondaryModalActionText","secondaryModalActionColor","onHide","closeActionOnClick","primaryModalActionOnClick","secondaryModalActionOnClick","hasCloseAction","isPrimaryActionHidden","isSecondaryActionHidden","isPrimaryModalActionIsLoading","Modal","show","initialConfirmModalState","btnAction","console","log","closeBtnAction","rightBtnText","isProcessing","showConfirmModal","hideConfirmModal","setProcessing","confirmModal","handleCloseBtn","centered","padded","static","contentDescriptionClassName","initialAlertState","visible","showAlert","hideAlert","alertToast","useEffect","success","error","warning","info","FormBlock","onSubmit","InputBlock","label","inputLabel","inputState","errorMessage","successMessage","warningMessage","labelColor","placeholder","mask","inputRightButtonText","inputRightButtonBackgroundColor","iconLeftOnClick","iconRightOnClick","inputRightButtonOnClick","isRequired","isLabelLoading","isAutoFocus","hasBorder","inputStates","marginTop","tabIndex","autoFocus","paddingLeft","width","ForgotPasswordBlock","returnActionOnClick","Yup","shape","email","required","password","constants","API_URL","process","REQUIRE_INTERCEPTORS","requestHandlerEnabled","responseHandlerEnabled","MUI_X_LICENSE_KEY","DEFAULT_COLUMNS","EXCEL_FILE_TYPES","CELL_TYPES","primary","secondary","tertiary","custom","getInputClasses","formik","fieldname","touched","errors","convertJsonToFormData","json","form_data","FormData","Array","isArray","forEach","append","setToOptionModel","value","appReducer","combineReducers","sagaMiddleware","createSagaMiddleware","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","thunk","store","configureStore","devTools","enhancers","reduxBatch","persistor","persistStore","isEnabled","config","property","hasOwnProperty","requestHandler","request","a","getState","headers","Authorization","errorHandler","err","originalConfig","url","response","status","_retry","axiosInstance","post","rs","data","dispatch","Error","message","defaultErrorHandler","Promise","resolve","then","res","Message","localStorage","removeItem","window","location","origin","axios","create","baseURL","interceptors","use","successHandler","ENDPOINTORIGIN","register","getUserById","userId","get","getLoggedInUser","getAllUsers","updateUser","put","changeUserPassword","changeSelfPassword","deleteUser","delete","initialModel","authRedux","passwordVisible","setPasswordVisible","forgotPasswordBlockVisible","setForgotPasswordBlockVisible","useFormik","initialValues","validationSchema","LoginValidator","values","setSubmitting","userService","catch","ex","finally","loginUser","helper","getFieldProps","isSubmitting","isValid","handleSubmit","Logo","Section","hasNoContainer","isFullWidth","containerStyle","rowClassName","rowStyle","ContentBlock","cols","CheckboxBlock","labelClassName","isChecked","onChange","checked","for","SelectBlock","isAsync","isCreatable","isMulti","display","marginBottom","classNamePrefix","getAllRoles","max","roleId","nullable","min","confirmPassword","oneOf","isActive","userRegisterModel","initialUpdatePasswordModel","initialEditModel","alert","registerModalVisible","setRegisterModalVisible","updatePasswordModalVisible","setUpdatePasswordRegisterModalVisible","editModalVisible","setEditModalVisible","isPasswordVisible","setIsPasswordVisible","isConfirmPasswordVisible","setIsConfirmPasswordVisible","userList","setUserList","setIsLoading","updatePasswordModel","setUpdatePasswordModel","editUserModel","setEditUserModel","roleOptions","setRoleOptions","selectedRole","setSelectedRole","addNew","iconSize","emailIcon","roleService","registerUserFormik","RegisterUserValidator","registerUser","updatePasswordUserFormik","UpdatePasswordValidator","enableReinitialize","updateUserPassword","editUserFormik","EditUserValidator","editUser","closeRegisterModal","resetForm","closeEditModal","columnOptions","sort","print","download","columns","options","customBodyRenderLite","dataIndex","userInRole","find","selectableRows","jumpToPage","textLabels","pagination","opt","setFieldValue","userProfile","setUserProfile","getUserDetail","closePasswordModal","getProjects","showCompleted","getClientAndContractors","getProjectById","saveProject","deleteProject","completeProject","assignProjectUsers","removeUserAssignment","getUsersForProjectAccess","getAvailableUsers","getKPIReportData","getContractorUsersForProject","getKPIReportForWeldLogByContractor","contractor","isConfirmDeleteModalVisible","setIsConfirmDeleteModalVisible","projects","setProjects","projectFilter","setProjectFilter","getAllProjects","projectService","downloadDirectory","open","clientId","projectNumber","description","contractorIds","users","projectContractors","projectDetailRedux","useParams","isModalVisible","setIsModalVisible","project","setProject","setUsers","clients","setClients","contractors","setContractors","selectedUserOptions","setSelectedUserOptions","selectedClientOption","setSelectedClientOption","selectedContractorOption","setSelectedContractorOption","isClientLoading","setIsClientLoading","fetchClientsAndPopulateForm","tempClients","tempContractors","populateForm","ProjectValidator","processedClients","processedContractors","fetchUsers","savedClient","selectedContractorIds","contractorId","savedContractors","includes","role","handleModalClose","closeMenuOnSelect","selectedOpt","maxLength","length","registerPlugin","FilePondPluginImageExifOrientation","FilePondPluginImagePreview","FilePondPluginFileValidateType","FileUploadBlock","labelIdle","TransitionComponent","transform","in","div","Collapse","StyledTreeItem","withStyles","theme","iconContainer","group","marginLeft","borderLeft","alpha","palette","TreeItem","useStyles","makeStyles","root","height","flexGrow","maxWidth","folderStructure","setFolderStructure","addNewFileFolder","renameFileFolder","deleteFileFolder","isActionsVisible","downloadFile","showIndex","setShowIndex","editObj","setEditObj","setIsMulti","classes","file","setFile","fileList","setFileList","uploaded","setUploaded","uploading","setUploading","deleteRecursively","arr","node","findIndex","splice","obj","folderOnly","clonedFolderStructure","_","findNodeById","desiredNode","renameRecursively","hideModalHandler","addFolderHandler","parentId","nodeFound","newObj","filePath","tempArr","sortByName","saveMultipleFiles","savedFiles","addFileHandler","b","toLowerCase","ActionLabelComponent","propsT","e","preventDefault","encodedFilePath","encodeURIComponent","replace","Header","closeButton","Title","Body","allowMultiple","onupdatefiles","fileT","selectedFile","FormControlLabel","control","Switch","color","target","Footer","variant","TreeView","defaultExpanded","defaultCollapseIcon","defaultExpandIcon","defaultEndIcon","renderTree","nodes","nodeId","getProjectDocumentsByName","parentName","childName","getProjectDocuments","saveProjectDocument","deleteProjectDocument","renameProjectDocument","projectDocumentId","newName","fetchProjectDocuments","projectDocumentService","projectDoc","projectDocument","DataGridFilterModule","originalRows","updateRowFn","setFilter","selectedOptions","setSelectedOptions","determineOptionsDataType","val","Date","moment","format","Accordion","Item","eventKey","field","column","headerName","row","Infinity","temp","tempSelected","resetModel","Object","keys","shouldAdd","every","getTestPackageLogs","createTestPackageLog","deleteTestPackageLog","updateTestPackageLog","getContractors","getContractorsByTp","tp","bulkUpdate","ExcelImportWizard","uploadedFile","setUploadedFile","setExcelJson","nextStep","useWizard","errMessage","setErrMessage","getJsonKey","formatDateOrReturnOriginal","input","parsedDate","validateExcel","readXlsxFile","rows","headerRow","dataRows","jsonData","rowData","header","i","columnsInUploadedExcelSheet","defaultColumns","columnsNotInExcel","join","some","Alert","onClose","dismissible","Heading","files","acceptedFileTypes","getWeldLogs","createWeldLog","deleteWeldLog","updateWeldLog","getReportData","testPackage","getCompositeReportData","getDrawingNos","getFlangeLogs","isTestPackage","createFlangeLog","deleteFlangeLog","updateFlangeLog","getPsvLogs","createPsvLog","deletePsvLog","updatePsvLog","getPsvLogHistory","ExcelImportChangeLogWizard","excelJson","fetchLogs","handleModalOnClose","previousStep","viewAll","setViewAll","updatedRows","setUpdatedRows","setErrors","updatedValues","previousValues","changedObjects","updatedObj","matchingObj","generateBasedOnChange","parent","Table","bordered","defaultActiveKey","overflowX","preval","prevVal","hover","updateFunction","testPackageLogService","weldLogService","flangeLogService","psvLogLogService","excelSheetName","isModalOpen","setIsModalOpen","createExcel","wb","XLSX","book_new","ws","aoa_to_sheet","sheet_add_aoa","colWidths","book_append_sheet","fullscreen","setSource","originalSource","setOriginalSource","ndePercentage","hydroPercentage","postPercentage","packagePercentage","hydroCount","postCount","packageCount","hydroAsterickCount","postAsterickCount","packageAsterickCount","unitAsterickCount","overallTotal","miniTableData","setMiniTableData","totalApiTestReportCompleted","totalPopTestReportCompleted","totalQcCompleted","totalPsv","psvData","setPsvData","apiRef","useGridApiRef","calculateMiniTableData","testPackageLogs","psvLogData","ndeCount","ndeComplete","hydroComplete","postComplete","packageSold","unit","toFixed","sortable","renderCell","params","editable","valueFormatter","valueOptions","newLineToAdd","executionWo","mocNumber","jobNumber","packageNumber","lineNumber","testPressure","material","stressRelief","notes","comments","systems","striped","Box","sx","DataGridPro","rowsPerPageOptions","initialState","pinnedColumns","left","pageSize","ref","components","Toolbar","GridToolbarContainer","GridToolbarExport","onCellEditCommit","originalModel","indexToReplace","indexOf","originalTemp","originalIndexToReplace","setTestPackageLogs","psvLogs","setPsvLogs","flangeLogs","testPackageNumber","psvReliefValveNumber","Set","newAddedLine","flangeId","burnsId","iso","systemId","rating","flangeFace","acceptedBy","reportedBoltUpdate","typeOfGasketInstalled","typeOfBoltsUsed","threadsFullyEngaged","hammerTest","hammerTestBy","torqueRequired","torqueCompleteBy","dateTorqued","qcCompleted","qcCompleteBy","qaCompleted","qaCompleteBy","moc","csvOptions","fileName","getNDERequests","getNDERequestById","ndeRequestId","getNDERequestLineItems","createNDERequest","createNDERequestWithLineItems","createNDERequestLineItem","deleteNDERequestLineItem","deleteNDERequest","updateNDERequestLineItem","sendNotificationToNDEContractor","sendNotificationToAdmins","getNDERequestLog","completeNDERequest","rowSelectionModel","setRowSelectionModel","weldLogs","newLineItem","hcw","weldNo","workListNumber","scopeRevReWork","dwgNo","baseMaterial","pipeSize","pipeSchedule","stencil1","stencil2","stencil3","stencil4","weldType","weldLocation","spec","vtDate","vtBy","pmiPercentage","pmiReportNumber","pmiDate","ptMtPercentage","ptMtReportNumber","ptMtDate","ptMtBy","accRej","xrayUtPercentage","xrayUtReportNumber","rtUtDate","weldAcceptedRejected","r1AcceptedRejected","r2AcceptedRejected","afterStressPercentage","afterStressReportNumber","afterStressDate","rtUtAsPercentage","rtUtAsReportNumber","rtUtAsDate","pwhtPercentage","pwhtReportNumber","pwhtDate","bhnPercentage","bhnReportNumber","bhnDate","wpsPqr","bakeOut","preheat","weldsToPost","ndeRequestService","welds","createNDERequestForm","checkboxSelection","GRID_CHECKBOX_SELECTION_COL_DEF","keepNonExistentRowsSelected","onSelectionModelChange","newRowSelectionModel","psvLogHistory","setPsvLogHistory","isLogModalOpen","setIsLogModalOpen","psvLogService","reliefValveNumber","reliefValveSerialNumber","psvSpecSheet","requiredSetPressure","reliefValveMakeModel","systemNumber","pandID","pipeSpec","psvDescription","inletFlangeSize","inletFlangeRating","outletFlangeSize","outletFlangeRating","inletGasketMaterial","inletBoltMaterial","outletGasketMaterial","outletBoltMaterial","flangeFaceAccRej","reportedBoltupDate","hammerTestAccRej","torqueCompletedBy","setPressureVerified","qCCompleteBy","qCCompletedDate","qACompleteBy","qACompletedDate","popTestDate","popTestReportNumber","finalReviewBy","apiCompleteBy","finalReportDate","apiReportDate","createdBy","dateCreated","folderName","logName","getDailyForms","deleteDailyForm","formId","getDailyInspectionVtFormById","createDailyInspectionVtForm","submitDailyInspectionVtForm","getDailyInspectionVtFormLineItems","dailyInspectionVtFormId","createDailyInspectionVtFormLineItem","updateDailyInspectionVtFormLineItem","deleteDailyInspectionVtFormLineItem","getDailyFlangeLogFormById","createDailyFlangeLogForm","submitDailyFlangeLogForm","getDailyFlangeLogFormLineItems","dailyFlangeLogFormId","createDailyFlangeLogFormLineItem","updateDailyFlangeLogFormLineItem","deleteDailyFlangeLogFormLineItem","forms","setForms","getAllForms","dailyFormService","isSubmitted","dailyInspectionVtForm","dailyFlangeLogForm","weldNos","setWeldNos","vtForm","setVtForm","getLineItems","getVtForm","dailyInspectionVtFormService","lineItems","hide","testPackageNo","welderId","sch","lineSpec","vtOkRej","date","dataAdmins","setDataAdmins","clientUsers","setClientUsers","contractorUsers","setContractorUsers","fetchProjectUsers","Text","toggleAssignment","flush","alwaysOpen","tempDataAdminUsers","handleDataAdminChecked","client","tempClientUsers","handleClientChecked","colSpan","contractorName","tempContractorUsers","handleContractorChecked","getStatuses","getStatusById","saveStatus","deleteStatus","colorCode","requiresComment","modalVisible","setModalVisible","statuses","setStatuses","statusModel","setStatusModel","getAllStatuses","StatusValidator","statusService","isSystemDefined","fetchStatusById","onChangeComplete","c","hex","getAllClients","getClientById","createClient","updateClient","deleteClient","assignClientUsers","getClients","clientService","contactName","contactPhone","contactEmail","address1","address2","city","zipCode","initialClientModel","menus","setClient","ClientValidator","availableUsers","projectColumns","getAllContractors","getContractorById","createContractor","updateContractor","deleteContractor","assignContractorUsers","contractorService","initialContractorModel","setContractor","ContractorValidator","SideNav","isCollapsible","isExpanded","isSideNavCollapsed","setIsSideNavCollapsed","isSideNavMenuTitleVisible","setIsSideNavMenuTitleVisible","navBarItems","iconRightBackgroundColor","link","getAll","save","deleteEmail","emails","setEmails","setModel","getAllEmails","dailyFormNotificationEmailService","saveNotificationEmail","WeldLogReportTable","tableName","fivePercentCompleteSw","fivePercentInCompleteSw","fivePercentCompleteFw","fivePercentInCompleteFw","fivePercentCompleteTw","fivePercentInCompleteTw","tenPercentCompleteSw","tenPercentInCompleteSw","tenPercentCompleteFw","tenPercentInCompleteFw","tenPercentCompleteTw","tenPercentInCompleteTw","twentyPercentCompleteSw","twentyPercentInCompleteSw","twentyPercentCompleteFw","twentyPercentInCompleteFw","twentyPercentCompleteTw","twentyPercentInCompleteTw","hundredPercentCompleteSw","hundredPercentInCompleteSw","hundredPercentCompleteFw","hundredPercentInCompleteFw","hundredPercentCompleteTw","hundredPercentInCompleteTw","textAlign","setData","selectedContractor","setSelectedContractor","decodeURIComponent","getWeldLogReport","contractorValue","naSwTotal","naFwTotal","naTwTotal","totalNumberOfBoltUps","boltUpsReportedComplete","totalBoltUpsQcComplete","percentReportedComplete","percentRemaining","calcData","setCalcData","chartData","setChartData","reduce","v","modifiedChartData","adjustChartData","chartType","chart","dailyFlangeFormId","flanges","setFlanges","flangeLogForm","setFlangeLogForm","getFlangeLogForm","dailyFlangeLogFormService","newLine","qcComplete","reportedDate","TextAreaBlock","initialEmailModel","subject","href","completedByUserId","completedDateTime","ndeRequest","setNDERequest","setWeldLogs","drawings","setDrawings","emailOptions","setEmailOptions","selectedEmails","setSelectedEmails","ndeRequestLog","setNDERequestLog","getContractorUsers","getNDERequest","fetchDrawings","ndeRequests","sendNotificationToContractors","prePWHT","postPWHT","paut","rt","pt","mt","ht","pmi","fn","bhn","dateSentOut","dateCompleted","dateReviewedBy","dateDataEntered","requestBy","mdel","isClearable","option","__isNew__","test","emailAddress","flangeLogReport","testPackageReport","totalTestPackages","ndePercentageComplete","hydroPercentageComplete","postPercentageComplete","packageSoldPercentageComplete","overallTotalCompleted","weldLogReport","totalWelds","totalShopWelds","totalFieldWelds","totalTieInWelds","completedShopWelds","completedFieldWelds","completedTieInWelds","acceptedShopWelds","acceptedTieInFieldWelds","rejectedShopWelds","rejectedTieInFieldWelds","shopWeldRejectionRate","tieInFieldWeldRejectionRate","completedNDERequest","totalNDERequest","psvLogReport","flangeChartData","setFlangeChartData","flangeChartDataByPsv","setFlangeChartDataByPsv","totalBoltUpsQaComplete","totalTorqueComplete","calcDataByPsv","setCalcDataByPsv","flangeLogData","setFlangeLogData","tpChartData","setTpChartData","psvChartData","setPsvChartData","hasDataLoaded","setHasDataLoaded","totalWeldChartData","setTotalWeldChartData","rejectWeldChartData","setRejectWeldChartData","ndeRequestData","setNDERequestData","totalFlange","totalQAComplete","totalQCComplete","totalFlangeByPsv","totalQACompleteByPsv","totalQCCompleteByPsv","flangeLogMetaData","setFlangeLogMetaData","getKPIReport","getWeldLogKPIData","tempData","prepareTotalWeldLogChart","prepareRejectedWeldLogChart","prepareFlangeLogChart","prepareFlangeLogChartByPsv","flangeLogReportByPsv","prepareTestPackageChart","prepareNDERequestLogChart","preparePsvLogChart","adjustChartDataByPsv","reload","colors","isAuthorized","setIsAuthorized","pathname","useLocation","body","document","querySelector","scrollTo","enableBodyScroll","validateAccess","exact","LoginPage","UserListingPage","UserProfilePage","ProjectListingPage","ProjectManagementPage","ProjectDocumentPage","TestPackageLogPage","LogDocumentPage","FlangeLogPage","FlangeLogReportPage","WeldLogPage","PSVLogPage","WeldLogReportPage","DailyFormsPage","DailyInspectionVtFormPage","DailyFlangeLogFormPage","NDERequestFormPage","NDERequestListingPage","KPIReportPage","ProjectAccessPage","CustomStatusListingPage","DailyFormNotificationEmailListingPage","ClientListingPage","ClientManagementPage","ContractorListingPage","ContractorManagementPage","LicenseInfo","setLicenseKey","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","basename","getElementById"],"mappings":"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","file":"static/js/main.d93e686e.chunk.js","sourcesContent":["// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst CustomBlock = (props) => {\r\n const { className, style, children } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nCustomBlock.propTypes = {\r\n // MAIN PROPS\r\n className: PropTypes.string,\r\n style: PropTypes.object,\r\n children: PropTypes.any\r\n};\r\n\r\nCustomBlock.defaultProps = {\r\n className: '',\r\n style: {},\r\n children: null\r\n};\r\n\r\nexport default CustomBlock;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSpring } from 'react-spring';\r\n// COMPONENTS\r\nimport { AiOutlineLoading } from 'react-icons/ai';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst Overlay = (props) => {\r\n const {\r\n isContained,\r\n overlayDarkness,\r\n onClick,\r\n hasLoader,\r\n } = props;\r\n\r\n const overlayDarknessOptions = {\r\n normal: 'normal',\r\n dark: 'dark'\r\n };\r\n\r\n const animateShow = useSpring({ opacity: 1, from: { opacity: 0 } });\r\n const loader = ();\r\n\r\n return (\r\n <>\r\n {\r\n !isContained\r\n ? (\r\n \r\n {hasLoader && loader}\r\n \r\n )\r\n : (\r\n \r\n {hasLoader && loader}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nOverlay.propTypes = {\r\n // MAIN PROPS\r\n isContained: PropTypes.bool,\r\n overlayDarkness: PropTypes.string,\r\n onClick: PropTypes.func,\r\n hasLoader: PropTypes.bool,\r\n};\r\n\r\nOverlay.defaultProps = {\r\n // MAIN PROPS\r\n isContained: false,\r\n overlayDarkness: 'normal',\r\n onClick: (() => {}),\r\n hasLoader: false,\r\n};\r\n\r\nexport default Overlay;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n// COMPONENTS\r\nimport PropTypes from 'prop-types';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst NavBlock = (props) => {\r\n const {\r\n title,\r\n titleColor,\r\n type,\r\n iconLeft,\r\n iconRight,\r\n to,\r\n onClick,\r\n backgroundColor,\r\n tooltipText,\r\n tooltipTextColor,\r\n tooltipBackgroundColor,\r\n isCollapsed\r\n } = props;\r\n\r\n const history = useHistory();\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n return (\r\n \r\n navigateToPath(to) : onClick}\r\n className={`nav-block ${backgroundColor}`}\r\n >\r\n \r\n {\r\n iconLeft\r\n && (\r\n \r\n {iconLeft}\r\n\r\n {\r\n tooltipText && isCollapsed\r\n && (\r\n \r\n

{tooltipText}

\r\n
\r\n )\r\n }\r\n
\r\n )\r\n }\r\n \r\n

{title}

\r\n
\r\n\r\n
\r\n {\r\n iconRight\r\n && (\r\n \r\n {iconRight}\r\n \r\n )\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\n// PROPS\r\nNavBlock.propTypes = {\r\n // MAIN PROPS\r\n type: PropTypes.string,\r\n title: PropTypes.string,\r\n titleColor: PropTypes.string,\r\n\r\n // ICON PROPS\r\n iconLeft: PropTypes.any,\r\n iconRight: PropTypes.any,\r\n\r\n // TOOLTIP PROPS\r\n tooltipText: PropTypes.string,\r\n tooltipTextColor: PropTypes.string,\r\n tooltipBackgroundColor: PropTypes.string,\r\n\r\n // APPEARANCE PROPS\r\n backgroundColor: PropTypes.string,\r\n\r\n // NAVIGATION PROPS\r\n to: PropTypes.string,\r\n\r\n // BOOLEAN PROPS\r\n isCollapsed: PropTypes.bool,\r\n\r\n // FUNCTION PROPS\r\n onClick: PropTypes.func,\r\n};\r\n\r\n// DEFAULT PROPS\r\nNavBlock.defaultProps = {\r\n // MAIN PROPS\r\n title: '',\r\n titleColor: 'dark-blue--clr',\r\n type: '',\r\n\r\n // ICON PROPS\r\n iconLeft: null,\r\n iconRight: null,\r\n\r\n // TOOLTIP PROPS\r\n tooltipText: '',\r\n tooltipTextColor: 'white--clr',\r\n tooltipBackgroundColor: 'dark-blue--sbg',\r\n\r\n // APPEARANCE PROPS\r\n backgroundColor: 'white--sbg',\r\n\r\n // NAVIGATION PROPS\r\n to: '',\r\n\r\n // BOOLEAN PROPS\r\n isCollapsed: false,\r\n\r\n // FUNCTION PROPS\r\n onClick: null,\r\n};\r\n\r\nexport default NavBlock;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// ICONS\r\nimport { TbLogout } from 'react-icons/tb';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport Overlay from './Overlay';\r\nimport NavBlock from './NavBlock';\r\n\r\nconst DrawerNav = (props) => {\r\n const {\r\n isOpen,\r\n backgroundColor,\r\n navigationItems,\r\n onClick,\r\n onClickLogout,\r\n // closeActionOnClick,\r\n hasOverlay,\r\n willCloseOnMaskPress\r\n } = props;\r\n\r\n return (\r\n <>\r\n {\r\n (isOpen && hasOverlay)\r\n && (\r\n \r\n )\r\n }\r\n \r\n \r\n\r\n \r\n {navigationItems}\r\n\r\n \r\n \r\n)}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDrawerNav.propTypes = {\r\n // MAIN PROPS\r\n backgroundColor: PropTypes.string,\r\n navigationItems: PropTypes.any,\r\n\r\n // FUNCTION PROPS\r\n onClick: PropTypes.func,\r\n onClickLogout: PropTypes.func,\r\n // closeActionOnClick: PropTypes.func,\r\n\r\n // BOOLEAN PROPS\r\n isOpen: PropTypes.bool,\r\n hasOverlay: PropTypes.bool,\r\n willCloseOnMaskPress: PropTypes.bool,\r\n};\r\n\r\nDrawerNav.defaultProps = {\r\n // MAIN PROPS\r\n backgroundColor: 'white--sbg',\r\n navigationItems: null,\r\n\r\n // FUNCTION PROPS\r\n onClick: null,\r\n onClickLogout: null,\r\n // closeActionOnClick: null,\r\n\r\n // BOOLEAN PROPS\r\n isOpen: false,\r\n hasOverlay: false,\r\n willCloseOnMaskPress: true,\r\n};\r\n\r\nexport default DrawerNav;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\n// ICONS\r\nimport { AiOutlineLoading } from 'react-icons/ai';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst Button = (props) => {\r\n const {\r\n text,\r\n size,\r\n type,\r\n style,\r\n to,\r\n onClick,\r\n className,\r\n isTextUppercase,\r\n isBadge,\r\n isLoading,\r\n isDisabled,\r\n buttonSubActions,\r\n isSubActionsVisible,\r\n iconLeft,\r\n iconRight\r\n } = props;\r\n\r\n const sizes = {\r\n lg: '--lg',\r\n md: '--md',\r\n sm: '--sm',\r\n xs: '--xs',\r\n xxs: '--xxs',\r\n icon: '--icon'\r\n };\r\n\r\n const history = useHistory();\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n return (\r\n <>\r\n navigateToPath(to) : onClick}\r\n className={`button${size && sizes[size]} ${className} ${isTextUppercase ? 'uppercase' : ''} ${isBadge ? 'badge' : ''}`}\r\n style={style}\r\n disabled={isDisabled || isLoading}\r\n >\r\n {iconLeft}\r\n {isLoading ? : text}\r\n {iconRight}\r\n \r\n {\r\n buttonSubActions\r\n && (\r\n \r\n {buttonSubActions}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nButton.propTypes = {\r\n // MAIN PROPS\r\n text: PropTypes.string,\r\n size: PropTypes.string,\r\n type: PropTypes.string,\r\n style: PropTypes.object,\r\n to: PropTypes.string,\r\n onClick: PropTypes.func,\r\n className: PropTypes.string,\r\n isTextUppercase: PropTypes.bool,\r\n isBadge: PropTypes.bool,\r\n isLoading: PropTypes.bool,\r\n isDisabled: PropTypes.bool,\r\n\r\n // SUB ACTIONS PROPS\r\n buttonSubActions: PropTypes.element,\r\n isSubActionsVisible: PropTypes.bool,\r\n\r\n // ICON PROPS\r\n iconLeft: PropTypes.element,\r\n iconRight: PropTypes.element\r\n};\r\n\r\nButton.defaultProps = {\r\n // MAIN PROPS\r\n text: '',\r\n size: '',\r\n type: 'button',\r\n style: {},\r\n to: null,\r\n onClick: () => { },\r\n className: '',\r\n isTextUppercase: false,\r\n isBadge: false,\r\n isLoading: false,\r\n isDisabled: false,\r\n\r\n // SUB ACTIONS PROPS\r\n buttonSubActions: null,\r\n isSubActionsVisible: false,\r\n\r\n // ICON PROPS\r\n iconLeft: null,\r\n iconRight: null\r\n};\r\n\r\nexport default Button;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst Image = (props) => {\r\n const {\r\n to,\r\n onClick,\r\n containerClassName,\r\n className,\r\n hasRoundCorners,\r\n source,\r\n alt,\r\n } = props;\r\n\r\n const history = useHistory();\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n (to !== '' || null || onClick !== null)\r\n ? (\r\n navigateToPath(to) : onClick}\r\n className={containerClassName}\r\n type=\"button\"\r\n >\r\n \r\n \r\n ) : (\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nImage.propTypes = {\r\n // MAIN PROPS\r\n to: PropTypes.string,\r\n onClick: PropTypes.func,\r\n containerClassName: PropTypes.string,\r\n className: PropTypes.string,\r\n hasRoundCorners: PropTypes.bool,\r\n source: PropTypes.string.isRequired,\r\n alt: PropTypes.string,\r\n};\r\n\r\nImage.defaultProps = {\r\n // MAIN PROPS\r\n to: '',\r\n alt: 'Image',\r\n onClick: null,\r\n containerClassName: '',\r\n className: '',\r\n hasRoundCorners: false,\r\n};\r\n\r\nexport default Image;","/* eslint-disable max-len */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n// COMPONENTS\r\nimport PropTypes from 'prop-types';\r\n// ICONS\r\nimport {\r\n TbSettings,\r\n TbBellRinging2,\r\n // TbInfoCircle,\r\n TbLogout,\r\n // TbMenu\r\n // TbChevronLeft\r\n} from 'react-icons/tb';\r\nimport { HiChevronLeft, HiChevronDown } from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport Button from './Button';\r\nimport NavBlock from './NavBlock';\r\nimport Image from './Image';\r\n\r\nconst TopNav = (props) => {\r\n const {\r\n backgroundColor,\r\n icon,\r\n iconTo,\r\n headerTitle,\r\n headerTitleColor,\r\n returnIconColor,\r\n menuItems,\r\n menuItemTextColor,\r\n menuToggleIcon,\r\n activeMenuItemBackgroundColor,\r\n routePath,\r\n primaryButtonActionText,\r\n userInitials,\r\n userAvatarBackgroundColor,\r\n primaryIconActionOnClick,\r\n secondaryIconActionOnClick,\r\n optionalIconActionOnClick,\r\n hasNavigation,\r\n hasReturnAction,\r\n hasReturnActionText,\r\n hasReturnActionBackground,\r\n hasHeaderTitle,\r\n onClickAvatar,\r\n onClick,\r\n } = props;\r\n\r\n const history = useHistory();\r\n const actionIconSize = 25;\r\n const iconSize = 30;\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n return (\r\n \r\n {/* MAIN NAVIGATION */}\r\n \r\n \r\n {\r\n hasReturnAction\r\n && (\r\n {\r\n history.goBack();\r\n }}\r\n >\r\n \r\n {hasReturnActionText &&

Back

}\r\n \r\n )\r\n }\r\n {\r\n icon\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n {(hasHeaderTitle) &&

{headerTitle}

}\r\n
\r\n\r\n {\r\n hasNavigation\r\n && (\r\n \r\n
    \r\n {\r\n menuItems.map((menuItem) => (\r\n menuItem.submenuItems\r\n ? (\r\n
  • \r\n navigateToPath(menuItem.to) : menuItem.action}\r\n className={`menu-item ${menuItemTextColor}`}\r\n iconRight={}\r\n />\r\n \r\n
      \r\n {\r\n menuItem.submenuItems.map((submenuItem) => (\r\n
    • \r\n \r\n
    • \r\n ))\r\n }\r\n
    \r\n
    \r\n
  • \r\n ) : (\r\n
  • \r\n navigateToPath(menuItem.to) : onClick}\r\n />\r\n
  • \r\n )\r\n ))\r\n }\r\n
\r\n
\r\n )\r\n }\r\n\r\n \r\n {primaryButtonActionText}\r\n\r\n \r\n {\r\n optionalIconActionOnClick\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n secondaryIconActionOnClick\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n primaryButtonActionText\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n\r\n \r\n

{userInitials}

\r\n \r\n
\r\n
\r\n\r\n {/* MOBILE NAVIGATION */}\r\n \r\n \r\n {\r\n icon\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n\r\n \r\n \r\n \r\n

{userInitials}

\r\n \r\n\r\n \r\n {menuToggleIcon}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n// PROPS\r\nTopNav.propTypes = {\r\n // MAIN PROPS\r\n backgroundColor: PropTypes.string,\r\n icon: PropTypes.any,\r\n iconTo: PropTypes.string,\r\n headerTitle: PropTypes.string,\r\n headerTitleColor: PropTypes.string,\r\n returnIconColor: PropTypes.string,\r\n menuItems: PropTypes.any,\r\n menuItemTextColor: PropTypes.string,\r\n menuToggleIcon: PropTypes.any,\r\n activeMenuItemBackgroundColor: PropTypes.string,\r\n routePath: PropTypes.string,\r\n\r\n // ACTION PROPS\r\n primaryButtonActionText: PropTypes.string,\r\n\r\n // USER PROPS\r\n userInitials: PropTypes.string,\r\n userAvatarBackgroundColor: PropTypes.string,\r\n\r\n // FUNCTION PROPS\r\n primaryIconActionOnClick: PropTypes.func,\r\n secondaryIconActionOnClick: PropTypes.func,\r\n optionalIconActionOnClick: PropTypes.func,\r\n onClickAvatar: PropTypes.func,\r\n onClick: PropTypes.func,\r\n\r\n // BOOLEAN PROPS\r\n hasNavigation: PropTypes.bool,\r\n hasReturnAction: PropTypes.bool,\r\n hasReturnActionText: PropTypes.bool,\r\n hasReturnActionBackground: PropTypes.bool,\r\n hasHeaderTitle: PropTypes.bool,\r\n};\r\n\r\n// DEFAULT PROPS\r\nTopNav.defaultProps = {\r\n // MAIN PROPS\r\n backgroundColor: 'white--sbg',\r\n icon: null,\r\n iconTo: '#',\r\n headerTitle: null,\r\n headerTitleColor: 'blue--clr',\r\n returnIconColor: 'mid-grey--clr',\r\n menuItems: null,\r\n menuItemTextColor: 'dark-blue--clr',\r\n menuToggleIcon: null,\r\n activeMenuItemBackgroundColor: 'lighter-blue--sbg info--clr',\r\n routePath: '',\r\n\r\n // ACTION PROPS\r\n primaryButtonActionText: '',\r\n\r\n // USER PROPS\r\n userInitials: '',\r\n userAvatarBackgroundColor: 'primary--sbg',\r\n\r\n // FUNCTION PROPS\r\n primaryIconActionOnClick: null,\r\n secondaryIconActionOnClick: null,\r\n optionalIconActionOnClick: null,\r\n onClickAvatar: null,\r\n onClick: null,\r\n\r\n // BOOLEAN PROPS\r\n hasNavigation: false,\r\n hasReturnAction: false,\r\n hasReturnActionText: false,\r\n hasReturnActionBackground: false,\r\n hasHeaderTitle: false,\r\n};\r\n\r\nexport default TopNav;","export default __webpack_public_path__ + \"static/media/icon.c912925c.svg\";","/* eslint-disable camelcase */\r\n/* eslint-disable default-param-last */\r\n/* eslint-disable no-debugger */\r\nimport { persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport jwt_decode from 'jwt-decode';\r\n\r\nexport const actionTypes = {\r\n Login: '[Login] Action',\r\n Logout: '[Logout] Action',\r\n RefreshToken: '[Refresh Token] Action',\r\n UpdateJwtToken: '[Update Token] Action'\r\n};\r\n\r\nconst initialAuthState = {\r\n user: {\r\n firstName: '',\r\n lastName: '',\r\n username: '',\r\n },\r\n authToken: '',\r\n refreshToken: '',\r\n accessLevel: '',\r\n tempAccessLevel: 0,\r\n};\r\n\r\nexport const reducer = persistReducer(\r\n { storage, key: 'auth', whitelist: ['user', 'authToken', 'refreshToken', 'accessLevel', 'tempAccessLevel'] },\r\n (state = initialAuthState, action) => {\r\n switch (action.type) {\r\n case actionTypes.Login: {\r\n const { token } = action.payload;\r\n const userDetail = action.payload;\r\n const decodedToken = jwt_decode(token);\r\n delete userDetail.token;\r\n\r\n return {\r\n user: userDetail,\r\n authToken: token,\r\n accessLevel: parseInt(decodedToken.AccessLevel, 10),\r\n refreshToken: userDetail.refreshToken,\r\n tempAccessLevel: parseInt(decodedToken.tempAccessLevel, 10)\r\n };\r\n }\r\n\r\n case actionTypes.RefreshToken: {\r\n const { token } = action.payload;\r\n const userDetail = action.payload;\r\n const decodedToken = jwt_decode(token);\r\n delete userDetail.token;\r\n\r\n return {\r\n user: userDetail,\r\n authToken: token,\r\n accessLevel: parseInt(decodedToken.AccessLevel, 10),\r\n refreshToken: userDetail.refreshToken,\r\n tempAccessLevel: parseInt(decodedToken.tempAccessLevel, 10)\r\n };\r\n }\r\n\r\n case actionTypes.UpdateJwtToken: {\r\n const decodedToken = jwt_decode(action.payload);\r\n\r\n return {\r\n ...state,\r\n authToken: action.payload,\r\n tempAccessLevel: parseInt(decodedToken.tempAccessLevel, 10)\r\n };\r\n }\r\n\r\n case actionTypes.Logout: {\r\n return initialAuthState;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n }\r\n);\r\n\r\nexport const actions = {\r\n login: (user) => ({ type: actionTypes.Login, payload: user }),\r\n logout: () => ({ type: actionTypes.Logout }),\r\n refreshToken: (user) => ({ type: actionTypes.RefreshToken, payload: user }),\r\n updateJwtToken: (token) => ({ type: actionTypes.UpdateJwtToken, payload: token })\r\n};","/* eslint-disable default-param-last */\r\n/* eslint-disable no-console */\r\n/* eslint-disable max-len */\r\nimport { persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\n\r\nexport const actionTypes = {\r\n SetProjectDetails: 'SET_PROJECT_DETAILS',\r\n ResetProjectDetails: 'RESET_PROJECT_DETAILS'\r\n};\r\n\r\nconst initialProjectDetails = { projectName: '', projectId: 0, isCompleted: false };\r\n\r\nexport const reducer = persistReducer(\r\n { storage, key: 'project-details', whitelist: ['projectName', 'projectId', 'isCompleted'] },\r\n (state = initialProjectDetails, action) => {\r\n switch (action.type) {\r\n case actionTypes.SetProjectDetails: {\r\n return {\r\n projectName: action.payload.projectName,\r\n projectId: action.payload.projectId,\r\n isCompleted: action.payload.isCompleted\r\n };\r\n }\r\n\r\n case actionTypes.ResetProjectDetails: {\r\n return initialProjectDetails;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n }\r\n);\r\n\r\nexport const actions = {\r\n setProjectDetails: (model) => ({ type: actionTypes.SetProjectDetails, payload: model }),\r\n resetProjectDetails: () => ({ type: actionTypes.ResetProjectDetails })\r\n};","/* eslint-disable max-len */\r\n/* eslint-disable react/jsx-props-no-multi-spaces */\r\n/* eslint-disable react/no-array-index-key */\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport { Route, useHistory } from 'react-router-dom';\r\n// ICONS\r\nimport {\r\n TbNotes,\r\n TbBuildingStore,\r\n TbTools,\r\n TbUsers,\r\n TbSettings,\r\n TbMailForward,\r\n TbMenu,\r\n TbX\r\n} from 'react-icons/tb';\r\n// CUSTOM COMPONENTS;\r\nimport DrawerNav from '../components/DrawerNav';\r\nimport NavBlock from '../components/NavBlock';\r\nimport CustomBlock from '../components/CustomBlock';\r\nimport TopNav from '../components/TopNav';\r\n// ASSETS\r\nimport Icon from '../assets/img/icon.svg';\r\n// REDUX\r\nimport * as auth from '../redux/authRedux';\r\nimport * as projectDetail from '../redux/projectDetailRedux';\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\r\n\r\n const history = useHistory();\r\n const iconSize = 24;\r\n const iconSizeLarge = 30;\r\n const iconColor = 'primary--clr';\r\n const mainPage = '/projects';\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen(!isDrawerOpen);\r\n };\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n setTimeout(() => {\r\n setIsDrawerOpen(false);\r\n }, 250);\r\n };\r\n\r\n const topNavMenuItems = [\r\n {\r\n id: 1,\r\n name: 'Projects',\r\n to: '/projects',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 0,\r\n iconLeft: ,\r\n },\r\n {\r\n id: 2,\r\n name: 'Clients',\r\n to: '/management/clients',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n iconLeft: ,\r\n },\r\n {\r\n id: 3,\r\n name: 'Contractors',\r\n to: '/management/contractors',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n iconLeft: ,\r\n },\r\n {\r\n id: 4,\r\n name: 'Users',\r\n to: '/management/users',\r\n action: null,\r\n submenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n iconLeft: ,\r\n },\r\n {\r\n id: 5,\r\n name: 'Settings',\r\n to: '',\r\n action: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n iconLeft: ,\r\n submenuItems: [\r\n {\r\n id: 1,\r\n name: 'Notification Emails',\r\n to: '/management/notification-emails',\r\n iconLeft: \r\n },\r\n ]\r\n },\r\n ];\r\n\r\n return (\r\n (\r\n <>\r\n x.isVisible)}\r\n menuToggleIcon={\r\n isDrawerOpen\r\n ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n secondaryIconActionOnClick={() => {\r\n rest.resetProjectDetails();\r\n rest.logout();\r\n }}\r\n onClickAvatar={() => {\r\n history.push('/my-profile');\r\n }}\r\n onClick={() => {\r\n toggleDrawer();\r\n }}\r\n />\r\n\r\n {\r\n setIsDrawerOpen(false);\r\n }}\r\n onClickLogout={() => {\r\n rest.resetProjectDetails();\r\n rest.logout();\r\n }}\r\n navigationItems={\r\n topNavMenuItems.map((item, index) => (\r\n {\r\n navigateToPath(item.subMenuItems == null ? item.to : item.subMenuItems.to);\r\n }}\r\n />\r\n ))\r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, { ...auth.actions, ...projectDetail.actions })(PrivateRoute);","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst DotIndicator = (props) => {\r\n const { hasDotIndicator, dotIndicatorColor } = props;\r\n return (\r\n <>\r\n {hasDotIndicator && }\r\n \r\n );\r\n};\r\n\r\nDotIndicator.propTypes = {\r\n // MAIN PROPS\r\n hasDotIndicator: PropTypes.bool,\r\n dotIndicatorColor: PropTypes.string,\r\n};\r\n\r\nDotIndicator.defaultProps = {\r\n // MAIN PROPS\r\n hasDotIndicator: false,\r\n dotIndicatorColor: 'danger--sbg',\r\n};\r\n\r\nexport default DotIndicator;","// DEPENDECIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport DotIndicator from './DotIndicator';\r\n\r\nconst TextHeader = (props) => {\r\n const {\r\n title,\r\n size,\r\n className,\r\n subtitle,\r\n subtitleSize,\r\n subtitleClassName,\r\n isCentered,\r\n iconLeft,\r\n iconLeftClassName,\r\n } = props;\r\n\r\n const textSize = {\r\n xl: '--xl',\r\n lg: '--lg',\r\n md: '--md',\r\n mdlg: '--mdlg',\r\n sm: '--sm',\r\n xs: '--xs',\r\n };\r\n\r\n return (\r\n \r\n

\r\n {\r\n iconLeft && {iconLeft}\r\n }\r\n {title}\r\n \r\n

\r\n {subtitle &&

{subtitle}

}\r\n
\r\n );\r\n};\r\n\r\nTextHeader.propTypes = {\r\n // TITLE PROPS\r\n title: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n size: PropTypes.string,\r\n\r\n // SUBTITLE PROPS\r\n subtitle: PropTypes.string,\r\n subtitleClassName: PropTypes.string,\r\n subtitleSize: PropTypes.string,\r\n\r\n // ICON PROPS\r\n iconLeft: PropTypes.element,\r\n iconLeftClassName: PropTypes.string,\r\n\r\n // BOOLEAN PROPS\r\n isCentered: PropTypes.bool,\r\n};\r\n\r\nTextHeader.defaultProps = {\r\n // TITLE PROPS\r\n className: '',\r\n size: '',\r\n\r\n // SUBTITLE PROPS\r\n subtitle: '',\r\n subtitleClassName: '',\r\n subtitleSize: '',\r\n\r\n // ICON PROPS\r\n iconLeft: null,\r\n iconLeftClassName: '',\r\n\r\n // BOOLEAN PROPS\r\n isCentered: false,\r\n};\r\n\r\nexport default TextHeader;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// COMPONENTS\r\nimport { Link } from 'react-router-dom';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport TextHeader from './TextHeader';\r\nimport Button from './Button';\r\n\r\nconst ContentHeader = (props) => {\r\n const {\r\n containerClassName,\r\n title,\r\n subtitle,\r\n headerSize,\r\n primaryButtonText,\r\n primaryButtonBackgroundColor,\r\n primaryButtonIconLeft,\r\n secondaryButtonText,\r\n secondaryButtonBackgroundColor,\r\n secondaryButtonIconLeft,\r\n buttonSize,\r\n headerIcon,\r\n headerIconContainerClass,\r\n primaryButtonTo,\r\n secondaryButtonTo,\r\n headerIconTo,\r\n primaryButtonOnClick,\r\n secondaryButtonOnClick,\r\n headerIconOnClick,\r\n isPrimaryLinkTargetBlank,\r\n isSecondaryLinkTargetBlank,\r\n isButtonTextUppercase,\r\n isPrimaryButtonLoading,\r\n isPrimaryButtonDisabled,\r\n isSecondaryButtonLoading,\r\n isSecondaryButtonDisabled,\r\n isTitleCentered\r\n } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n {\r\n secondaryButtonText !== ''\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n primaryButtonText !== ''\r\n && (\r\n \r\n )\r\n }\r\n \r\n {\r\n headerIcon\r\n && (\r\n \r\n {\r\n headerIconTo\r\n ? (\r\n { })}\r\n >\r\n {headerIcon}\r\n \r\n )\r\n : (\r\n { })}\r\n >\r\n {headerIcon}\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nContentHeader.propTypes = {\r\n // CONTAINER PROPS\r\n containerClassName: PropTypes.string,\r\n\r\n // HEADER PROPS\r\n title: PropTypes.string,\r\n subtitle: PropTypes.string,\r\n headerSize: PropTypes.string,\r\n\r\n // BUTTON PROPS - PRIMARY\r\n primaryButtonText: PropTypes.string,\r\n primaryButtonBackgroundColor: PropTypes.string,\r\n primaryButtonIconLeft: PropTypes.object,\r\n\r\n // BUTTON PROPS - SECONDARY\r\n secondaryButtonText: PropTypes.string,\r\n secondaryButtonBackgroundColor: PropTypes.string,\r\n secondaryButtonIconLeft: PropTypes.object,\r\n\r\n // BUTTON PROPS - SHARED\r\n buttonSize: PropTypes.string,\r\n\r\n // HEADER ICON\r\n headerIcon: PropTypes.any,\r\n headerIconContainerClass: PropTypes.string,\r\n\r\n // NAVIGATION PROPS\r\n primaryButtonTo: PropTypes.string,\r\n secondaryButtonTo: PropTypes.string,\r\n headerIconTo: PropTypes.string,\r\n\r\n // FUNCTION PROPS\r\n primaryButtonOnClick: PropTypes.func,\r\n secondaryButtonOnClick: PropTypes.func,\r\n headerIconOnClick: PropTypes.func,\r\n\r\n // BOOLEAN PROPS\r\n isPrimaryLinkTargetBlank: PropTypes.bool,\r\n isSecondaryLinkTargetBlank: PropTypes.bool,\r\n isButtonTextUppercase: PropTypes.bool,\r\n isPrimaryButtonLoading: PropTypes.bool,\r\n isPrimaryButtonDisabled: PropTypes.bool,\r\n isSecondaryButtonLoading: PropTypes.bool,\r\n isSecondaryButtonDisabled: PropTypes.bool,\r\n isTitleCentered: PropTypes.bool,\r\n};\r\n\r\nContentHeader.defaultProps = {\r\n // CONTAINER PROPS\r\n containerClassName: '',\r\n\r\n // HEADER PROPS\r\n title: '',\r\n subtitle: '',\r\n headerSize: '',\r\n\r\n // BUTTON PROPS - PRIMARY\r\n primaryButtonText: '',\r\n primaryButtonBackgroundColor: 'primary--bg',\r\n primaryButtonIconLeft: null,\r\n\r\n // BUTTON PROPS - SECONDARY\r\n secondaryButtonText: '',\r\n secondaryButtonBackgroundColor: 'secondary--bg',\r\n secondaryButtonIconLeft: null,\r\n\r\n // BUTTON PROPS - SHARED\r\n buttonSize: '',\r\n\r\n // HEADER ICON\r\n headerIcon: null,\r\n\r\n // NAVIGATION PROPS\r\n primaryButtonTo: '',\r\n secondaryButtonTo: '',\r\n headerIconTo: '',\r\n headerIconContainerClass: '',\r\n\r\n // FUNCTION PROPS\r\n primaryButtonOnClick: () => { },\r\n secondaryButtonOnClick: () => { },\r\n headerIconOnClick: () => { },\r\n\r\n // BOOLEAN PROPS\r\n isPrimaryLinkTargetBlank: false,\r\n isSecondaryLinkTargetBlank: false,\r\n isButtonTextUppercase: false,\r\n isPrimaryButtonLoading: false,\r\n isPrimaryButtonDisabled: false,\r\n isSecondaryButtonLoading: false,\r\n isSecondaryButtonDisabled: false,\r\n isTitleCentered: false,\r\n};\r\n\r\nexport default ContentHeader;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// COMPONENTS\r\nimport Modal from 'react-bootstrap/Modal';\r\n// ICONS\r\nimport { IoClose } from 'react-icons/io5';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport ContentHeader from './ContentHeader';\r\nimport Button from './Button';\r\n// HELPERS\r\n\r\nconst ModalBlock = (props) => {\r\n const {\r\n closeIconColor,\r\n contentHeader,\r\n subtitle,\r\n primaryButtonText,\r\n contentDescription,\r\n children,\r\n buttonActionsContainerClassName,\r\n primaryModalActionType,\r\n primaryModalActionText,\r\n primaryModalActionColor,\r\n secondaryModalActionType,\r\n secondaryModalActionText,\r\n secondaryModalActionColor,\r\n onHide,\r\n closeActionOnClick,\r\n primaryModalActionOnClick,\r\n secondaryModalActionOnClick,\r\n isVisible,\r\n hasCloseAction,\r\n isTitleCentered,\r\n isPrimaryActionHidden,\r\n isSecondaryActionHidden,\r\n isPrimaryModalActionIsLoading\r\n } = props;\r\n\r\n return (\r\n \r\n {\r\n hasCloseAction\r\n && (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n \r\n \r\n\r\n {\r\n contentDescription\r\n && (\r\n \r\n

\r\n {contentDescription}\r\n

\r\n
\r\n )\r\n }\r\n\r\n {children}\r\n\r\n {\r\n primaryModalActionText\r\n && (\r\n \r\n {\r\n !isPrimaryActionHidden\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n !isSecondaryActionHidden\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n
\r\n \r\n );\r\n};\r\n\r\nModalBlock.propTypes = {\r\n // HEADER PROPS\r\n contentHeader: PropTypes.string,\r\n subtitle: PropTypes.string,\r\n primaryButtonText: PropTypes.string,\r\n\r\n // CLOSE ICON PROPS\r\n closeIconColor: PropTypes.string,\r\n\r\n // CONTENT PROPS\r\n contentDescription: PropTypes.any,\r\n children: PropTypes.any,\r\n\r\n // ACTION PROPS\r\n primaryModalActionText: PropTypes.string,\r\n buttonActionsContainerClassName: PropTypes.string,\r\n primaryModalActionType: PropTypes.string,\r\n primaryModalActionColor: PropTypes.string,\r\n secondaryModalActionType: PropTypes.string,\r\n secondaryModalActionText: PropTypes.string,\r\n secondaryModalActionColor: PropTypes.string,\r\n\r\n // FUNCTION PROPS\r\n onHide: PropTypes.func,\r\n closeActionOnClick: PropTypes.func,\r\n primaryModalActionOnClick: PropTypes.func,\r\n secondaryModalActionOnClick: PropTypes.func,\r\n\r\n // BOOLEAN PROPS\r\n isVisible: PropTypes.bool,\r\n hasCloseAction: PropTypes.bool,\r\n isTitleCentered: PropTypes.bool,\r\n isPrimaryActionHidden: PropTypes.bool,\r\n isSecondaryActionHidden: PropTypes.bool,\r\n isPrimaryModalActionIsLoading: PropTypes.bool,\r\n};\r\n\r\nModalBlock.defaultProps = {\r\n // HEADER PROPS\r\n contentHeader: '',\r\n subtitle: '',\r\n primaryButtonText: '',\r\n\r\n // CLOSE ICON PROPS\r\n closeIconColor: '',\r\n\r\n // CONTENT PROPS\r\n contentDescription: null,\r\n children: null,\r\n\r\n // ACTION PROPS\r\n buttonActionsContainerClassName: '',\r\n primaryModalActionType: '',\r\n primaryModalActionText: '',\r\n primaryModalActionColor: 'primary--bg',\r\n secondaryModalActionType: '',\r\n secondaryModalActionText: 'Cancel',\r\n secondaryModalActionColor: 'danger--bg',\r\n\r\n // FUNCTION PROPS\r\n onHide: () => { },\r\n closeActionOnClick: () => { },\r\n primaryModalActionOnClick: () => { },\r\n secondaryModalActionOnClick: () => { },\r\n\r\n // BOOLEAN PROPS\r\n isVisible: false,\r\n hasCloseAction: false,\r\n isTitleCentered: false,\r\n isPrimaryActionHidden: false,\r\n isSecondaryActionHidden: false,\r\n isPrimaryModalActionIsLoading: false,\r\n};\r\n\r\nexport default ModalBlock;","/* eslint-disable default-param-last */\r\n/* eslint-disable no-console */\r\nexport const actionTypes = {\r\n ShowConfirmModal: 'SHOW_CONFIRM_MODAL',\r\n HideConfirmModal: 'HIDE_CONFIRM_MODAL',\r\n SetProcessing: 'SET_PROCESSING'\r\n};\r\n\r\nconst initialConfirmModalState = {\r\n isVisible: false,\r\n title: '',\r\n text: '',\r\n btnAction: () => console.log('Action not defined'),\r\n closeBtnAction: null,\r\n rightBtnText: '',\r\n isProcessing: false\r\n};\r\n\r\nexport const reducer = (state = initialConfirmModalState, action) => {\r\n switch (action.type) {\r\n case actionTypes.ShowConfirmModal: {\r\n return {\r\n isVisible: true,\r\n title: action.payload.title,\r\n text: action.payload.text,\r\n rightBtnText: action.payload.rightBtnText,\r\n btnAction: action.payload.btnAction,\r\n closeBtnAction: action.payload.closeBtnAction,\r\n isProcessing: false\r\n };\r\n }\r\n\r\n case actionTypes.SetProcessing: {\r\n return {\r\n ...state,\r\n isProcessing: true\r\n };\r\n }\r\n\r\n case actionTypes.HideConfirmModal: {\r\n return initialConfirmModalState;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const actions = {\r\n showConfirmModal: (model) => ({ type: actionTypes.ShowConfirmModal, payload: model }),\r\n hideConfirmModal: () => ({ type: actionTypes.HideConfirmModal }),\r\n setProcessing: () => ({ type: actionTypes.SetProcessing })\r\n};","/* eslint-disable import/extensions */\r\n/* eslint-disable no-shadow */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport Button from './Button';\r\nimport ModalBlock from './ModalBlock';\r\n// HELPERS\r\nimport * as confirmModal from '../redux/confirmModalRedux.js';\r\n\r\nconst ConfirmModal = (props) => {\r\n const {\r\n hideConfirmModal,\r\n confirmModal,\r\n setProcessing\r\n } = props;\r\n\r\n const handleCloseBtn = () => {\r\n hideConfirmModal();\r\n if (confirmModal.closeBtnAction) { confirmModal.closeBtnAction(); }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {\r\n setProcessing();\r\n confirmModal.btnAction();\r\n }}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ confirmModal: state.confirmModal });\r\n\r\nexport default connect(mapStateFromProps, confirmModal.actions)(ConfirmModal);","/* eslint-disable default-param-last */\r\nexport const actionTypes = {\r\n ShowAlert: 'SHOW_ALERT',\r\n HideAlert: 'HIDE_ALERT',\r\n};\r\n\r\nconst initialAlertState = {\r\n visible: false,\r\n text: '',\r\n state: 'success',\r\n};\r\n\r\nexport const reducer = (state = initialAlertState, action) => {\r\n switch (action.type) {\r\n case actionTypes.ShowAlert: {\r\n return {\r\n visible: true,\r\n text: action.payload.text,\r\n state: action.payload.state,\r\n };\r\n }\r\n\r\n case actionTypes.HideAlert: {\r\n return {\r\n ...state,\r\n visible: false\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const actions = {\r\n showAlert: (model) => ({ type: actionTypes.ShowAlert, payload: model }),\r\n hideAlert: () => ({ type: actionTypes.HideAlert }),\r\n};","/* eslint-disable import/extensions */\r\n/* eslint-disable no-shadow */\r\n// DEPENDENCIES\r\nimport React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\n// ICONS\r\nimport { HiOutlineEmojiSad, HiOutlineLightBulb } from 'react-icons/hi';\r\nimport { FiThumbsUp } from 'react-icons/fi';\r\nimport { BiShocked } from 'react-icons/bi';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n// SERVICES AND HELPERS\r\nimport * as alertToast from '../redux/alertToastRedux';\r\n\r\nconst AlertToast = (props) => {\r\n const {\r\n hideAlert,\r\n alertToast\r\n } = props;\r\n\r\n useEffect(() => {\r\n if (alertToast.visible) {\r\n setTimeout(() => {\r\n hideAlert();\r\n }, 3500);\r\n }\r\n }, [alertToast.visible, hideAlert]);\r\n\r\n const iconBackgroundColors = {\r\n success: 'lighter-green--bg',\r\n error: 'lighter-red--bg',\r\n warning: 'lighter-yellow--bg',\r\n info: 'lighter-blue--bg',\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {alertToast.state === 'success' && }\r\n {alertToast.state === 'error' && }\r\n {alertToast.state === 'warning' && }\r\n {alertToast.state === 'info' && }\r\n \r\n \r\n\r\n \r\n

\r\n {alertToast.text}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ alertToast: state.alertToast });\r\n\r\nexport default connect(mapStateFromProps, alertToast.actions)(AlertToast);","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FormBlock = (props) => {\r\n const {\r\n className,\r\n style,\r\n children,\r\n onSubmit\r\n } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nFormBlock.propTypes = {\r\n // MAIN PROPS\r\n className: PropTypes.string,\r\n children: PropTypes.any,\r\n\r\n // FORM ACTION PROPS\r\n onSubmit: PropTypes.func,\r\n};\r\n\r\nFormBlock.defaultProps = {\r\n // MAIN PROPS\r\n className: '',\r\n children: null,\r\n\r\n // FORM ACTION PROPS\r\n onSubmit: () => { },\r\n};\r\n\r\nexport default FormBlock;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport 'flatpickr/dist/themes/material_green.css';\r\nimport { useHistory } from 'react-router-dom';\r\n// COMPONENTS\r\nimport InputMask from 'react-input-mask';\r\nimport Flatpickr from 'react-flatpickr';\r\n// ICONS\r\nimport { AiOutlineLoading } from 'react-icons/ai';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst InputBlock = (props) => {\r\n const {\r\n id,\r\n containerClassName,\r\n label,\r\n inputLabel,\r\n inputState,\r\n errorMessage,\r\n successMessage,\r\n warningMessage,\r\n type,\r\n className,\r\n labelColor,\r\n backgroundColor,\r\n placeholder,\r\n mask,\r\n to,\r\n iconLeft,\r\n iconRight,\r\n inputRightButtonText,\r\n inputRightButtonBackgroundColor,\r\n iconLeftOnClick,\r\n iconRightOnClick,\r\n inputRightButtonOnClick,\r\n isRequired,\r\n isLoading,\r\n isLabelLoading,\r\n isAutoFocus,\r\n isDisabled,\r\n hasBorder,\r\n } = props;\r\n const errorMessageSuffix = 'is required';\r\n const inputStates = {\r\n error: 'error',\r\n warning: 'warning',\r\n success: 'success',\r\n disabled: 'disabled'\r\n };\r\n\r\n const marginTop = () => {\r\n if (inputLabel) {\r\n return 25;\r\n } if (label) {\r\n return 35;\r\n }\r\n return 10;\r\n };\r\n\r\n const history = useHistory();\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n return (\r\n \r\n {\r\n inputLabel !== ''\r\n && (\r\n \r\n {inputLabel}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n {\r\n label !== ''\r\n && (\r\n \r\n {label}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n {\r\n iconLeft\r\n && (\r\n \r\n \r\n {iconLeft}\r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n type === 'date'\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n )\r\n }\r\n\r\n {\r\n (isLoading || iconRight || inputRightButtonText)\r\n && (\r\n \r\n {\r\n isLoading\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n {iconRight}\r\n \r\n )\r\n }\r\n {\r\n inputRightButtonText\r\n && (\r\n navigateToPath(to) : inputRightButtonOnClick}\r\n className={`input-right-button ${inputRightButtonBackgroundColor}`}\r\n >\r\n {inputRightButtonText}\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n\r\n {\r\n inputState === 'error'\r\n && (\r\n \r\n {errorMessage || (inputLabel || label ? (inputLabel || `${label} ${errorMessageSuffix}`) : 'Error message undefined')}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'warning'\r\n && (\r\n \r\n {warningMessage}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'success'\r\n && (\r\n \r\n {successMessage}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nInputBlock.propTypes = {\r\n // CONTAINER PROPS\r\n containerClassName: PropTypes.string,\r\n id: PropTypes.string,\r\n\r\n // LABEL PROPS\r\n label: PropTypes.string,\r\n inputLabel: PropTypes.string,\r\n\r\n // STATE PROPS\r\n inputState: PropTypes.string,\r\n errorMessage: PropTypes.string,\r\n successMessage: PropTypes.string,\r\n warningMessage: PropTypes.string,\r\n\r\n // INPUT PROPS\r\n type: PropTypes.string,\r\n className: PropTypes.string,\r\n labelColor: PropTypes.string,\r\n backgroundColor: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n mask: PropTypes.string,\r\n\r\n // NAVIGATION PROPS\r\n to: PropTypes.string,\r\n\r\n // ITEMS AND ICON PROPS\r\n iconLeft: PropTypes.any,\r\n iconRight: PropTypes.any,\r\n inputRightButtonText: PropTypes.string,\r\n inputRightButtonBackgroundColor: PropTypes.string,\r\n\r\n // FUNCTION PROPS\r\n iconLeftOnClick: PropTypes.func,\r\n iconRightOnClick: PropTypes.func,\r\n inputRightButtonOnClick: PropTypes.func,\r\n\r\n // BOOLEAN PROPS\r\n isRequired: PropTypes.bool,\r\n isLoading: PropTypes.bool,\r\n isLabelLoading: PropTypes.bool,\r\n isAutoFocus: PropTypes.bool,\r\n isDisabled: PropTypes.bool,\r\n hasBorder: PropTypes.bool,\r\n};\r\n\r\nInputBlock.defaultProps = {\r\n // CONTAINER PROPS\r\n containerClassName: '',\r\n id: '',\r\n\r\n // LABEL PROPS\r\n label: '',\r\n inputLabel: '',\r\n\r\n // STATE PROPS\r\n inputState: '',\r\n errorMessage: '',\r\n successMessage: '',\r\n warningMessage: '',\r\n\r\n // INPUT PROPS\r\n type: 'text',\r\n className: '',\r\n labelColor: 'dark--clr',\r\n backgroundColor: 'light--sbg',\r\n placeholder: '',\r\n mask: '',\r\n\r\n // NAVIGATION PROPS\r\n to: '',\r\n\r\n // ITEMS AND ICON PROPS\r\n iconLeft: null,\r\n iconRight: null,\r\n inputRightButtonText: '',\r\n inputRightButtonBackgroundColor: '',\r\n\r\n // FUNCTION PROPS\r\n iconLeftOnClick: () => { },\r\n iconRightOnClick: () => { },\r\n inputRightButtonOnClick: () => { },\r\n\r\n // BOOLEAN PROPS\r\n isRequired: false,\r\n isLoading: false,\r\n isLabelLoading: false,\r\n isAutoFocus: false,\r\n isDisabled: false,\r\n hasBorder: false,\r\n};\r\n\r\nexport default InputBlock;","// DEPENDENCIES\r\nimport React from 'react';\r\n// COMPONENTS\r\n// ICONS\r\nimport { HiOutlineMail } from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport InputBlock from '../../../../components/InputBlock';\r\nimport Button from '../../../../components/Button';\r\n\r\nconst ForgotPasswordBlock = (props) => {\r\n const { returnActionOnClick } = props;\r\n const iconSize = 22;\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n Back to Login\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ForgotPasswordBlock;","export default __webpack_public_path__ + \"static/media/logo.a4db9748.svg\";","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n email: Yup.string().email('Please enter a valid email').required('Email is required'),\r\n password: Yup.string().required('Password is required'),\r\n});","const constants = {\r\n API_URL: process.env.REACT_APP_API_URL,\r\n REQUIRE_INTERCEPTORS: {\r\n requestHandlerEnabled: true,\r\n responseHandlerEnabled: true\r\n },\r\n MUI_X_LICENSE_KEY: '2668dcfc50334dd626d321103a195f56Tz01NDAwNCxFPTE2OTk1NTY2ODI5MzMsUz1wcm8sTE09c3Vic2NyaXB0aW9uLEtWPTI=',\r\n DEFAULT_COLUMNS: [\r\n 'Work Order #',\r\n 'Equipment ID',\r\n 'Equipment Type',\r\n 'Inspection Type',\r\n 'Inspection Description',\r\n 'Initial Inspection ',\r\n // 'Setback/Delay ',\r\n 'NDE Required',\r\n 'NDE Request Per Inspection Finding',\r\n 'NDE Request Complete',\r\n 'Eddy Current/ IRIS Examination',\r\n 'UT Examination',\r\n 'PT Examination',\r\n 'MT Examination',\r\n 'Advanced Non-Destructive Examination',\r\n // 'Repairs Needed/IWR Number',\r\n // 'Repairs Completed',\r\n 'Final Inspection Review Complete',\r\n 'Closure Form Signed',\r\n 'Inspection Report Uploaded to Inspection Program',\r\n 'General Comments',\r\n ],\r\n EXCEL_FILE_TYPES: [\r\n 'application/vnd.ms-excel',\r\n 'application/msexcel',\r\n 'application/x-msexcel',\r\n 'application/x-ms-excel',\r\n 'application/x-excel',\r\n 'application/x-dos_ms_excel',\r\n 'application/xls',\r\n 'application/x-xls',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n ],\r\n CELL_TYPES: {\r\n primary: 0,\r\n secondary: 1,\r\n tertiary: 2,\r\n custom: 3\r\n }\r\n};\r\n\r\nexport default constants;","/* eslint-disable camelcase */\r\nimport moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport constants from '../constants/constants';\r\n\r\n/* eslint-disable no-restricted-syntax */\r\nconst getInputClasses = (formik, fieldname) => {\r\n if (formik.touched[fieldname] && formik.errors[fieldname]) {\r\n return 'error';\r\n }\r\n if (formik.touched[fieldname] && !formik.errors[fieldname]) {\r\n return '';\r\n }\r\n\r\n return '';\r\n};\r\n\r\nconst convertJsonToFormData = (json) => {\r\n const form_data = new FormData();\r\n for (const key in json) {\r\n if (Array.isArray(json[key])) { json[key].forEach((item) => form_data.append(key, item)); } else { form_data.append(key, (json[key] === null) ? '' : json[key]); }\r\n }\r\n\r\n return form_data;\r\n};\r\n\r\nconst setToOptionModel = (name, value) => ({ label: name, value });\r\n\r\nconst reOrderDnd = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n return result.map((x, i) => ({ ...x, sortOrder: i }));\r\n};\r\n\r\nconst mapContentSectionName = (type) => {\r\n switch (type) {\r\n case constants.CONTENT_SECTION.ContentSectionTypeDefault:\r\n return 'Content Section (Default)';\r\n case constants.CONTENT_SECTION.ContentSectionTypeReversed:\r\n return 'Content Section (Reversed)';\r\n case constants.CONTENT_SECTION.ContentSectionTypeFullWidth:\r\n return 'Content Section Full Width';\r\n case constants.CONTENT_SECTION.ContentSectionTypeFullWidthPadded:\r\n return 'Content Section Full Width (Padded)';\r\n case constants.CONTENT_SECTION.ContentSectionTypeTextOnly:\r\n return 'Content Section (Text Only)';\r\n case constants.CONTENT_SECTION.ContentSectionTypeCard:\r\n return 'Content Card';\r\n case constants.CONTENT_SECTION.ContentSectionTypeBanner:\r\n return 'Content Banner';\r\n case constants.CONTENT_SECTION.ContentSectionDynamicBanner:\r\n return 'Dynamic Banner';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst copyToClipBoard = (copyText) => {\r\n const aux = document.createElement('input');\r\n aux.setAttribute('value', copyText);\r\n document.body.appendChild(aux);\r\n aux.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(aux);\r\n};\r\n\r\nconst countdownMessage = (expiryDate) => {\r\n if (!expiryDate) {\r\n return '';\r\n }\r\n\r\n const date = moment().format('MM/DD/YYYY hh:mm:ss a');\r\n const diffr = moment.duration(moment(new Date(expiryDate)).diff(new Date(date)));\r\n const hours = parseInt(diffr.asHours(), 10);\r\n const minutes = parseInt(diffr.minutes(), 10);\r\n const seconds = parseInt(diffr.seconds(), 10);\r\n const currentDuration = Math.floor((hours * 60 * 60 + minutes * 60 + seconds) / 3600);\r\n\r\n if (currentDuration > 24) {\r\n return `${Math.ceil(currentDuration / 24)} Days Left`;\r\n }\r\n if (currentDuration === 24) {\r\n return `${Math.floor(currentDuration / 24)} Day Left`;\r\n }\r\n if (currentDuration > 12 && currentDuration !== 24) {\r\n return 'Expires Soon';\r\n }\r\n if ((currentDuration < 12 && currentDuration > 0) || currentDuration === 0) {\r\n return 'Expires Today';\r\n }\r\n if (currentDuration === -1 || currentDuration < -1) {\r\n return '';\r\n }\r\n\r\n return 'Limited-Time Only';\r\n};\r\n\r\nconst dateFilterListRenderer = (v) => {\r\n if (v[0] && v[1]) {\r\n return `Start Date: ${v[0]} to End Date: ${v[1]}`;\r\n }\r\n if (v[0]) {\r\n return `Start Date: ${v[0]}`;\r\n }\r\n if (v[1]) {\r\n return `End Date: ${v[1]}`;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst dateFilterLogic = (date, filters) => {\r\n const check = new Date(date);\r\n let from = new Date(filters[0]);\r\n let to = new Date(filters[1]);\r\n\r\n from.setDate(from.getDate() + 1);\r\n to.setDate(to.getDate() + 1);\r\n from = new Date(from).setHours(0, 0, 0, 0);\r\n to = new Date(to).setHours(23, 59, 59, 59);\r\n\r\n if (filters[0] && filters[1] && check >= to && check <= from) {\r\n return true;\r\n }\r\n if (filters[0] && check >= to) {\r\n return true;\r\n }\r\n if (filters[1] && check <= from) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst findChangedObjects = (previousValues, updatedValues) => {\r\n const changedObjects = [];\r\n\r\n updatedValues.forEach((updatedObj) => {\r\n const matchingObj = _.find(previousValues, { id: updatedObj.id });\r\n\r\n if (!matchingObj || !_.isEqual(updatedObj, matchingObj)) {\r\n changedObjects.push(updatedObj);\r\n }\r\n });\r\n\r\n return changedObjects;\r\n};\r\n\r\nexport {\r\n getInputClasses,\r\n convertJsonToFormData,\r\n setToOptionModel,\r\n reOrderDnd,\r\n mapContentSectionName,\r\n copyToClipBoard,\r\n countdownMessage,\r\n dateFilterListRenderer,\r\n dateFilterLogic,\r\n findChangedObjects\r\n};","/* eslint-disable import/prefer-default-export */\r\n/* eslint-disable no-debugger */\r\nimport { combineReducers } from 'redux';\r\nimport * as auth from './authRedux';\r\nimport * as alertToast from './alertToastRedux';\r\nimport * as confirmModal from './confirmModalRedux';\r\nimport * as projectDetail from './projectDetailRedux';\r\n\r\nconst appReducer = combineReducers({\r\n auth: auth.reducer,\r\n alertToast: alertToast.reducer,\r\n confirmModal: confirmModal.reducer,\r\n projectDetail: projectDetail.reducer\r\n});\r\n\r\nexport const rootReducer = (state, action) => appReducer(state, action);","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport { reduxBatch } from '@manaflair/redux-batch';\r\nimport { persistStore } from 'redux-persist';\r\nimport { rootReducer } from './rootReducer';\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\nconst middleware = [\r\n ...getDefaultMiddleware({\r\n immutableCheck: false,\r\n serializableCheck: false,\r\n thunk: true\r\n }),\r\n sagaMiddleware\r\n];\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer,\r\n middleware,\r\n devTools: process.env.NODE_ENV !== 'production',\r\n enhancers: [reduxBatch]\r\n});\r\n\r\n/**\r\n * @see https://github.com/rt2zz/redux-persist#persiststorestore-config-callback\r\n * @see https://github.com/rt2zz/redux-persist#persistor-object\r\n */\r\nexport const persistor = persistStore(store);\r\n\r\nexport default store;","/* eslint-disable consistent-return */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable import/no-cycle */\r\n/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable no-empty */\r\n/* eslint-disable no-console */\r\nimport store from '../../redux/store';\r\nimport axiosInstance from '../apiService';\r\nimport { actions } from '../../redux/authRedux';\r\n\r\nconst isEnabled = (config, property) => config.hasOwnProperty(property) && config[property];\r\n\r\n// handles requests going from app to server\r\nconst requestHandler = async (request) => {\r\n if (isEnabled(request, 'requestHandlerEnabled')) {\r\n const { auth: { authToken } } = store.getState();\r\n request.headers.Authorization = `Bearer ${authToken}`;\r\n }\r\n request.headers['Content-Type'] = !isEnabled(request, 'fileHandler') ? 'application/json' : 'multipart/form-data';\r\n request.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, DELETE';\r\n return request;\r\n};\r\n\r\n// handles responses coming from server to app\r\nconst successHandler = (response) => {\r\n if (isEnabled(response.config, 'responseHandlerEnabled')) {\r\n return response.data;\r\n }\r\n\r\n return response;\r\n};\r\n\r\nconst errorHandler = async (err) => {\r\n if (isEnabled(err.config, 'responseHandlerEnabled')) {\r\n }\r\n\r\n // trying again when 401 to refresh the token\r\n const originalConfig = { ...err.config };\r\n if (originalConfig.url !== '/Users/authenticate' && err.response) {\r\n // Access Token was Expired\r\n if (err.response.status === 401 && !originalConfig._retry) {\r\n originalConfig._retry = true;\r\n\r\n try {\r\n const { auth } = store.getState();\r\n const rs = await axiosInstance.post('/Users/refreshToken', { refreshToken: auth.refreshToken }, { headers: { Authorization: `Bearer ${auth.authToken}` } });\r\n\r\n if (rs.data.success) {\r\n store.dispatch(actions.refreshToken(rs.data.user));\r\n return axiosInstance(originalConfig);\r\n }\r\n\r\n throw Error(rs.data.message);\r\n } catch (_error) {\r\n await defaultErrorHandler(err);\r\n }\r\n }\r\n\r\n await defaultErrorHandler(err);\r\n } else {\r\n await defaultErrorHandler(err);\r\n }\r\n};\r\n\r\nconst defaultErrorHandler = async (response) => {\r\n let message = 'Oops! Something went wrong on the server. Please contact support.';\r\n\r\n await Promise.resolve(response.response).then((res) => {\r\n if (res) {\r\n message = res.data.Message;\r\n\r\n // if 401 redirect to login page\r\n if (res.status === 401) {\r\n localStorage.removeItem('persist:auth-token');\r\n window.location = `${window.origin}/login`;\r\n return;\r\n }\r\n // if not authorized redirect to dashboard\r\n if (res.status === 403) {\r\n window.location = `${window.origin}/`;\r\n }\r\n }\r\n });\r\n\r\n throw Error(message);\r\n};\r\n\r\nexport {\r\n requestHandler,\r\n successHandler,\r\n errorHandler\r\n};","/* eslint-disable import/no-cycle */\r\nimport axios from 'axios';\r\nimport {\r\n requestHandler, successHandler, errorHandler\r\n} from './interceptor/axiosInterceptor';\r\nimport constants from '../constants/constants';\r\n\r\nconst axiosInstance = axios.create({ baseURL: constants.API_URL });\r\n\r\naxiosInstance.interceptors.request.use(\r\n (request) => requestHandler(request)\r\n);\r\n\r\naxiosInstance.interceptors.response.use(\r\n (response) => successHandler(response),\r\n (err) => errorHandler(err)\r\n);\r\n\r\nexport default axiosInstance;","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Users/';\r\n\r\nconst login = async (user) => axiosInstance.post(`${ENDPOINTORIGIN}Authenticate`, user, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst register = async (user) => axiosInstance.post(`${ENDPOINTORIGIN}Register`, user, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getUserById = async (userId) => axiosInstance.get(`${ENDPOINTORIGIN}GetUser?id=${userId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getLoggedInUser = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetLoggedInUser`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getAllUsers = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAllUsers`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateUser = async (user) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateUser`, user, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst changeUserPassword = async (userId, password) => axiosInstance.put(`${ENDPOINTORIGIN}ChangeUserPassword?userId=${userId}&password=${password}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst changeSelfPassword = async (password) => axiosInstance.put(`${ENDPOINTORIGIN}ChangeSelfPassword?password=${password}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst logOutTempUser = async () => axiosInstance.get(`${ENDPOINTORIGIN}LogOutTempUser`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteUser = async (userId) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteUser?userId=${userId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n login,\r\n register,\r\n getUserById,\r\n getLoggedInUser,\r\n getAllUsers,\r\n updateUser,\r\n changeUserPassword,\r\n changeSelfPassword,\r\n logOutTempUser,\r\n deleteUser\r\n};","/* eslint-disable camelcase */\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\n// COMPONENTS\r\n// ICONS\r\nimport { FiLock, FiUser } from 'react-icons/fi';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from '../../../components/CustomBlock';\r\nimport FormBlock from '../../../components/FormBlock';\r\nimport ContentHeader from '../../../components/ContentHeader';\r\nimport InputBlock from '../../../components/InputBlock';\r\nimport Image from '../../../components/Image';\r\nimport Button from '../../../components/Button';\r\n// PARTIALS\r\nimport ForgotPasswordBlock from './_partials/ForgotPasswordBlock';\r\n// ASSETS\r\nimport Logo from '../../../assets/img/logo.svg';\r\n// SERVICES & HELPERS\r\nimport LoginValidator from '../../../helpers/validators/management/user/LoginValidator';\r\nimport * as helper from '../../../helpers/helper';\r\nimport * as userService from '../../../services/management/userService';\r\n// REDUX\r\nimport * as authRedux from '../../../redux/authRedux';\r\nimport * as alertToast from '../../../redux/alertToastRedux';\r\n\r\nconst initialModel = {\r\n email: '',\r\n password: ''\r\n};\r\n\r\nconst LoginPage = (props) => {\r\n const { showAlert, login, history } = props;\r\n\r\n const [passwordVisible, setPasswordVisible] = useState(false);\r\n const [forgotPasswordBlockVisible, setForgotPasswordBlockVisible] = useState(false);\r\n\r\n const iconSize = 22;\r\n\r\n const loginUser = (model, setSubmitting) => {\r\n userService.login(model).then((res) => {\r\n login(res);\r\n history.push('/projects');\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n // const validateAccess = () => {\r\n // if (auth.authToken !== '') {\r\n // const decodedToken = jwt_decode(auth.authToken);\r\n // if (decodedToken) {\r\n // history.push('/management/users');\r\n // }\r\n // }\r\n // };\r\n\r\n // useEffect(() => {\r\n // validateAccess();\r\n // }, []);\r\n\r\n const formik = useFormik({\r\n initialValues: initialModel,\r\n validationSchema: LoginValidator,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n\r\n loginUser(values, setSubmitting);\r\n },\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n !forgotPasswordBlockVisible\r\n ? (\r\n \r\n \r\n\r\n \r\n )}\r\n />\r\n\r\n \r\n )}\r\n inputRightButtonText={passwordVisible ? 'Hide' : 'Show'}\r\n inputRightButtonOnClick={() => setPasswordVisible(!passwordVisible)}\r\n {...formik.getFieldProps('password')}\r\n errorMessage={formik.errors.password}\r\n inputState={`${helper.getInputClasses(formik, 'password')}`}\r\n {...formik.getFieldProps('password')}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n )\r\n : (\r\n {\r\n setForgotPasswordBlockVisible(!forgotPasswordBlockVisible);\r\n }}\r\n />\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n

\r\n Copyright © 2022 Precision NDT LLC. All rights reserved.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, {\r\n ...authRedux.actions,\r\n ...alertToast.actions\r\n})(LoginPage);","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Section = (props) => {\r\n const {\r\n hasNoContainer,\r\n isFullWidth,\r\n className,\r\n containerStyle,\r\n rowClassName,\r\n rowStyle,\r\n children\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nSection.propTypes = {\r\n // MAIN PROPS\r\n className: PropTypes.string,\r\n rowClassName: PropTypes.string,\r\n containerStyle: PropTypes.object,\r\n rowStyle: PropTypes.object,\r\n children: PropTypes.any,\r\n\r\n // BOOLEAN PROPS\r\n hasNoContainer: PropTypes.bool,\r\n isFullWidth: PropTypes.bool,\r\n};\r\n\r\nSection.defaultProps = {\r\n // SIZE AND APPEARANCE PROPS\r\n className: '',\r\n rowClassName: '',\r\n containerStyle: {},\r\n rowStyle: {},\r\n children: null,\r\n\r\n // BOOLEAN PROPS\r\n hasNoContainer: false,\r\n isFullWidth: false,\r\n};\r\n\r\nexport default Section;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ContentBlock = (props) => {\r\n const { className, cols, children } = props;\r\n const columnSizes = {\r\n 12: 'col-lg-12 col-md-12',\r\n 11: 'col-lg-11 col-md-11',\r\n 10: 'col-lg-10 col-md-10',\r\n 9: 'col-lg-9 col-md-9',\r\n 8: 'col-lg-8 col-md-8',\r\n 7: 'col-lg-7 col-md-7',\r\n 6: 'col-lg-6 col-md-6',\r\n 5: 'col-lg-5 col-md-5',\r\n 4: 'col-lg-4 col-md-4',\r\n 3: 'col-lg-3 col-md-3',\r\n 2: 'col-lg-2 col-md-2',\r\n 1: 'col-lg-1 col-md-1',\r\n };\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nContentBlock.propTypes = {\r\n // MAIN PROPS\r\n cols: PropTypes.number,\r\n className: PropTypes.string,\r\n children: PropTypes.any\r\n};\r\n\r\nContentBlock.defaultProps = {\r\n cols: 12,\r\n className: '',\r\n children: null\r\n};\r\n\r\nexport default ContentBlock;","/* eslint-disable react/no-unknown-property */\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst CheckboxBlock = (props) => {\r\n const {\r\n id,\r\n containerClassName,\r\n labelClassName,\r\n label,\r\n isChecked,\r\n onChange\r\n } = props;\r\n return (\r\n \r\n \r\n\r\n \r\n {label}\r\n \r\n \r\n );\r\n};\r\n\r\nCheckboxBlock.propTypes = {\r\n // MAIN PROPS\r\n id: PropTypes.string,\r\n label: PropTypes.string,\r\n containerClassName: PropTypes.string,\r\n labelClassName: PropTypes.string,\r\n isChecked: PropTypes.bool,\r\n onChange: PropTypes.func\r\n};\r\n\r\nCheckboxBlock.defaultProps = {\r\n // MAIN PROPS\r\n id: '',\r\n label: '',\r\n containerClassName: '',\r\n labelClassName: '',\r\n isChecked: false,\r\n onChange: () => { }\r\n};\r\n\r\nexport default CheckboxBlock;","/* eslint-disable no-nested-ternary */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// COMPONENTS\r\nimport Select from 'react-select';\r\nimport Async from 'react-select/async';\r\nimport CreatableSelect from 'react-select/creatable';\r\n// ICONS\r\nimport { AiOutlineLoading } from 'react-icons/ai';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst SelectBlock = (props) => {\r\n const {\r\n containerClassName,\r\n label,\r\n labelColor,\r\n inputLabel,\r\n inputState,\r\n errorMessage,\r\n successMessage,\r\n warningMessage,\r\n className,\r\n backgroundColor,\r\n placeholder,\r\n isAsync,\r\n isCreatable,\r\n isLabelLoading,\r\n isMulti,\r\n isRequired,\r\n isDisabled,\r\n hasBorder,\r\n } = props;\r\n\r\n const errorMessageSuffix = 'is required';\r\n const inputStates = {\r\n error: 'error',\r\n warning: 'warning',\r\n success: 'success',\r\n disabled: 'disabled'\r\n };\r\n\r\n return (\r\n \r\n {\r\n inputLabel\r\n && (\r\n \r\n {inputLabel}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n {\r\n label\r\n && (\r\n \r\n {label}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n\r\n {\r\n isAsync\r\n ? (\r\n \r\n )\r\n : (\r\n isCreatable\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n )\r\n )\r\n }\r\n\r\n {\r\n inputState === 'error'\r\n && (\r\n \r\n {errorMessage || (inputLabel || label ? (inputLabel || `${label} ${errorMessageSuffix}`) : 'Error message undefined')}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'warning'\r\n && (\r\n \r\n {warningMessage}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'success'\r\n && (\r\n \r\n {successMessage}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nSelectBlock.propTypes = {\r\n // CONTAINER PROPS\r\n containerClassName: PropTypes.string,\r\n\r\n // LABEL PROPS\r\n label: PropTypes.string,\r\n labelColor: PropTypes.string,\r\n inputLabel: PropTypes.string,\r\n\r\n // STATE PROPS\r\n inputState: PropTypes.string,\r\n errorMessage: PropTypes.string,\r\n successMessage: PropTypes.string,\r\n warningMessage: PropTypes.string,\r\n\r\n // INPUT PROPS\r\n className: PropTypes.string,\r\n backgroundColor: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n\r\n // BOOLEAN PROPS\r\n isAsync: PropTypes.bool,\r\n isCreatable: PropTypes.bool,\r\n isLabelLoading: PropTypes.bool,\r\n isMulti: PropTypes.bool,\r\n isRequired: PropTypes.bool,\r\n isDisabled: PropTypes.bool,\r\n hasBorder: PropTypes.bool,\r\n};\r\n\r\nSelectBlock.defaultProps = {\r\n // CONTAINER PROPS\r\n containerClassName: '',\r\n\r\n // LABEL PROPS\r\n label: '',\r\n labelColor: '',\r\n inputLabel: '',\r\n\r\n // STATE PROPS\r\n inputState: '',\r\n errorMessage: '',\r\n successMessage: '',\r\n warningMessage: '',\r\n\r\n // INPUT PROPS\r\n className: '',\r\n backgroundColor: 'light--sbg',\r\n placeholder: '',\r\n\r\n // BOOLEAN PROPS\r\n isAsync: false,\r\n isCreatable: false,\r\n isLabelLoading: false,\r\n isMulti: false,\r\n isRequired: false,\r\n isDisabled: false,\r\n hasBorder: false,\r\n};\r\n\r\nexport default SelectBlock;","/* eslint-disable import/prefer-default-export */\r\n\r\nimport axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Role/';\r\n\r\nconst getAllRoles = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAllRoles`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getAllRoles\r\n};","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n firstName: Yup.string().required('First Name is required').max(100),\r\n lastName: Yup.string().required('Last Name is required').max(100),\r\n // pin: Yup.string().required('Pin is required').min(4).max(4),\r\n roleId: Yup.number().nullable().required('Please select a Role for the user'),\r\n email: Yup.string().email('Please enter valid email').required('Email is required').max(250),\r\n password: Yup.string()\r\n .required('Password is required')\r\n .min(5, 'Minimum password length must be at least 5 characters')\r\n .max(100),\r\n confirmPassword: Yup.string()\r\n .required('Please confirm your new password')\r\n .oneOf([Yup.ref('password')], 'Passwords do not match'),\r\n isActive: Yup.bool().nullable(),\r\n});","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n password: Yup.string()\r\n .required('New password is required')\r\n .min(5, 'Minimum length of Password is 5')\r\n .max(100),\r\n confirmPassword: Yup.string()\r\n .required('Re-enter your new password')\r\n .oneOf([Yup.ref('password')], 'Passwords must match'),\r\n});","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n firstName: Yup.string().required('First Name is required').max(100),\r\n lastName: Yup.string().required('Last Name is required').max(100),\r\n // pin: Yup.string().required('Pin is required').min(4).max(4),\r\n roleId: Yup.number().nullable().required('Please select a Role for the user'),\r\n email: Yup.string().email('Please enter valid email').required('Email is required').max(250),\r\n isActive: Yup.bool().nullable(),\r\n});","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useFormik } from 'formik';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { IoPersonSharp } from 'react-icons/io5';\r\nimport {\r\n FiEye,\r\n FiEyeOff,\r\n FiMail\r\n} from 'react-icons/fi';\r\n// import { IoIosKeypad } from 'react-icons/io';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport Button from '../../../../../components/Button';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\nimport CheckboxBlock from '../../../../../components/CheckboxBlock';\r\nimport SelectBlock from '../../../../../components/SelectBlock';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// HELPERS AND SERVICES\r\nimport * as userService from '../../../../../services/management/userService';\r\nimport * as roleService from '../../../../../services/management/roleService';\r\nimport * as helper from '../../../../../helpers/helper';\r\nimport RegisterUserValidator from '../../../../../helpers/validators/management/user/RegisterUserValidator';\r\nimport UpdatePasswordValidator from '../../../../../helpers/validators/management/user/UpdatePasswordValidator';\r\nimport EditUserValidator from '../../../../../helpers/validators/management/user/EditUserValidator';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as auth from '../../../../../redux/authRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n\r\nconst userRegisterModel = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n roleId: '',\r\n // pin: '',\r\n password: '',\r\n confirmPassword: '',\r\n isActive: true,\r\n};\r\n\r\nconst initialUpdatePasswordModel = {\r\n id: 0,\r\n password: '',\r\n confirmPassword: '',\r\n};\r\n\r\nconst initialEditModel = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n roleId: '',\r\n // pin: '',\r\n isActive: true,\r\n};\r\n\r\nconst UserListingPage = (props) => {\r\n const {\r\n showAlert,\r\n auth,\r\n location,\r\n showConfirmModal,\r\n hideConfirmModal\r\n } = props;\r\n const [registerModalVisible, setRegisterModalVisible] = useState(false);\r\n const [updatePasswordModalVisible, setUpdatePasswordRegisterModalVisible] = useState(false);\r\n const [editModalVisible, setEditModalVisible] = useState(false);\r\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\r\n const [isConfirmPasswordVisible, setIsConfirmPasswordVisible] = useState(false);\r\n const [userList, setUserList] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [updatePasswordModel, setUpdatePasswordModel] = useState(initialUpdatePasswordModel);\r\n const [editUserModel, setEditUserModel] = useState(initialEditModel);\r\n const [roleOptions, setRoleOptions] = useState([]);\r\n const [selectedRole, setSelectedRole] = useState(null);\r\n useEffect(() => {\r\n getAllUsers();\r\n getAllRoles();\r\n if (location.state) {\r\n setRegisterModalVisible(location.state.addNew);\r\n }\r\n }, []);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const inputIconColor = 'grey--clr';\r\n // const pinCodeIcon = ;\r\n const emailIcon = ;\r\n\r\n const getAllRoles = () => {\r\n roleService.getAllRoles().then((res) => {\r\n setRoleOptions(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => { });\r\n };\r\n\r\n const registerUserFormik = useFormik({\r\n initialValues: userRegisterModel,\r\n validationSchema: RegisterUserValidator,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n registerUser(values);\r\n },\r\n });\r\n\r\n const updatePasswordUserFormik = useFormik({\r\n initialValues: updatePasswordModel,\r\n validationSchema: UpdatePasswordValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n updateUserPassword(values);\r\n },\r\n });\r\n\r\n const editUserFormik = useFormik({\r\n initialValues: editUserModel,\r\n validationSchema: EditUserValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n editUser(values);\r\n },\r\n });\r\n\r\n const getUserDetails = (id) => {\r\n setIsLoading(true);\r\n userService.getUserById(id).then((res) => {\r\n setEditUserModel(res);\r\n setEditModalVisible(true);\r\n const userInRole = roleOptions.find((x) => x.value === res.roleId);\r\n if (userInRole) {\r\n setSelectedRole(userInRole);\r\n }\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getAllUsers = () => {\r\n setIsLoading(true);\r\n userService.getAllUsers().then((res) => {\r\n setUserList(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const registerUser = (model) => {\r\n setIsLoading(true);\r\n userService.register(model).then((res) => {\r\n getAllUsers();\r\n showAlert({ text: res.message, state: 'success' });\r\n closeRegisterModal();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const closeRegisterModal = () => {\r\n setRegisterModalVisible(false);\r\n registerUserFormik.resetForm();\r\n setSelectedRole(null);\r\n };\r\n\r\n const closePasswordModal = () => {\r\n setUpdatePasswordModel(initialUpdatePasswordModel);\r\n updatePasswordUserFormik.resetForm();\r\n setUpdatePasswordRegisterModalVisible(false);\r\n };\r\n\r\n const updateUserPassword = (model) => {\r\n setIsLoading(true);\r\n userService.changeUserPassword(model.id, model.password).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n closePasswordModal();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const editUser = (model) => {\r\n setIsLoading(true);\r\n userService.updateUser(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n closeEditModal();\r\n getAllUsers();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const closeEditModal = () => {\r\n setEditModalVisible(false);\r\n setTimeout(() => {\r\n editUserFormik.resetForm();\r\n setEditUserModel(initialEditModel);\r\n setSelectedRole(null);\r\n }, 100);\r\n };\r\n\r\n const deleteUser = (userId) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n\r\n userService.deleteUser(userId).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllUsers();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true,\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n display: auth.accessLevel >= 50,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n {\r\n getUserDetails(userList[dataIndex].id);\r\n }}\r\n />\r\n\r\n {\r\n setUpdatePasswordRegisterModalVisible(true);\r\n setUpdatePasswordModel({ ...updatePasswordModel, id: userList[dataIndex].id });\r\n }}\r\n />\r\n\r\n {\r\n showConfirmModal({\r\n title: 'Delete User',\r\n text: 'Are you sure you want to delete this user?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n deleteUser(userList[dataIndex].id);\r\n hideConfirmModal();\r\n }\r\n });\r\n }}\r\n />\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'firstName',\r\n label: 'First Name',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'lastName',\r\n label: 'Last Name',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'email',\r\n label: 'Email',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'role',\r\n label: 'Role',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'client',\r\n label: 'Client',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'contractor',\r\n label: 'Contractor',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'isActive',\r\n label: 'Is User Active?',\r\n options: {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true,\r\n customBodyRenderLite: (dataIndex) => (

{userList[dataIndex].isActive ? 'Yes' : 'No'}

)\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n\r\n \r\n
\r\n \r\n \r\n = 50 ? 'Add New User' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={() => {\r\n setRegisterModalVisible(true);\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* REGISTER MODAL */}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n {\r\n opt = opt === null ? [] : opt;\r\n setSelectedRole(opt);\r\n registerUserFormik.setFieldValue('roleId', opt.value);\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsPasswordVisible(!isPasswordVisible);\r\n }}\r\n errorMessage={registerUserFormik.errors.password}\r\n inputState={`${helper.getInputClasses(registerUserFormik, 'password')}`}\r\n {...registerUserFormik.getFieldProps('password')}\r\n />\r\n \r\n\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsConfirmPasswordVisible(!isConfirmPasswordVisible);\r\n }}\r\n errorMessage={registerUserFormik.errors.confirmPassword}\r\n inputState={`${helper.getInputClasses(registerUserFormik, 'confirmPassword')}`}\r\n {...registerUserFormik.getFieldProps('confirmPassword')}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n\r\n {/* RESET PASSWORD MODAL */}\r\n {\r\n setUpdatePasswordRegisterModalVisible(false);\r\n }}\r\n >\r\n \r\n
\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsPasswordVisible(!isPasswordVisible);\r\n }}\r\n errorMessage={updatePasswordUserFormik.errors.password}\r\n inputState={`${helper.getInputClasses(updatePasswordUserFormik, 'password')}`}\r\n {...updatePasswordUserFormik.getFieldProps('password')}\r\n isRequired\r\n />\r\n \r\n\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsConfirmPasswordVisible(!isConfirmPasswordVisible);\r\n }}\r\n errorMessage={updatePasswordUserFormik.errors.confirmPassword}\r\n inputState={`${helper.getInputClasses(updatePasswordUserFormik, 'confirmPassword')}`}\r\n {...updatePasswordUserFormik.getFieldProps('confirmPassword')}\r\n isRequired\r\n />\r\n \r\n
\r\n
\r\n \r\n\r\n {/* EDIT MODAL */}\r\n {\r\n closeEditModal();\r\n }}\r\n >\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n {\r\n opt = opt === null ? [] : opt;\r\n setSelectedRole(opt);\r\n editUserFormik.setFieldValue('roleId', opt.value);\r\n }}\r\n />\r\n \r\n\r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, {\r\n ...auth.actions,\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n})(UserListingPage);","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable max-len */\r\n// DEPENDENCIES\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useFormik } from 'formik';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\n// ICONS\r\nimport { IoPersonSharp } from 'react-icons/io5';\r\nimport {\r\n FiEye,\r\n FiEyeOff,\r\n FiMail\r\n} from 'react-icons/fi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\n// import CheckboxBlock from '../../../../../components/CheckboxBlock';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// HELPERS AND SERVICES\r\nimport * as userService from '../../../../../services/management/userService';\r\nimport * as helper from '../../../../../helpers/helper';\r\nimport UpdatePasswordValidator from '../../../../../helpers/validators/management/user/UpdatePasswordValidator';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as auth from '../../../../../redux/authRedux';\r\n\r\nconst initialEditModel = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n roleId: '',\r\n // pin: '',\r\n isActive: true,\r\n};\r\n\r\nconst initialUpdatePasswordModel = {\r\n id: 0,\r\n password: '',\r\n confirmPassword: '',\r\n};\r\n\r\nconst UserProfilePage = (props) => {\r\n const { showAlert } = props;\r\n const [userProfile, setUserProfile] = useState(initialEditModel);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [updatePasswordModel, setUpdatePasswordModel] = useState(initialUpdatePasswordModel);\r\n const [updatePasswordModalVisible, setUpdatePasswordRegisterModalVisible] = useState(false);\r\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\r\n const [isConfirmPasswordVisible, setIsConfirmPasswordVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n getUserDetail();\r\n }, []);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const inputIconColor = 'grey--clr';\r\n // const pinCodeIcon = ;\r\n const emailIcon = ;\r\n\r\n const updatePasswordUserFormik = useFormik({\r\n initialValues: updatePasswordModel,\r\n validationSchema: UpdatePasswordValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n updateUserPassword(values);\r\n },\r\n });\r\n\r\n const updateUserPassword = (model) => {\r\n setIsLoading(true);\r\n userService.changeSelfPassword(model.password).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n closePasswordModal();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const closePasswordModal = () => {\r\n setUpdatePasswordModel(initialUpdatePasswordModel);\r\n updatePasswordUserFormik.resetForm();\r\n setUpdatePasswordRegisterModalVisible(false);\r\n };\r\n\r\n const getUserDetail = () => {\r\n setIsLoading(true);\r\n userService.getLoggedInUser().then((res) => {\r\n setUserProfile(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={() => {\r\n setUpdatePasswordRegisterModalVisible(true);\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {/* RESET PASSWORD MODAL */}\r\n {\r\n setUpdatePasswordRegisterModalVisible(false);\r\n }}\r\n >\r\n \r\n
\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsPasswordVisible(!isPasswordVisible);\r\n }}\r\n errorMessage={updatePasswordUserFormik.errors.password}\r\n inputState={`${helper.getInputClasses(updatePasswordUserFormik, 'password')}`}\r\n {...updatePasswordUserFormik.getFieldProps('password')}\r\n isRequired\r\n />\r\n \r\n\r\n \r\n : }\r\n iconRightOnClick={() => {\r\n setIsConfirmPasswordVisible(!isConfirmPasswordVisible);\r\n }}\r\n errorMessage={updatePasswordUserFormik.errors.confirmPassword}\r\n inputState={`${helper.getInputClasses(updatePasswordUserFormik, 'confirmPassword')}`}\r\n {...updatePasswordUserFormik.getFieldProps('confirmPassword')}\r\n isRequired\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, { ...auth.actions, ...alert.actions })(UserProfilePage);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Project/';\r\n\r\nconst getProjects = async (showCompleted) => axiosInstance.get(`${ENDPOINTORIGIN}GetProjects?showCompleted=${showCompleted}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getClientAndContractors = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetClientAndContractors`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getProjectById = async (id) => axiosInstance.get(`${ENDPOINTORIGIN}GetProjectById?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst saveProject = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}SaveProject`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteProject = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteProject?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst completeProject = async (projectId) => axiosInstance.put(`${ENDPOINTORIGIN}CompleteProject?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst assignProjectUsers = async (projectId, userId) => axiosInstance.post(`${ENDPOINTORIGIN}AssignProjectUsers?projectId=${projectId}&userId=${userId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst removeUserAssignment = async (projectId, userId) => axiosInstance.delete(`${ENDPOINTORIGIN}RemoveUserAssignment?projectId=${projectId}&userId=${userId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getUsersForProjectAccess = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetUsersForProjectAccess?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getAvailableUsers = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAvailableUsers`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getKPIReportData = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetKPIReportData?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getContractorUsersForProject = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetContractorUsersForProject?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getKPIReportForWeldLogByContractor = async (projectId, contractor) => axiosInstance.get(`${ENDPOINTORIGIN}GetKPIReportForWeldLogByContractor?projectId=${projectId}&contractor=${contractor}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getProjects,\r\n getClientAndContractors,\r\n getProjectById,\r\n saveProject,\r\n deleteProject,\r\n completeProject,\r\n assignProjectUsers,\r\n removeUserAssignment,\r\n getUsersForProjectAccess,\r\n getAvailableUsers,\r\n getKPIReportData,\r\n getContractorUsersForProject,\r\n getKPIReportForWeldLogByContractor\r\n};","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport SelectBlock from '../../../../components/SelectBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport Button from '../../../../components/Button';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectService from '../../../../services/project/projectService';\r\nimport constants from '../../../../constants/constants';\r\n\r\nconst ProjectListingPage = (props) => {\r\n const { showAlert, auth, showConfirmModal, hideConfirmModal } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isConfirmDeleteModalVisible, setIsConfirmDeleteModalVisible] = useState(false);\r\n const [projects, setProjects] = useState([]);\r\n const [projectFilter, setProjectFilter] = useState({ label: 'Active', value: 'Active' });\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n useEffect(() => {\r\n getAllProjects();\r\n }, [projectFilter]);\r\n\r\n const getAllProjects = () => {\r\n setIsLoading(true);\r\n projectService.getProjects(projectFilter.value === 'Completed').then((res) => {\r\n setProjects(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const deleteProject = (id) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n\r\n projectService.deleteProject(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllProjects();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const downloadDirectory = async (projectId) => {\r\n setIsLoading(true);\r\n try {\r\n window.open(`${constants.API_URL}ProjectDocument/DownloadProjectDirectory?token=${auth.authToken}&projectId=${projectId}`, '_blank');\r\n } catch (ex) {\r\n showAlert({ text: ex.message, state: 'error' });\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n \r\n\r\n {\r\n downloadDirectory(projects[dataIndex].id);\r\n }}\r\n />\r\n\r\n {\r\n auth.accessLevel >= 50 && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Project',\r\n text: 'Are you sure you want to delete this project?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n deleteProject(projects[dataIndex].id);\r\n hideConfirmModal();\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'projectNumber',\r\n label: 'Project#',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'client',\r\n label: 'Client',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'name',\r\n label: 'ProjectName',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'contractors',\r\n label: 'Contractor(s)',\r\n options: columnOptions,\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 ? 'New Project' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonTo=\"/project/create\"\r\n />\r\n \r\n {\r\n setProjectFilter(opt);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* CONFIRM DELETE MODAL */}\r\n { }}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"grey--bg\"\r\n onHide={() => {\r\n setIsConfirmDeleteModalVisible(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(ProjectListingPage);","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n id: Yup.number(),\r\n clientId: Yup.number().required(),\r\n name: Yup.string().max(500, 'Please use less than 500 characters'),\r\n projectNumber: Yup.string().required('Project# is required').max(20, 'Please use less than 20 characters'),\r\n description: Yup.string().max(5000, 'Please use less than 5000 characters'),\r\n contractorIds: Yup.array().nullable()\r\n});","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable import/order */\r\n/* eslint-disable no-nested-ternary */\r\n/* eslint-disable prefer-template */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\n// import MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { FiCheck } from 'react-icons/fi';\r\n// CUSTOM COMPONENTS\r\nimport Overlay from '../../../../components/Overlay';\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport Button from '../../../../components/Button';\r\nimport InputBlock from '../../../../components/InputBlock';\r\nimport SelectBlock from '../../../../components/SelectBlock';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n// SERVICES AND HELPERS\r\nimport * as projectService from '../../../../services/project/projectService';\r\nimport ProjectValidator from '../../../../helpers/validators/project/project/ProjectValidator';\r\nimport * as helper from '../../../../helpers/helper';\r\n\r\nconst initialModel = {\r\n id: 0,\r\n clientId: '',\r\n name: '',\r\n description: '',\r\n projectNumber: '',\r\n users: [],\r\n projectContractors: []\r\n};\r\n\r\nconst ProjectManagementPage = (props) => {\r\n const {\r\n showAlert,\r\n history,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n auth,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isModalVisible, setIsModalVisible] = useState(false);\r\n const [project, setProject] = useState(initialModel);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [users, setUsers] = useState([]);\r\n const [clients, setClients] = useState([]);\r\n const [contractors, setContractors] = useState([]);\r\n const [selectedUserOptions, setSelectedUserOptions] = useState([]);\r\n const [selectedClientOption, setSelectedClientOption] = useState([]);\r\n const [selectedContractorOption, setSelectedContractorOption] = useState([]);\r\n const [isClientLoading, setIsClientLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n fetchClientsAndPopulateForm();\r\n }, []);\r\n\r\n const fetchClientsAndPopulateForm = () => {\r\n setIsClientLoading(true);\r\n projectService.getClientAndContractors().then((res) => {\r\n const tempClients = res.clients.map((x) => ({ ...x, label: x.name, value: x.id }));\r\n setClients(tempClients);\r\n\r\n const tempContractors = res.contractors.map((x) => ({ ...x, label: x.name, value: x.id }));\r\n setContractors(tempContractors);\r\n\r\n if (projectId) {\r\n populateForm(tempClients, tempContractors);\r\n }\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsClientLoading(false);\r\n });\r\n };\r\n\r\n const formik = useFormik({\r\n initialValues: project,\r\n validationSchema: ProjectValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n saveProject(values);\r\n },\r\n });\r\n\r\n const populateForm = (processedClients, processedContractors) => {\r\n processedClients = processedClients || clients;\r\n processedContractors = processedContractors || contractors;\r\n setIsLoading(true);\r\n projectService.getProjectById(projectId).then((res) => {\r\n setProject(res);\r\n setProjectDetails({\r\n projectName: `#${res.projectNumber} ${res.name ? ' : ' + res.name : ''}`,\r\n projectId,\r\n isCompleted: res.isCompleted\r\n });\r\n fetchUsers();\r\n const savedClient = processedClients.find((x) => x.id === res.clientId);\r\n if (savedClient) {\r\n setSelectedClientOption(savedClient);\r\n }\r\n\r\n if (res.projectContractors) {\r\n const selectedContractorIds = res.projectContractors.map((a) => a.contractorId);\r\n const savedContractors = processedContractors.filter((x) => selectedContractorIds.includes(x.id));\r\n if (savedContractors) {\r\n setSelectedContractorOption(savedContractors);\r\n }\r\n }\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchUsers = () => {\r\n projectService.getAvailableUsers().then((res) => {\r\n setUsers(res.map((x) => helper.setToOptionModel(`${x.firstName} ${x.lastName} (${x.role})`, x.id)));\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'danger' });\r\n });\r\n };\r\n\r\n const saveProject = (model) => {\r\n setIsLoading(true);\r\n projectService.saveProject(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n if (model.id === 0) {\r\n history.push(`/project/edit/${res.id}`);\r\n }\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const saveProjectUsers = () => {\r\n if (selectedUserOptions.length <= 0) {\r\n return;\r\n }\r\n setIsLoading(true);\r\n projectService.assignProjectUsers({\r\n projectId: parseInt(projectId, 10),\r\n users: selectedUserOptions\r\n }).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n populateForm();\r\n handleModalClose();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const handleModalClose = () => {\r\n setIsModalVisible(false);\r\n\r\n setTimeout(() => {\r\n setSelectedUserOptions([]);\r\n }, 100);\r\n };\r\n\r\n // const removeUserAssignment = (id) => {\r\n // hideConfirmModal();\r\n // setIsLoading(true);\r\n // projectService.removeUserAssignment(id).then((res) => {\r\n // showAlert({ text: res.message, state: 'success' });\r\n // populateForm();\r\n // handleModalClose();\r\n // }).catch((ex) => {\r\n // showAlert({ text: ex.message, state: 'warning' });\r\n // }).finally(() => setIsLoading(false));\r\n // };\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n // const columnOptions = {\r\n // filter: false,\r\n // sort: false,\r\n // print: false,\r\n // download: false\r\n // };\r\n\r\n // const options = {\r\n // selectableRows: 'none',\r\n // filter: false,\r\n // sort: false,\r\n // print: false,\r\n // download: false,\r\n // };\r\n\r\n // const columns = [\r\n // {\r\n // name: 'id',\r\n // label: 'Actions',\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // print: false,\r\n // download: false,\r\n // display: auth.accessLevel >= 40,\r\n // customBodyRenderLite: (dataIndex) => (\r\n // \r\n // {\r\n // showConfirmModal({\r\n // title: 'Remove User',\r\n // text: 'Are you sure you want to remove this user from this project?',\r\n // rightBtnText: 'Confirm',\r\n // btnAction: () => removeUserAssignment(project.users[dataIndex].id)\r\n // });\r\n // }}\r\n // />\r\n // \r\n // )\r\n // }\r\n // },\r\n // {\r\n // name: 'name',\r\n // label: 'User',\r\n // },\r\n // {\r\n // name: 'role',\r\n // label: 'Role',\r\n // options: columnOptions,\r\n // },\r\n // ];\r\n\r\n const completeProject = () => {\r\n setIsLoading(true);\r\n projectService.completeProject(projectId).then((res) => {\r\n history.push('/projects');\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n hideConfirmModal();\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {(isLoading || isClientLoading) && }\r\n \r\n
\r\n \r\n = 50 && projectId) && !project.isCompleted) ? 'Complete Project' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={() => {\r\n showConfirmModal({\r\n title: 'Complete Project',\r\n text: 'Are you sure you want to complete this project?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => completeProject()\r\n });\r\n }}\r\n />\r\n
\r\n {/* PROJECT BASIC INFO */}\r\n \r\n {\r\n selectedOpt = selectedOpt === null ? null : selectedOpt;\r\n setSelectedClientOption(selectedOpt);\r\n if (selectedOpt) {\r\n formik.setFieldValue('clientId', selectedOpt.id);\r\n }\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n {\r\n selectedOpt = selectedOpt === null ? null : selectedOpt;\r\n setSelectedContractorOption(selectedOpt);\r\n if (selectedOpt) {\r\n formik.setFieldValue('projectContractors', selectedOpt.map((x) => ({ projectId, contractorId: x.id })));\r\n }\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n {/* {\r\n (projectId)\r\n && (\r\n \r\n 40 ? 'Assign QC' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={() => {\r\n setIsModalVisible(true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n )\r\n } */}\r\n {\r\n (auth.accessLevel >= 40 && !project.isCompleted) && (\r\n \r\n history.push('/projects')}\r\n />\r\n\r\n \r\n \r\n )\r\n }\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n {/* ASSIGNMENT MODAL */}\r\n 0 ? 'Add' : ''}\r\n primaryModalActionColor=\"primary--bg\"\r\n primaryModalActionOnClick={saveProjectUsers}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"danger--bg\"\r\n onHide={handleModalClose}\r\n >\r\n \r\n
\r\n \r\n {\r\n users.length > 0 ? (\r\n {\r\n selectedOpt = selectedOpt === null ? [] : selectedOpt;\r\n setSelectedUserOptions(selectedOpt);\r\n }}\r\n />\r\n )\r\n : (\r\n No Users Available. All the users are assigned to projects.\r\n )\r\n }\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, { ...alert.actions, ...confirmModal.actions, ...projectDetailRedux.actions })(ProjectManagementPage);","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FilePond, registerPlugin } from 'react-filepond';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\r\nimport 'filepond/dist/filepond.min.css';\r\nimport 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css';\r\n// import _ from 'lodash';\r\n// COMPONENTS\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nregisterPlugin(\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginImagePreview,\r\n FilePondPluginFileValidateType\r\n);\r\n\r\nconst FileUploadBlock = (props) => {\r\n const { containerClassName, labelIdle } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nFileUploadBlock.propTypes = {\r\n containerClassName: PropTypes.string,\r\n labelIdle: PropTypes.string,\r\n};\r\n\r\nFileUploadBlock.defaultProps = {\r\n containerClassName: '',\r\n labelIdle: 'Drag & Drop your files or Browse',\r\n};\r\n\r\nexport default FileUploadBlock;","/* eslint-disable arrow-parens */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-restricted-syntax */\r\n/* eslint-disable no-await-in-loop */\r\n/* eslint-disable no-loop-func */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\n/* eslint-disable react/destructuring-assignment */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/* eslint-disable no-confusing-arrow */\r\n/* eslint-disable react/no-array-index-key */\r\n/* eslint-disable no-nested-ternary */\r\n/* eslint-disable react/jsx-no-useless-fragment */\r\n/* eslint-disable import/order */\r\n\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useSpring, animated } from 'react-spring';\r\nimport {\r\n alpha,\r\n makeStyles,\r\n withStyles\r\n} from '@material-ui/core/styles';\r\n// ICONS\r\nimport {\r\n FcFolder,\r\n FcOpenedFolder,\r\n FcDocument\r\n} from 'react-icons/fc';\r\nimport {\r\n TbTrash,\r\n TbPencil,\r\n TbFilePlus,\r\n TbFolderPlus,\r\n TbCloudDownload\r\n} from 'react-icons/tb';\r\n// COMPONENTS\r\nimport TreeView from '@material-ui/lab/TreeView';\r\nimport TreeItem from '@material-ui/lab/TreeItem';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport { Modal, Button } from 'react-bootstrap';\r\nimport { FilePond, registerPlugin } from 'react-filepond';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\n// CUSTOM COMPONENTS\r\nimport InputBlock from './InputBlock';\r\nimport Section from './Section';\r\nimport ContentBlock from './ContentBlock';\r\nimport CustomBlock from './CustomBlock';\r\nimport FormBlock from './FormBlock';\r\nimport ModalBlock from './ModalBlock';\r\nimport CheckboxBlock from './CheckboxBlock';\r\nimport FileUploadBlock from './FileUploadBlock';\r\n// SERVICES AND HELPERS\r\nimport * as _ from 'lodash';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport * as confirmModal from '../redux/confirmModalRedux';\r\n// ASSETS\r\nimport 'filepond/dist/filepond.min.css';\r\nimport 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css';\r\n// import constants from '../constants/constants';\r\n\r\nregisterPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview);\r\n\r\nconst TransitionComponent = (props) => {\r\n const style = useSpring({\r\n from: { opacity: 0, transform: 'translate3d(20px,0,0)' },\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(${props.in ? 0 : 20}px,0,0)`\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst StyledTreeItem = withStyles((theme) => ({\r\n iconContainer: { '& .close': { opacity: 0.3 } },\r\n group: {\r\n marginLeft: 7,\r\n paddingLeft: 18,\r\n borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`\r\n }\r\n}))((props) => );\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n height: '100%',\r\n flexGrow: 1,\r\n maxWidth: 460\r\n }\r\n});\r\n\r\nconst RecursiveDocumentTree = props => {\r\n const { showConfirmModal, hideConfirmModal } = props;\r\n\r\n const {\r\n folderStructure,\r\n setFolderStructure,\r\n addNewFileFolder,\r\n renameFileFolder,\r\n deleteFileFolder,\r\n isActionsVisible,\r\n downloadFile\r\n } = props;\r\n\r\n const [showIndex, setShowIndex] = useState(-1);\r\n const [editObj, setEditObj] = useState({\r\n id: -1,\r\n name: '',\r\n type: ''\r\n });\r\n const [isMulti, setIsMulti] = useState(false);\r\n const classes = useStyles();\r\n const [file, setFile] = useState([]);\r\n const [fileList, setFileList] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [uploaded, setUploaded] = useState(0);\r\n const [uploading, setUploading] = useState(0);\r\n const mainIconSize = 35;\r\n const actionIconSize = 30;\r\n\r\n const deleteRecursively = (arr, id) => {\r\n for (const node of arr) {\r\n if (node.id === id) {\r\n const index = arr.findIndex(x => x.id === id);\r\n arr.splice(index, 1);\r\n }\r\n\r\n if (node.children) {\r\n deleteRecursively(node.children, id);\r\n }\r\n }\r\n };\r\n\r\n const actions = [\r\n {\r\n id: 1,\r\n icon: ,\r\n action: (obj) => setEditObj({ ...obj, type: 'Add Folder', name: '' }),\r\n folderOnly: true\r\n },\r\n {\r\n id: 2,\r\n icon: ,\r\n action: (obj) => setEditObj({ ...obj, type: 'Add File', name: '' }),\r\n folderOnly: true\r\n },\r\n {\r\n id: 3,\r\n icon: ,\r\n action: (obj) => {\r\n if (obj.id === 99999) {\r\n return;\r\n }\r\n setEditObj({\r\n ...obj,\r\n type: `Rename ${obj.children ? 'Folder' : 'File'}`\r\n });\r\n },\r\n folderOnly: false\r\n },\r\n {\r\n id: 4,\r\n icon: ,\r\n action: (obj) => {\r\n if (obj.id === 99999) {\r\n return;\r\n }\r\n showConfirmModal({\r\n title: 'Delete File/Folder',\r\n text: 'Are you sure you want to remove this file/folder?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n deleteFileFolder(obj.id)\r\n .then(() => {\r\n const clonedFolderStructure = _.cloneDeep(folderStructure);\r\n deleteRecursively(clonedFolderStructure.children, obj.id);\r\n\r\n setFolderStructure(clonedFolderStructure);\r\n hideConfirmModal();\r\n })\r\n .catch(() => {\r\n });\r\n }\r\n });\r\n },\r\n folderOnly: false\r\n }\r\n ];\r\n\r\n const findNodeById = (arr, id) => {\r\n for (const node of arr) {\r\n if (node.id === id) return node;\r\n\r\n if (node.children) {\r\n const desiredNode = findNodeById(node.children, id);\r\n if (desiredNode) return desiredNode;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const renameRecursively = (id, name) => {\r\n renameFileFolder(id, name).then(() => {\r\n const clonedFolderStructure = _.cloneDeep(folderStructure);\r\n\r\n const nodeFound = findNodeById(clonedFolderStructure.children, id);\r\n nodeFound.name = name;\r\n\r\n setFolderStructure(clonedFolderStructure);\r\n hideModalHandler();\r\n });\r\n };\r\n\r\n const addFolderHandler = (id, name) => {\r\n if (name === '') {\r\n return;\r\n }\r\n\r\n addNewFileFolder({\r\n parentId: id === 99999 ? null : id,\r\n name,\r\n file: null\r\n }).then(res => {\r\n const clonedFolderStructure = _.cloneDeep(folderStructure);\r\n\r\n const nodeFound = findNodeById([clonedFolderStructure], id);\r\n const newObj = {\r\n name,\r\n children: null,\r\n id: res.id,\r\n filePath: null\r\n };\r\n\r\n if (nodeFound.children === null) {\r\n nodeFound.children = [newObj];\r\n } else {\r\n const tempArr = sortByName([...nodeFound.children, newObj]);\r\n nodeFound.children = tempArr;\r\n }\r\n\r\n setFolderStructure(clonedFolderStructure);\r\n hideModalHandler();\r\n });\r\n };\r\n\r\n const saveMultipleFiles = async (id) => {\r\n setUploading(fileList.length);\r\n setIsLoading(true);\r\n let index = 0;\r\n const savedFiles = [];\r\n\r\n for (const x of fileList) {\r\n await addNewFileFolder({\r\n parentId: id === 99999 ? null : id,\r\n name: x.name,\r\n file: x\r\n }).then((res) => {\r\n index += 1;\r\n setUploaded(index);\r\n savedFiles.push({\r\n name: x.name,\r\n children: null,\r\n id: res.id,\r\n filePath: res.filePath\r\n });\r\n });\r\n }\r\n\r\n const clonedFolderStructure = _.cloneDeep(folderStructure);\r\n const nodeFound = findNodeById([clonedFolderStructure], id);\r\n\r\n if (nodeFound.children === null) {\r\n nodeFound.children = sortByName([...savedFiles]);\r\n } else {\r\n const tempArr = sortByName([...nodeFound.children, ...savedFiles]);\r\n nodeFound.children = tempArr;\r\n }\r\n setFolderStructure(clonedFolderStructure);\r\n hideModalHandler();\r\n };\r\n\r\n const addFileHandler = (id, name) => {\r\n if (name === '' || file.length === 0) {\r\n return;\r\n }\r\n setIsLoading(true);\r\n\r\n addNewFileFolder({\r\n parentId: id === 99999 ? null : id,\r\n name,\r\n file\r\n }).then(res => {\r\n const clonedFolderStructure = _.cloneDeep(folderStructure);\r\n\r\n const nodeFound = findNodeById([clonedFolderStructure], id);\r\n const newObj = {\r\n name,\r\n children: null,\r\n id: res.id,\r\n filePath: res.filePath\r\n };\r\n\r\n if (nodeFound.children === null) {\r\n nodeFound.children = [newObj];\r\n } else {\r\n const tempArr = sortByName([...nodeFound.children, newObj]);\r\n nodeFound.children = tempArr;\r\n }\r\n\r\n setFolderStructure(clonedFolderStructure);\r\n hideModalHandler();\r\n }).catch(() => {\r\n\r\n });\r\n };\r\n\r\n const sortByName = (arr) => arr.sort((a, b) => {\r\n a = a.name.toLowerCase();\r\n b = b.name.toLowerCase();\r\n if (a === b) return 0;\r\n\r\n return a < b ? -1 : 1;\r\n });\r\n\r\n const ActionLabelComponent = (propsT) => (\r\n \r\n {\r\n if (editObj.id !== propsT.id) {\r\n setShowIndex(propsT.id);\r\n setEditObj({\r\n id: -1,\r\n name: ''\r\n });\r\n }\r\n }}\r\n >\r\n

{propsT.name}

\r\n
\r\n {propsT.id === showIndex && (\r\n e.preventDefault()}\r\n >\r\n {\r\n propsT.filePath\r\n && (\r\n {\r\n const encodedFilePath = encodeURIComponent(propsT.filePath)\r\n .replace(/%2F/g, '/');\r\n\r\n downloadFile(encodedFilePath);\r\n }\r\n }\r\n >\r\n \r\n \r\n )\r\n }\r\n {\r\n isActionsVisible\r\n && (\r\n actions.filter((x) => propsT.filePath ? x.folderOnly === false : true)\r\n .map((action, index) => (\r\n action.action(propsT)}>\r\n {action.icon}\r\n \r\n ))\r\n )\r\n }\r\n
\r\n )}\r\n
\r\n );\r\n\r\n const renderTree = nodes => (\r\n \r\n )}\r\n >\r\n {Array.isArray(nodes.children) || nodes.filePath === null ? (\r\n nodes.children ? nodes.children.length > 0 ? (\r\n nodes.children.map(node => renderTree(node))\r\n ) : (\r\n <>\r\n ) : <>\r\n ) : null}\r\n \r\n );\r\n\r\n const hideModalHandler = () => {\r\n setEditObj({\r\n id: -1,\r\n name: ''\r\n });\r\n setIsMulti(false);\r\n setUploading(0);\r\n setUploaded(0);\r\n setFileList([]);\r\n setFile([]);\r\n setIsLoading(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {editObj.type}\r\n \r\n \r\n {\r\n editObj.type === 'Add File' && (\r\n <>\r\n Browse\"\r\n onupdatefiles={(fileT) => {\r\n if (fileT.length > 0) {\r\n const selectedFile = fileT[0].file;\r\n setEditObj({ ...editObj, name: selectedFile.name });\r\n setFile(selectedFile);\r\n setFileList(fileT.map(x => x.file));\r\n } else {\r\n setFile([]);\r\n setFileList([]);\r\n }\r\n }}\r\n />\r\n {\r\n setIsMulti(!isMulti);\r\n }}\r\n value=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n )}\r\n label=\"Multi File Upload\"\r\n />\r\n \r\n )\r\n\r\n }\r\n {\r\n !isMulti && (\r\n setEditObj({ ...editObj, name: e.target.value })}\r\n />\r\n )\r\n }\r\n \r\n {\r\n uploading > 0 && (\r\n
\r\n \r\n {uploaded}\r\n /\r\n {uploading}\r\n uploaded.\r\n \r\n
\r\n )\r\n }\r\n \r\n \r\n {\r\n if (['Rename File', 'Rename Folder'].includes(editObj.type)) {\r\n renameRecursively(editObj.id, editObj.name);\r\n } else if (editObj.type === 'Add Folder') {\r\n addFolderHandler(editObj.id, editObj.name);\r\n } else {\r\n if (isMulti) {\r\n saveMultipleFiles(editObj.id);\r\n return;\r\n }\r\n addFileHandler(editObj.id, editObj.name);\r\n }\r\n }}\r\n >\r\n {isLoading ? 'Please wait...' : 'Save Changes'}\r\n \r\n \r\n
\r\n\r\n {/* CREATE SPLIT LOAD MODAL */}\r\n 0}\r\n centered\r\n size=\"md\"\r\n contentHeader={editObj.type}\r\n primaryModalActionText=\"Save Changes\"\r\n primaryModalActionColor=\"primary--bg\"\r\n primaryModalActionOnClick={() => {\r\n if (['Rename File', 'Rename Folder'].includes(editObj.type)) {\r\n renameRecursively(editObj.id, editObj.name);\r\n } else if (editObj.type === 'Add Folder') {\r\n addFolderHandler(editObj.id, editObj.name);\r\n } else {\r\n if (isMulti) {\r\n saveMultipleFiles(editObj.id);\r\n return;\r\n }\r\n addFileHandler(editObj.id, editObj.name);\r\n }\r\n }}\r\n isPrimaryModalActionIsLoading={isLoading}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"danger--bg\"\r\n onHide={hideModalHandler}\r\n >\r\n \r\n
\r\n {\r\n !isMulti && (\r\n \r\n setEditObj({ ...editObj, name: e.target.value })}\r\n />\r\n \r\n )\r\n }\r\n\r\n \r\n {\r\n editObj.type === 'Add File' && (\r\n <>\r\n {\r\n if (fileT.length > 0) {\r\n const selectedFile = fileT[0].file;\r\n setEditObj({ ...editObj, name: selectedFile.name });\r\n setFile(selectedFile);\r\n setFileList(fileT.map(x => x.file));\r\n } else {\r\n setFile([]);\r\n setFileList([]);\r\n }\r\n }}\r\n />\r\n {\r\n setIsMulti(!isMulti);\r\n }}\r\n />\r\n \r\n )\r\n }\r\n \r\n
\r\n
\r\n \r\n\r\n }\r\n defaultExpandIcon={}\r\n defaultEndIcon={}\r\n >\r\n {renderTree(folderStructure)}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default connect(null, confirmModal.actions)(RecursiveDocumentTree);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'ProjectDocument/';\r\n\r\nconst getProjectDocumentsByName = async (projectId, parentName, childName) => axiosInstance.get(`${ENDPOINTORIGIN}GetProjectDocumentsByName?projectId=${projectId}&parentName=${parentName}&childName=${childName}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getProjectDocuments = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetProjectDocuments?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst saveProjectDocument = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}SaveProjectDocument`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteProjectDocument = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteProjectDocument?projectDocumentId=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst renameProjectDocument = async (projectDocumentId, newName) => axiosInstance.put(`${ENDPOINTORIGIN}RenameProjectDocument?projectDocumentId=${projectDocumentId}&newName=${encodeURIComponent(newName)}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst openProjectDocument = async (filePath) => axiosInstance.get(`${ENDPOINTORIGIN}ViewDocument?filePath=${filePath}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getProjectDocumentsByName,\r\n getProjectDocuments,\r\n saveProjectDocument,\r\n deleteProjectDocument,\r\n renameProjectDocument,\r\n openProjectDocument\r\n};","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport RecursiveDocumentTree from '../../../../components/RecursiveDocumentTree';\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport * as projectDocumentService from '../../../../services/project/projectDocumentService';\r\n// HELPERS\r\nimport * as helper from '../../../../helpers/helper';\r\nimport constants from '../../../../constants/constants';\r\n\r\nconst ProjectDocumentPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [folderStructure, setFolderStructure] = useState({\r\n id: 99999,\r\n name: 'Documents',\r\n filePath: null,\r\n children: null\r\n });\r\n\r\n useEffect(() => {\r\n setProjectDetails({ ...projectDetail, projectId });\r\n fetchProjectDocuments();\r\n }, []);\r\n\r\n const fetchProjectDocuments = () => {\r\n setIsLoading(true);\r\n projectDocumentService.getProjectDocuments(projectId).then((res) => {\r\n setFolderStructure(res);\r\n }).catch(() => {\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addNewFileFolder = (projectDoc) => projectDocumentService.saveProjectDocument(helper.convertJsonToFormData({ ...projectDoc, projectId })).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n\r\n return res.projectDocument;\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const renameFileFolder = (id, name) => projectDocumentService.renameProjectDocument(id, name).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const deleteFileFolder = (id) => projectDocumentService.deleteProjectDocument(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const downloadFile = async (filePath) => {\r\n setIsLoading(true);\r\n try {\r\n window.open(`${constants.API_URL}ProjectDocument/ViewDocument?token=${auth.authToken}&filePath=${filePath}`, '_blank');\r\n } catch (ex) {\r\n showAlert({ text: ex.message, state: 'error' });\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n // const downloadDirectory = async () => {\r\n // setIsLoading(true);\r\n // try {\r\n // window.open(`${constants.API_URL}ProjectDocument/DownloadProjectDirectory?token=${auth.authToken}&projectId=${projectId}`, '_blank');\r\n // } catch (ex) {\r\n // showAlert({ text: ex.message, state: 'error' });\r\n // } finally {\r\n // setIsLoading(false);\r\n // }\r\n // };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n = 40 && !projectDetail.isCompleted}\r\n downloadFile={downloadFile}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(ProjectDocumentPage);","/* eslint-disable no-restricted-syntax */\r\n/* eslint-disable react/jsx-one-expression-per-line */\r\n/* eslint-disable no-confusing-arrow */\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport * as _ from 'lodash';\r\nimport moment from 'moment';\r\n// COMPONENTS\r\nimport Accordion from 'react-bootstrap/Accordion';\r\n// CUSTOM COMPONENETS\r\nimport SelectBlock from './SelectBlock';\r\nimport ContentBlock from './ContentBlock';\r\nimport CustomBlock from './CustomBlock';\r\nimport Section from './Section';\r\nimport Button from './Button';\r\n\r\nconst DataGridFilterModule = (props) => {\r\n const { columns, originalRows, updateRowFn } = props;\r\n const [filter, setFilter] = useState({});\r\n const [selectedOptions, setSelectedOptions] = useState({});\r\n\r\n const handleFilterOnClick = () => {\r\n const temp = [];\r\n\r\n originalRows.forEach((row) => {\r\n let shouldAdd = true;\r\n if (Object.values(filter).every((x) => !x.length)) {\r\n updateRowFn(originalRows);\r\n return;\r\n }\r\n for (const key in filter) {\r\n if (filter[key].length > 0) {\r\n if (!filter[key].includes(row[key])) {\r\n shouldAdd = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (shouldAdd) {\r\n temp.push(row);\r\n }\r\n updateRowFn(temp);\r\n });\r\n };\r\n\r\n const resetFilter = () => {\r\n const resetModel = {};\r\n for (const key of Object.keys(selectedOptions)) {\r\n resetModel[key] = null;\r\n }\r\n\r\n setSelectedOptions(resetModel);\r\n setFilter({});\r\n updateRowFn(originalRows);\r\n };\r\n\r\n const determineOptionsDataType = (val) => ((val instanceof Date) ? moment(val).format('MM/D/YYYY') : val);\r\n\r\n return (\r\n \r\n \r\n \r\n Filters\r\n \r\n
\r\n {columns\r\n .filter((x) => !['action', 'id'].includes(x.field))\r\n .map((column) => (\r\n \r\n x[column.field])\r\n // .map((row) => ({\r\n // label: row[column.field] ?\r\n // determineOptionsDataType(row[column.field]) : '',\r\n // value: determineOptionsDataType(row[column.field]),\r\n // }))}\r\n options={\r\n _.sortBy(_.uniqBy(originalRows, column.field)\r\n // .filter((x) => x[column.field])\r\n .map((row) => ({\r\n label: row[column.field] ? determineOptionsDataType(row[column.field]) : '',\r\n value: determineOptionsDataType(row[column.field]),\r\n })), (item) => (item.label === '') ? -Infinity : 0)\r\n }\r\n onChange={(opt) => {\r\n const temp = {};\r\n temp[column.field] = opt.map((x) => x.value);\r\n\r\n const tempSelected = {};\r\n tempSelected[column.field] = opt;\r\n\r\n setSelectedOptions({ ...selectedOptions, ...tempSelected });\r\n setFilter({ ...filter, ...temp });\r\n }}\r\n />\r\n \r\n ))}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DataGridFilterModule;","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'TestPackageLog/';\r\n\r\nconst getTestPackageLogs = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetTestPackageLogs?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createTestPackageLog = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateTestPackageLog?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteTestPackageLog = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteTestPackageLog?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateTestPackageLog = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateTestPackageLog`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getContractors = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetContractors?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getContractorsByTp = async (projectId, tp) => axiosInstance.get(`${ENDPOINTORIGIN}GetContractorsByTp?projectId=${projectId}&tp=${tp}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst bulkUpdate = async (projectId, model) => axiosInstance.post(`${ENDPOINTORIGIN}BulkUpdate?projectId=${projectId}`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getTestPackageLogs,\r\n createTestPackageLog,\r\n deleteTestPackageLog,\r\n updateTestPackageLog,\r\n getContractors,\r\n getContractorsByTp,\r\n bulkUpdate\r\n};","/* eslint-disable no-unused-vars */\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { useWizard } from 'react-use-wizard';\r\nimport readXlsxFile from 'read-excel-file';\r\nimport * as _ from 'lodash';\r\nimport moment from 'moment';\r\n// CUSTOM COMPONENTS\r\nimport { Alert } from 'react-bootstrap';\r\nimport ContentBlock from './ContentBlock';\r\nimport Button from './Button';\r\nimport Section from './Section';\r\nimport FileUploadBlock from './FileUploadBlock';\r\nimport TextHeader from './TextHeader';\r\n// SERVICES AND HELPERS\r\nimport constants from '../constants/constants';\r\n\r\nconst ExcelImportWizard = (props) => {\r\n const {\r\n columns,\r\n uploadedFile,\r\n setUploadedFile,\r\n // showAlert,\r\n setExcelJson,\r\n data\r\n } = props;\r\n const { nextStep } = useWizard();\r\n const [errMessage, setErrMessage] = useState('');\r\n\r\n const getJsonKey = (headerName) => (headerName === 'Id' ? 'id' : columns.find((x) => x.headerName === headerName)?.field);\r\n\r\n const formatDateOrReturnOriginal = (input) => {\r\n if (input === null) {\r\n return '';\r\n }\r\n const parsedDate = moment(input);\r\n\r\n return (parsedDate.isValid() && typeof input === 'object') ? parsedDate.format('MM/DD/YYYY') : input;\r\n };\r\n\r\n const validateExcel = async () => {\r\n const rows = await readXlsxFile(uploadedFile[0].file);\r\n const [headerRow, ...dataRows] = rows;\r\n\r\n const jsonData = dataRows.map((row) => {\r\n const rowData = {};\r\n headerRow.forEach((header, index) => {\r\n rowData[getJsonKey(header)] = formatDateOrReturnOriginal(row[index]);\r\n });\r\n return rowData;\r\n });\r\n\r\n console.log('Json Data is ', jsonData);\r\n\r\n let isValid = true;\r\n\r\n for (let i = 0; i < jsonData.length; i += 1) {\r\n const columnsInUploadedExcelSheet = Object.keys(jsonData[i]).filter((x) => x !== 'id');\r\n const defaultColumns = columns.map((x) => x.field).filter((x) => x !== 'action');\r\n\r\n const columnsNotInExcel = _.difference(defaultColumns, columnsInUploadedExcelSheet);\r\n\r\n if (columnsNotInExcel.length > 0) {\r\n isValid = false;\r\n setErrMessage(`${columnsNotInExcel.join(', ')}`);\r\n return;\r\n }\r\n }\r\n setExcelJson(jsonData.filter((a) => a.id === 0 || data.some((b) => b.id === a.id)));\r\n\r\n if (isValid) {\r\n nextStep();\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n {\r\n errMessage && (\r\n setErrMessage('')}\r\n dismissible\r\n >\r\n Error! Mapping Columns\r\n

\r\n Invalid Excel sheet uploaded. Please upload a valid excel file.\r\n Excel sheet does not contain column:\r\n \r\n {errMessage}\r\n \r\n

\r\n \r\n )\r\n }\r\n\r\n \r\n \r\n \r\n\r\n \r\n 0 ? 'teal--bg' : 'light-grey--sbg'}\r\n onClick={validateExcel}\r\n isDisabled={uploadedFile.length === 0}\r\n />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ExcelImportWizard;","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'WeldLog/';\r\n\r\nconst getWeldLogs = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetWeldLogs?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createWeldLog = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateWeldLog?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteWeldLog = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteWeldLog?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateWeldLog = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateWeldLog`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getReportData = async (projectId, testPackage, contractor) => axiosInstance.get(`${ENDPOINTORIGIN}GetReportData?projectId=${projectId}&testPackage=${testPackage}&contractor=${contractor}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getCompositeReportData = async (projectId, contractor) => axiosInstance.get(`${ENDPOINTORIGIN}GetCompositeReportData?projectId=${projectId}&contractor=${contractor}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getContractors = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetContractors?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getDrawingNos = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetDrawingNos?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst bulkUpdate = async (projectId, model) => axiosInstance.post(`${ENDPOINTORIGIN}BulkUpdate?projectId=${projectId}`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getWeldLogs,\r\n createWeldLog,\r\n deleteWeldLog,\r\n updateWeldLog,\r\n getReportData,\r\n getCompositeReportData,\r\n getContractors,\r\n getDrawingNos,\r\n bulkUpdate\r\n};","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'FlangeLog/';\r\n\r\nconst getFlangeLogs = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetFlangeLogs?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getReportData = async (projectId, testPackage, isTestPackage) => axiosInstance.get(`${ENDPOINTORIGIN}GetReportData?projectId=${projectId}&testPackage=${testPackage}&isTestPackage=${isTestPackage}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createFlangeLog = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateFlangeLog?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteFlangeLog = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteFlangeLog?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateFlangeLog = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateFlangeLog`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst bulkUpdate = async (projectId, model) => axiosInstance.post(`${ENDPOINTORIGIN}BulkUpdate?projectId=${projectId}`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getFlangeLogs,\r\n createFlangeLog,\r\n deleteFlangeLog,\r\n updateFlangeLog,\r\n getReportData,\r\n bulkUpdate\r\n};","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'PsvLog/';\r\n\r\nconst getPsvLogs = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetPsvLogs?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createPsvLog = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreatePsvLog?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deletePsvLog = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeletePsvLog?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updatePsvLog = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdatePsvLog`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getReportData = async (projectId, testPackage) => axiosInstance.get(`${ENDPOINTORIGIN}GetReportData?projectId=${projectId}&testPackage=${testPackage}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getPsvLogHistory = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetPsvLogHistory?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst bulkUpdate = async (projectId, model) => axiosInstance.post(`${ENDPOINTORIGIN}BulkUpdate?projectId=${projectId}`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getPsvLogs,\r\n createPsvLog,\r\n deletePsvLog,\r\n updatePsvLog,\r\n getReportData,\r\n getPsvLogHistory,\r\n bulkUpdate\r\n};","/* eslint-disable no-unused-vars */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useWizard } from 'react-use-wizard';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport { HiArrowSmRight } from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport ContentBlock from './ContentBlock';\r\nimport CustomBlock from './CustomBlock';\r\nimport CheckboxBlock from './CheckboxBlock';\r\nimport Button from './Button';\r\nimport Section from './Section';\r\nimport TextHeader from './TextHeader';\r\n// SERVICES AND HELPERS\r\nimport * as helper from '../helpers/helper';\r\nimport * as testPackageLogService from '../services/project/testPackageLogService';\r\nimport * as weldLogService from '../services/project/weldLogService';\r\nimport * as flangeLogService from '../services/project/flangeLogService';\r\nimport * as psvLogLogService from '../services/project/psvLogService';\r\nimport Overlay from './Overlay';\r\n\r\nconst ExcelImportChangeLogWizard = (props) => {\r\n const {\r\n projectId,\r\n columns,\r\n excelJson,\r\n data,\r\n type,\r\n fetchLogs,\r\n handleModalOnClose\r\n } = props;\r\n const { previousStep, nextStep } = useWizard();\r\n const [viewAll, setViewAll] = useState(false);\r\n const [updatedRows, setUpdatedRows] = useState([]);\r\n const [errors, setErrors] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const updatedValues = helper.findChangedObjects(data, excelJson.filter((x) => x.id !== 0));\r\n setUpdatedRows(updatedValues);\r\n }, []);\r\n\r\n const generateBasedOnChange = (id, key, val) => {\r\n const parent = data.find((x) => x.id === id);\r\n\r\n if (parent) {\r\n return (parent[key] === val)\r\n ? parent[key]\r\n : (\r\n \r\n \r\n \r\n {\r\n parent[key]\r\n && (\r\n \r\n

{parent[key]}

\r\n
\r\n )\r\n }\r\n\r\n \r\n \r\n \r\n \r\n

{val}

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (

Invalid!

);\r\n };\r\n\r\n const applyChange = () => {\r\n let updateFunction;\r\n const model = [...updatedRows, ...(excelJson.filter((x) => x.id === 0))];\r\n\r\n switch (type) {\r\n case 'TESTPACKAGELOG':\r\n updateFunction = testPackageLogService.bulkUpdate(projectId, model);\r\n break;\r\n case 'WELDLOG':\r\n updateFunction = weldLogService.bulkUpdate(projectId, model);\r\n break;\r\n case 'FLANGELOG':\r\n updateFunction = flangeLogService.bulkUpdate(projectId, model);\r\n break;\r\n case 'PSVLOG':\r\n updateFunction = psvLogLogService.bulkUpdate(projectId, model);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n setIsLoading(true);\r\n updateFunction.then((res) => {\r\n fetchLogs();\r\n setErrors(res.errors);\r\n if (res.errors.length === 0) {\r\n handleModalOnClose();\r\n }\r\n }).catch((ex) => {\r\n console.log(ex);\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n\r\n {\r\n isLoading ? (\r\n \r\n ) : (\r\n <>\r\n {\r\n (errors.length > 0)\r\n ? (\r\n <>\r\n \r\n Warning!\r\n

\r\n Aww! Some of the updates were not able to sync.\r\n Please see the error list below.\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n Errors\r\n \r\n \r\n \r\n {\r\n errors.map((error) => (\r\n \r\n \r\n {error}\r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n
\r\n \r\n {excelJson.filter((x) => x.id > 0).length > 0 && (\r\n \r\n \r\n Change/s\r\n \r\n \r\n
\r\n \r\n {\r\n setViewAll((prevVal) => !prevVal);\r\n }}\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n columns.map((x) => x.headerName !== 'Actions'\r\n && (\r\n \r\n {x.headerName}\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n {\r\n (viewAll\r\n ? excelJson.filter((x) => x.id > 0)\r\n : updatedRows).map((row) => (\r\n \r\n {\r\n Object.keys(row).map((key) => key !== 'id' && (\r\n \r\n {generateBasedOnChange(row.id, key, row[key])}\r\n \r\n ))\r\n }\r\n \r\n ))\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n {excelJson.filter((x) => x.id === 0).length > 0 && (\r\n \r\n \r\n \r\n New Addition/s\r\n \r\n \r\n \r\n \r\n {\r\n columns.map((x) => x.headerName !== 'Actions'\r\n && (\r\n \r\n {x.headerName}\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n {\r\n excelJson.filter((x) => x.id === 0).map((row) => (\r\n \r\n {\r\n Object.keys(row).map((key) => key !== 'id' && (\r\n \r\n {row[key]}\r\n \r\n ))\r\n }\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n \r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default ExcelImportChangeLogWizard;","// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as XLSX from 'xlsx';\r\n// COMPONENTS\r\nimport { Wizard } from 'react-use-wizard';\r\n// ICONS1\r\nimport { AiFillFileExcel } from 'react-icons/ai';\r\nimport { BiImport } from 'react-icons/bi';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\nimport Button from './Button';\r\nimport ModalBlock from './ModalBlock';\r\nimport ExcelImportWizard from './ExcelImportWizard';\r\nimport ExcelImportChangeLogWizard from './ExcelImportChangeLogWizard';\r\n// REDUX\r\nimport * as alert from '../redux/alertToastRedux';\r\n\r\nconst ExcelImportExportComponent = (props) => {\r\n const {\r\n columns,\r\n data,\r\n excelSheetName,\r\n showAlert,\r\n type,\r\n fetchLogs,\r\n projectId\r\n } = props;\r\n\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [uploadedFile, setUploadedFile] = useState([]);\r\n const [excelJson, setExcelJson] = useState(null);\r\n\r\n const createExcel = async () => {\r\n const wb = XLSX.utils.book_new();\r\n const ws = XLSX.utils.aoa_to_sheet([]);\r\n\r\n // Create an array for headers based on the columns array\r\n const headers = columns.map((column) => {\r\n if (column.field === 'action') {\r\n return 'Id'; // Replace \"Actions\" with \"id\"\r\n }\r\n return column.headerName;\r\n });\r\n\r\n // Add headers as the first row\r\n XLSX.utils.sheet_add_aoa(ws, [headers], { origin: 'A1' });\r\n\r\n // Populate rows based on the data array and column.field\r\n data.forEach((rowData) => {\r\n const row = columns.map((column) => {\r\n if (column.field === 'action') {\r\n return rowData.id;\r\n }\r\n\r\n return rowData[column.field];\r\n });\r\n\r\n XLSX.utils.sheet_add_aoa(ws, [row], { origin: -1 });\r\n });\r\n\r\n const colWidths = columns.map((x) => ({ width: x.field === 'action' ? 6 : (x.width ? x.width : 150) / 10 }));\r\n ws['!cols'] = colWidths;\r\n\r\n // Add the worksheet to the workbook\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n\r\n // Save the Excel sheet\r\n XLSX.writeFile(wb, `${excelSheetName}.xlsx`);\r\n };\r\n\r\n const handleModalOnClose = () => {\r\n setIsModalOpen(false);\r\n setUploadedFile([]);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n }\r\n />\r\n setIsModalOpen(true)}\r\n iconLeft={}\r\n />\r\n \r\n \r\n\r\n handleModalOnClose()}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default connect(null, { ...alert.actions })(ExcelImportExportComponent);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport {\r\n HiOutlineTrash,\r\n HiDocumentReport,\r\n HiOutlineRefresh\r\n} from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport ExcelImportExportComponent from '../../../../components/ExcelImportExportComponent';\r\n\r\nconst TestPackageLogPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [miniTableData, setMiniTableData] = useState({\r\n ndePercentage: '0%',\r\n hydroPercentage: '0%',\r\n postPercentage: '0%',\r\n packagePercentage: '0%',\r\n hydroCount: '-',\r\n postCount: '-',\r\n packageCount: '-',\r\n hydroAsterickCount: '-',\r\n postAsterickCount: '-',\r\n packageAsterickCount: '-',\r\n unitAsterickCount: '-',\r\n overallTotal: '0'\r\n });\r\n const [psvData, setPsvData] = useState({\r\n totalApiTestReportCompleted: 0,\r\n totalPopTestReportCompleted: 0,\r\n totalQcCompleted: 0,\r\n totalPsv: 0,\r\n });\r\n console.log(psvData);\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getTestPackageLogs();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (source.length > 0) {\r\n calculateMiniTableData(source);\r\n }\r\n }, [source]);\r\n\r\n const getTestPackageLogs = () => {\r\n setIsLoading(true);\r\n testPackageLogService.getTestPackageLogs(projectId).then((res) => {\r\n setSource(res.testPackageLogs);\r\n setOriginalSource(res.testPackageLogs);\r\n setPsvData(res.psvLogData);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const calculateMiniTableData = (arr) => {\r\n const temp = {\r\n ndeCount: arr.filter((x) => x.ndeComplete).length,\r\n hydroCount: arr.filter((x) => x.hydroComplete).length,\r\n postCount: arr.filter((x) => x.postComplete).length,\r\n packageCount: arr.filter((x) => x.packageSold).length,\r\n hydroAsterickCount: arr.filter((x) => x.hydroComplete === '*').length,\r\n postAsterickCount: arr.filter((x) => x.postComplete === '*').length,\r\n packageAsterickCount: arr.filter((x) => x.packageSold === '*').length,\r\n unitAsterickCount: arr.filter((x) => x.unit === '*').length,\r\n overallTotal: arr.filter((x) => x.ndeComplete && x.hydroComplete && x.postComplete && x.packageSold).length\r\n };\r\n\r\n setMiniTableData({\r\n ...temp,\r\n ndePercentage: `${((temp.ndeCount / source.length) * 100).toFixed(2)}%`,\r\n hydroPercentage: `${((temp.hydroCount / source.length) * 100).toFixed(2)}%`,\r\n postPercentage: `${((temp.postCount / source.length) * 100).toFixed(2)}%`,\r\n packagePercentage: `${((temp.packageCount / source.length) * 100).toFixed(2)}%`,\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n testPackageLogService.createTestPackageLog(projectId).then((res) => {\r\n const newLineToAdd = {\r\n id: res.id,\r\n tp: res.tp,\r\n executionWo: null,\r\n unit: '',\r\n mocNumber: '',\r\n jobNumber: null,\r\n packageNumber: res.packageNumber,\r\n lineNumber: null,\r\n testPressure: null,\r\n material: '',\r\n stressRelief: '',\r\n ndePercentage: '',\r\n ndeComplete: null,\r\n hydroComplete: null,\r\n postComplete: null,\r\n packageSold: null,\r\n notes: '',\r\n comments: '',\r\n systems: ''\r\n };\r\n\r\n setSource([...source, newLineToAdd]);\r\n setOriginalSource([...originalSource, newLineToAdd]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n testPackageLogService.updateTestPackageLog(model).then(() => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n temp[indexToReplace] = model;\r\n setSource(temp);\r\n\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n testPackageLogService.deleteTestPackageLog(id).then((res) => {\r\n getTestPackageLogs();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n width: 125,\r\n renderCell: (params) => (\r\n \r\n {\r\n (auth.accessLevel >= 50 && !projectDetail.isCompleted) && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Cell',\r\n text: 'Are you sure you want to delete this cell?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n }\r\n onClick={() => {\r\n history.push(`/project/weld-log-report/${projectId}/${params.row.tp}${params.row.contractor ? `/${encodeURIComponent(params.row.contractor)}` : ''}`);\r\n }}\r\n />\r\n\r\n }\r\n onClick={() => {\r\n history.push(`/project/flange-log-report/${projectId}/${params.row.tp}/true`);\r\n }}\r\n />\r\n \r\n )\r\n },\r\n {\r\n field: 'tp',\r\n headerName: 'TP',\r\n width: 75,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n valueFormatter: ({ value }) => value,\r\n renderCell: (params) => (\r\n \r\n {params.value}\r\n \r\n )\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 160,\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line #',\r\n width: 170,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'executionWo',\r\n headerName: 'Work List #',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n valueFormatter: ({ value }) => value,\r\n },\r\n {\r\n field: 'unit',\r\n headerName: 'Unit',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'jobNumber',\r\n headerName: 'Project Number',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 140,\r\n valueFormatter: ({ value }) => value,\r\n },\r\n {\r\n field: 'systems',\r\n headerName: 'Systems',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'mocNumber',\r\n headerName: 'MOC #',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 140,\r\n valueFormatter: ({ value }) => value,\r\n },\r\n {\r\n field: 'flangeLogs',\r\n headerName: 'Flange Logs',\r\n width: 200,\r\n valueFormatter: ({ value }) => value,\r\n },\r\n {\r\n field: 'testPressure',\r\n headerName: 'Test Pressure',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 150,\r\n },\r\n {\r\n field: 'material',\r\n headerName: 'Material',\r\n width: 110,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'stressRelief',\r\n headerName: 'Stress Relief',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'ndePercentage',\r\n headerName: 'NDE %',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'ndeComplete',\r\n headerName: 'NDE Complete',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'hydroComplete',\r\n headerName: 'Hydro Complete',\r\n width: 220,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'postComplete',\r\n headerName: 'Post Complete',\r\n width: 220,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'packageSold',\r\n headerName: 'Package Sold',\r\n width: 220,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'notes',\r\n headerName: 'Notes',\r\n width: 300,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'comments',\r\n headerName: 'Exception',\r\n width: 300,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 && !projectDetail.isCompleted ? 'Add New Row' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText=\"Refresh Table\"\r\n secondaryButtonIconLeft={}\r\n secondaryButtonOnClick={getTestPackageLogs}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n Total Test Packages\r\n NDE% Complete\r\n Hydro% Complete\r\n Post% Complete\r\n Package Sold%\r\n Overall Total #\r\n \r\n \r\n \r\n \r\n {source.length}\r\n {miniTableData.ndePercentage}\r\n {miniTableData.hydroPercentage}\r\n {miniTableData.postPercentage}\r\n {miniTableData.packagePercentage}\r\n {miniTableData.overallTotal}\r\n \r\n \r\n {/* \r\n \r\n Total PSV Log\r\n QC% Complete\r\n Pop Test% Complete\r\n API% Complete\r\n \r\n \r\n \r\n \r\n {psvData.totalPsv}\r\n {psvData.totalPsv === 0 ? 0 : `${((psvData.totalQcCompleted / psvData.totalPsv) * 100).toFixed(2)}%`}\r\n {psvData.totalPsv === 0 ? 0 : `${((psvData.totalPopTestReportCompleted / psvData.totalPsv) * 100).toFixed(2)}%`}\r\n {psvData.totalPsv === 0 ? 0 : `${((psvData.totalApiTestReportCompleted / psvData.totalPsv) * 100).toFixed(2)}%`}\r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(TestPackageLogPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport {\r\n HiOutlineTrash,\r\n HiDocumentReport,\r\n HiOutlineRefresh\r\n} from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as flangeLogService from '../../../../services/project/flangeLogService';\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport ExcelImportExportComponent from '../../../../components/ExcelImportExportComponent';\r\n\r\nconst FlangeLogPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [testPackageLogs, setTestPackageLogs] = useState([]);\r\n const [psvLogs, setPsvLogs] = useState([]);\r\n const [contractors, setContractors] = useState([]);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getFlangeLogs();\r\n getContractors();\r\n }, []);\r\n\r\n const getFlangeLogs = () => {\r\n setIsLoading(true);\r\n flangeLogService.getFlangeLogs(projectId).then((res) => {\r\n setSource(res.flangeLogs);\r\n setOriginalSource(res.flangeLogs);\r\n setTestPackageLogs(['', ...res.testPackageLogs]);\r\n setPsvLogs(['', ...res.psvLogs]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n testPackageLogService.getContractors(projectId).then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n flangeLogService.createFlangeLog(projectId).then((res) => {\r\n const newAddedLine = {\r\n id: res.id,\r\n projectId,\r\n flangeId: res.flangeId,\r\n burnsId: null,\r\n iso: null,\r\n systemId: null,\r\n testPackageNumber: null,\r\n lineNumber: null,\r\n size: null,\r\n material: null,\r\n rating: null,\r\n flangeFace: null,\r\n acceptedBy: null,\r\n reportedBoltUpdate: null,\r\n typeOfGasketInstalled: null,\r\n typeOfBoltsUsed: null,\r\n threadsFullyEngaged: null,\r\n hammerTest: null,\r\n hammerTestBy: null,\r\n torqueRequired: null,\r\n torqueCompleteBy: null,\r\n dateTorqued: null,\r\n qcCompleted: null,\r\n qcCompleteBy: null,\r\n qaCompleted: null,\r\n qaCompleteBy: null,\r\n moc: null,\r\n // reportedDate: null,\r\n systems: null\r\n };\r\n setSource([...source, newAddedLine]);\r\n setOriginalSource([...originalSource, newAddedLine]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n flangeLogService.updateFlangeLog(model).then(() => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n // model.mocNumber = res.moc;\r\n temp[indexToReplace] = model;\r\n setSource(temp);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n flangeLogService.deleteFlangeLog(id).then((res) => {\r\n getFlangeLogs();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n valueFormatter: (params) => params.id,\r\n renderCell: (params) => (\r\n \r\n {\r\n (auth.accessLevel >= 50 && !projectDetail.isCompleted) && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Row',\r\n text: 'Are you sure you want to delete this row?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n }\r\n onClick={() => {\r\n if (params.row.testPackageNumber) {\r\n history.push(`/project/flange-log-report/${projectId}/${params.row.testPackageNumber}/true`);\r\n } else if (params.row.psvReliefValveNumber) {\r\n history.push(`/project/flange-log-report/${projectId}/${params.row.psvReliefValveNumber}/false`);\r\n } else {\r\n showAlert({ text: 'Select Test Package or PSV # to view report', state: 'warning' });\r\n }\r\n }}\r\n />\r\n \r\n )\r\n },\r\n {\r\n field: 'flangeId',\r\n headerName: 'Flange Id',\r\n width: 125,\r\n valueFormatter: ({ value }) => value,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n renderCell: (params) => (\r\n \r\n {params.value}\r\n \r\n )\r\n },\r\n {\r\n field: 'testPackageNumber',\r\n headerName: 'Test Package #',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 150,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(['', ...testPackageLogs.filter((x) => x)]))\r\n },\r\n {\r\n field: 'psvReliefValveNumber',\r\n headerName: 'PSV Relief Valve #',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 150,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(['', ...psvLogs.filter((x) => x)]))\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 160,\r\n type: 'singleSelect',\r\n valueOptions: ['', ...contractors]\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line #',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'projectNumber',\r\n headerName: 'Project Number',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'moc',\r\n headerName: 'MOC #',\r\n width: 140,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'systems',\r\n headerName: 'Systems',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'iso',\r\n headerName: 'ISO',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'systemId',\r\n headerName: 'System ID',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n },\r\n {\r\n field: 'size',\r\n headerName: 'Size',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 24, 30, 36, 48, 60],\r\n width: 100,\r\n },\r\n {\r\n field: 'material',\r\n headerName: 'Material',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n },\r\n {\r\n field: 'rating',\r\n headerName: 'Rating',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n },\r\n {\r\n field: 'flangeFace',\r\n headerName: 'Flange Face ACC/REJ',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Accepted', 'Rejected']\r\n },\r\n {\r\n field: 'acceptedBy',\r\n headerName: 'Accepted By',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n },\r\n {\r\n field: 'reportedBoltUpdate',\r\n headerName: 'Reported bolt-up date',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n type: 'date',\r\n },\r\n {\r\n field: 'typeOfGasketInstalled',\r\n headerName: 'Type of gasket installed',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n },\r\n {\r\n field: 'typeOfBoltsUsed',\r\n headerName: 'Type of Bolts used',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n },\r\n {\r\n field: 'threadsFullyEngaged',\r\n headerName: 'Threads fully engaged Y/N',\r\n width: 200,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'hammerTest',\r\n headerName: 'Hammer test ACC/REJ',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Accepted', 'Rejected']\r\n },\r\n {\r\n field: 'hammerTestBy',\r\n headerName: 'Hammer test by',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n },\r\n {\r\n field: 'torqueRequired',\r\n headerName: 'Torque req. Y/N',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'torqueCompleteBy',\r\n headerName: 'Torque complete by',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 175,\r\n },\r\n {\r\n field: 'dateTorqued',\r\n headerName: 'Date Torqued',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n // {\r\n // field: 'reportedDate',\r\n // headerName: 'Reported Date',\r\n // width: 150,\r\n // editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n // type: 'date'\r\n // },\r\n {\r\n field: 'qcCompleted',\r\n headerName: 'QC Completed Date',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'qcCompleteBy',\r\n headerName: 'QC Completed By',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'qaCompleted',\r\n headerName: 'QA Completed Date',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'qaCompleteBy',\r\n headerName: 'QA Completed By',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 && !projectDetail.isCompleted ? 'Add New Row' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText=\"Refresh Table\"\r\n secondaryButtonIconLeft={}\r\n secondaryButtonOnClick={getFlangeLogs}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(FlangeLogPage);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'NDERequest/';\r\n\r\nconst getNDERequests = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetNDERequests?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getNDERequestById = async (ndeRequestId) => axiosInstance.get(`${ENDPOINTORIGIN}GetNDERequestById?ndeRequestId=${ndeRequestId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getNDERequestLineItems = async (projectId, ndeRequestId) => axiosInstance.get(`${ENDPOINTORIGIN}GetNDERequestLineItems?projectId=${projectId}&ndeRequestId=${ndeRequestId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createNDERequest = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateNDERequest?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createNDERequestWithLineItems = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}CreateNDERequestWithLineItems`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createNDERequestLineItem = async (ndeRequestId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateNDERequestLineItem?ndeRequestId=${ndeRequestId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteNDERequestLineItem = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteNDERequestLineItem?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteNDERequest = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteNDERequest?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateNDERequestLineItem = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateNDERequestLineItem`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst sendNotificationToNDEContractor = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}SendNotificationToNDEContractor`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst sendNotificationToAdmins = async (projectId, ndeRequestId) => axiosInstance.get(`${ENDPOINTORIGIN}SendNotificationToAdmins?projectId=${projectId}&ndeRequestId=${ndeRequestId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getNDERequestLog = async (ndeRequestId) => axiosInstance.get(`${ENDPOINTORIGIN}GetNDERequestLog?ndeRequestId=${ndeRequestId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst completeNDERequest = async (ndeRequestId) => axiosInstance.put(`${ENDPOINTORIGIN}CompleteNDERequest?ndeRequestId=${ndeRequestId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getNDERequests,\r\n getNDERequestById,\r\n getNDERequestLineItems,\r\n createNDERequest,\r\n createNDERequestWithLineItems,\r\n createNDERequestLineItem,\r\n deleteNDERequestLineItem,\r\n deleteNDERequest,\r\n updateNDERequestLineItem,\r\n sendNotificationToNDEContractor,\r\n sendNotificationToAdmins,\r\n getNDERequestLog,\r\n completeNDERequest\r\n};","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport,\r\n GRID_CHECKBOX_SELECTION_COL_DEF\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport {\r\n HiOutlineTrash,\r\n HiDocumentReport,\r\n HiOutlineRefresh\r\n} from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as weldLogService from '../../../../services/project/weldLogService';\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\nimport * as ndeRequestService from '../../../../services/project/ndeRequestService';\r\n// REDUX\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport ExcelImportExportComponent from '../../../../components/ExcelImportExportComponent';\r\n\r\nconst WeldLogPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [testPackageLogs, setTestPackageLogs] = useState([]);\r\n const [contractors, setContractors] = useState([]);\r\n const [rowSelectionModel, setRowSelectionModel] = useState([]);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getWeldLogs();\r\n getContractors();\r\n }, []);\r\n\r\n const getWeldLogs = () => {\r\n setIsLoading(true);\r\n weldLogService.getWeldLogs(projectId).then((res) => {\r\n setSource(res.weldLogs);\r\n setOriginalSource(res.weldLogs);\r\n setTestPackageLogs(['', ...res.testPackageLogs]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const createNDERequestForm = () => {\r\n const weldsToPost = source.filter((x) => rowSelectionModel.includes(x.id));\r\n if (weldsToPost.length > 0) {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n ndeRequestService.createNDERequestWithLineItems({ projectId, welds: weldsToPost }).then((res) => {\r\n history.push(`/project/nde-request-form/${projectId}/${res.id}`);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n testPackageLogService.getContractors(projectId).then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n weldLogService.createWeldLog(projectId).then((res) => {\r\n const newLineItem = {\r\n id: res.id,\r\n projectId,\r\n hcw: null,\r\n weldNo: res.weldNo,\r\n testPackageNumber: null,\r\n lineNumber: null,\r\n contractor: null,\r\n workListNumber: null,\r\n unit: null,\r\n scopeRevReWork: null,\r\n dwgNo: null,\r\n moc: null,\r\n baseMaterial: null,\r\n pipeSize: null,\r\n pipeSchedule: null,\r\n stencil1: null,\r\n stencil2: null,\r\n stencil3: null,\r\n stencil4: null,\r\n weldType: null,\r\n weldLocation: null,\r\n process: null,\r\n spec: null,\r\n vtDate: null,\r\n vtBy: null,\r\n pmiPercentage: null,\r\n pmiReportNumber: null,\r\n pmiDate: null,\r\n ptMtPercentage: null,\r\n ptMtReportNumber: null,\r\n ptMtDate: null,\r\n ptMtBy: null,\r\n accRej: null,\r\n xrayUtPercentage: null,\r\n xrayUtReportNumber: null,\r\n rtUtDate: null,\r\n weldAcceptedRejected: null,\r\n r1AcceptedRejected: null,\r\n r2AcceptedRejected: null,\r\n afterStressPercentage: null,\r\n afterStressReportNumber: null,\r\n afterStressDate: null,\r\n rtUtAsPercentage: null,\r\n rtUtAsReportNumber: null,\r\n rtUtAsDate: null,\r\n pwhtPercentage: null,\r\n pwhtReportNumber: null,\r\n pwhtDate: null,\r\n bhnPercentage: null,\r\n bhnReportNumber: null,\r\n bhnDate: null,\r\n wpsPqr: null,\r\n systems: null,\r\n comments: null,\r\n bakeOut: null,\r\n preheat: null,\r\n };\r\n setSource([...source, newLineItem]);\r\n setOriginalSource([...source, newLineItem]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n weldLogService.updateWeldLog(model).then(() => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n // model.mocNumber = res.moc;\r\n temp[indexToReplace] = model;\r\n setSource(temp);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n weldLogService.deleteWeldLog(id).then((res) => {\r\n getWeldLogs();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n width: 150,\r\n renderCell: (params) => (\r\n \r\n {\r\n (auth.accessLevel >= 50 && !projectDetail.isCompleted) && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Row',\r\n text: 'Are you sure you want to delete this row?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n }\r\n onClick={() => {\r\n if (params.row.testPackageNumber) {\r\n history.push(`/project/weld-log-report/${projectId}/${params.row.testPackageNumber}${params.row.contractor ? `/${encodeURIComponent(params.row.contractor)}` : ''}`);\r\n } else {\r\n showAlert({ text: 'Select Test Package to view report', state: 'warning' });\r\n }\r\n }}\r\n />\r\n \r\n )\r\n },\r\n {\r\n field: 'hcw',\r\n headerName: 'HCW',\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'weldNo',\r\n headerName: 'Weld No',\r\n width: 75,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n renderCell: (params) => (\r\n \r\n {params.value}\r\n \r\n )\r\n },\r\n {\r\n field: 'testPackageNumber',\r\n headerName: 'Test Package #',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(testPackageLogs.filter((x) => x)))\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: contractors\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line #',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'workListNumber',\r\n headerName: 'Work List Number',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'moc',\r\n headerName: 'MOC #',\r\n width: 140,\r\n valueFormatter: ({ value }) => value,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'systems',\r\n headerName: 'Systems',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'unit',\r\n headerName: 'Unit',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'scopeRevReWork',\r\n headerName: 'Scope / Rev / ReWork',\r\n width: 200,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Scope', 'Rev', 'Rework']\r\n },\r\n {\r\n field: 'dwgNo',\r\n headerName: 'DWG. No.',\r\n width: 120,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'spec',\r\n headerName: 'Pipe Spec',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'baseMaterial',\r\n headerName: 'Base Material',\r\n width: 120,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pipeSize',\r\n headerName: 'Pipe Size',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pipeSchedule',\r\n headerName: 'Pipe Schedule',\r\n width: 150,\r\n type: 'singleSelect',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n valueOptions: ['', '5', '10', '20', '30', 'STD', 'SCH40', '60', 'SCH80', 'XH', '100', '120', '140', '160', 'XXH']\r\n },\r\n {\r\n field: 'stencil1',\r\n headerName: 'Stencil1',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'stencil2',\r\n headerName: 'Stencil2',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'stencil3',\r\n headerName: 'Stencil3',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'stencil4',\r\n headerName: 'Stencil4',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'weldType',\r\n headerName: 'Weld Type',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'BW', 'SW', 'OLET', 'FILLET', 'ATTACHMENT']\r\n },\r\n {\r\n field: 'weldLocation',\r\n headerName: 'Weld Location',\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Shop Weld', 'Field Weld', 'Tie-in Weld']\r\n },\r\n {\r\n field: 'process',\r\n headerName: 'Process',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n // type: 'singleSelect',\r\n // valueOptions: ['', 'GTAW', 'SMAW', 'GT/SM']\r\n },\r\n {\r\n field: 'vtDate',\r\n headerName: 'VT/QC Date',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'vtBy',\r\n headerName: 'VT/QC By',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pmiPercentage',\r\n headerName: 'PMI %',\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A'] // C\r\n },\r\n {\r\n field: 'pmiReportNumber',\r\n headerName: 'PMI Report #',\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pmiDate',\r\n headerName: 'PMI Date',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'ptMtPercentage', // N\r\n headerName: 'PT/MT %',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'ptMtReportNumber',\r\n headerName: 'PT/MT Report #',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'ptMtDate',\r\n headerName: 'PT/MT Date',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'ptMtBy',\r\n headerName: 'PT/MT By',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'accRej',\r\n headerName: 'ACC ./ REJ.',\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.']\r\n },\r\n {\r\n field: 'xrayUtPercentage',\r\n headerName: 'XRAY/UT %', // C\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'xrayUtReportNumber',\r\n headerName: 'XRAY/UT Report #',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'rtUtDate',\r\n headerName: 'RT/UT Date',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'weldAcceptedRejected',\r\n headerName: 'Weld Acc/Rej',\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.', 'TRACER ACC.', 'TRACER REJ.']\r\n },\r\n {\r\n field: 'r1AcceptedRejected',\r\n headerName: 'R1 Acc/Rej',\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.', 'TRACER ACC.', 'TRACER REJ.']\r\n },\r\n {\r\n field: 'r2AcceptedRejected',\r\n headerName: 'R2 Acc/Rej',\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.', 'TRACER ACC.', 'TRACER REJ.']\r\n },\r\n {\r\n field: 'afterStressPercentage',\r\n headerName: 'RT/UT BS %',\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'afterStressReportNumber',\r\n headerName: 'RT/UT BS Report #',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'afterStressDate',\r\n headerName: 'RT/UT BS Date',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'rtUtAsPercentage',\r\n headerName: 'RT/UT AS %',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'rtUtAsReportNumber',\r\n headerName: 'RT/UT AS Report #',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'rtUtAsDate',\r\n headerName: 'RT/UT AS Date',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date',\r\n },\r\n {\r\n field: 'bakeOut',\r\n headerName: 'Bakeout',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'preheat',\r\n headerName: 'Pre Heat',\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pwhtPercentage',\r\n headerName: 'PWHT %', // A\r\n width: 135,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'pwhtReportNumber',\r\n headerName: 'PWHT Report #',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'pwhtDate',\r\n headerName: 'PWHT Date',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'bhnPercentage',\r\n headerName: 'BHN %', // C\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'bhnReportNumber',\r\n headerName: 'BHN Report #', // C\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'bhnDate',\r\n headerName: 'BHN Date', // C\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'wpsPqr',\r\n headerName: 'WPS/PQR',\r\n width: 100,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'comments',\r\n headerName: 'Comments',\r\n width: 300,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 && !projectDetail.isCompleted ? 'Add New Row' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText=\"Refresh Table\"\r\n secondaryButtonIconLeft={}\r\n secondaryButtonOnClick={getWeldLogs}\r\n />\r\n {\r\n (!projectDetail.isCompleted && auth.accessLevel >= 40) && (\r\n \r\n 0 ? 'primary--bg btn-sm' : 'grey--bg btn-sm'}\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Create NDE Request Form',\r\n text: 'Are you sure you want to create a new NDE Request Form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n createNDERequestForm();\r\n }\r\n });\r\n }}\r\n />\r\n \r\n )\r\n }\r\n \r\n\r\n \r\n\r\n \r\n = 40}\r\n rows={source}\r\n columns={columns}\r\n rowsPerPageOptions={[5]}\r\n initialState={{ pinnedColumns: { left: [GRID_CHECKBOX_SELECTION_COL_DEF.field, 'action', 'hcw', 'weldNo', 'testPackageNumber', 'contractor'] } }}\r\n pageSize={100}\r\n ref={apiRef}\r\n keepNonExistentRowsSelected\r\n onSelectionModelChange={(newRowSelectionModel) => {\r\n setRowSelectionModel(newRowSelectionModel);\r\n }}\r\n rowSelectionModel={rowSelectionModel}\r\n components={{\r\n Toolbar: () => (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(WeldLogPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport {\r\n HiOutlineTrash,\r\n // HiDocumentReport,\r\n HiOutlineRefresh\r\n} from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as psvLogService from '../../../../services/project/psvLogService';\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\n// REDUX\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport ExcelImportExportComponent from '../../../../components/ExcelImportExportComponent';\r\n\r\nconst PsvLogPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [testPackageLogs, setTestPackageLogs] = useState([]);\r\n const [contractors, setContractors] = useState([]);\r\n const [psvLogHistory, setPsvLogHistory] = useState([]);\r\n const [isLogModalOpen, setIsLogModalOpen] = useState(false);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getPsvLogs();\r\n getContractors();\r\n }, []);\r\n\r\n const getPsvLogs = () => {\r\n setIsLoading(true);\r\n psvLogService.getPsvLogs(projectId).then((res) => {\r\n setSource(res.psvLogs);\r\n setOriginalSource(res.psvLogs);\r\n setTestPackageLogs(['', ...res.testPackageLogs]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n testPackageLogService.getContractors(projectId).then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n psvLogService.createPsvLog(projectId).then((res) => {\r\n const newLineItem = {\r\n id: res.id,\r\n projectId,\r\n reliefValveNumber: null,\r\n reliefValveSerialNumber: null,\r\n testPackageNumber: null,\r\n lineNumber: null,\r\n contractor: null,\r\n psvSpecSheet: null,\r\n requiredSetPressure: null,\r\n reliefValveMakeModel: null,\r\n unit: null,\r\n systemNumber: null,\r\n pandID: null,\r\n pipeSpec: null,\r\n systemId: null,\r\n psvDescription: null,\r\n moc: null,\r\n inletFlangeSize: null,\r\n inletFlangeRating: null,\r\n outletFlangeSize: null,\r\n outletFlangeRating: null,\r\n inletGasketMaterial: null,\r\n inletBoltMaterial: null,\r\n outletGasketMaterial: null,\r\n outletBoltMaterial: null,\r\n flangeFaceAccRej: null,\r\n reportedBoltupDate: null,\r\n threadsFullyEngaged: null,\r\n hammerTestAccRej: null,\r\n hammerTestBy: null,\r\n torqueRequired: null,\r\n torqueCompletedBy: null,\r\n setPressureVerified: null,\r\n dateTorqued: null,\r\n qCCompleteBy: null,\r\n qCCompletedDate: null,\r\n qACompleteBy: null,\r\n qACompletedDate: null,\r\n popTestDate: null,\r\n popTestReportNumber: null,\r\n finalReviewBy: null,\r\n apiCompleteBy: null,\r\n finalReportDate: null,\r\n comments: null,\r\n apiReportDate: null\r\n };\r\n setSource([...source, newLineItem]);\r\n setOriginalSource([...source, newLineItem]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n psvLogService.updatePsvLog(model).then((res) => {\r\n // const temp = [...source];\r\n // const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n // model.mocNumber = res.moc;\r\n // temp[indexToReplace] = model;\r\n // setSource(temp);\r\n console.log(res);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n psvLogService.deletePsvLog(id).then((res) => {\r\n getPsvLogs();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchPsvLogHistory = () => {\r\n setIsLoading(true);\r\n psvLogService.getPsvLogHistory(projectId).then((res) => {\r\n setIsLogModalOpen(true);\r\n setPsvLogHistory(res);\r\n }).catch((ex) => {\r\n showAlert({ state: 'error', text: ex.message });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n width: 75,\r\n renderCell: (params) => (\r\n \r\n {\r\n (auth.accessLevel >= 50 && !projectDetail.isCompleted) && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Row',\r\n text: 'Are you sure you want to delete this row?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n \r\n )\r\n },\r\n {\r\n field: 'reliefValveNumber',\r\n headerName: 'Relief Valve #',\r\n width: 125,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'reliefValveSerialNumber',\r\n headerName: 'Relief Valve Serial #',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'testPackageNumber',\r\n headerName: 'Test Package #',\r\n width: 130,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(['', ...testPackageLogs.filter((x) => x)]))\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', ...contractors]\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line #',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'psvSpecSheet',\r\n headerName: 'PSV Spec Sheet',\r\n width: 175,\r\n editable: false,\r\n renderCell: (params) => (\r\n params.row.reliefValveNumber && (\r\n \r\n {\r\n history.push(`/project/log-document/${params.row.reliefValveNumber}/${projectId}/PSV Spec Sheet`);\r\n }}\r\n />\r\n \r\n )\r\n )\r\n },\r\n {\r\n field: 'requiredSetPressure',\r\n headerName: 'Required Set Pressure',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'reliefValveMakeModel',\r\n headerName: 'Relief Valve Make/Model',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'unit',\r\n headerName: 'Unit/Unit #',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'systemNumber',\r\n headerName: 'System #',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pandID',\r\n headerName: 'P&ID#',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'pipeSpec',\r\n headerName: 'Pipe Spec',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'systemId',\r\n headerName: 'Work Order #',\r\n width: 175,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'moc',\r\n headerName: 'MOC #',\r\n width: 140,\r\n valueFormatter: ({ value }) => value,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'psvDescription',\r\n headerName: 'PSV Description',\r\n width: 225,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'inletFlangeSize',\r\n headerName: 'Inlet Flange Size',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'inletFlangeRating',\r\n headerName: 'Inlet Flange Rating',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'outletFlangeSize',\r\n headerName: 'Outlet Flange Size',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'outletFlangeRating',\r\n headerName: 'Outlet Flange Rating',\r\n width: 155,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'inletGasketMaterial',\r\n headerName: 'Inlet Gasket Material',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'outletGasketMaterial',\r\n headerName: 'Outlet Gasket Material',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'outletBoltMaterial',\r\n headerName: 'Outlet Bolt Material',\r\n width: 155,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'inletBoltMaterial',\r\n headerName: 'Inlet Bolt Material',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'flangeFaceAccRej',\r\n headerName: 'Flange Face ACC/REJ?',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.']\r\n },\r\n {\r\n field: 'reportedBoltupDate',\r\n headerName: 'Reported Bolt-up Date',\r\n width: 160,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'threadsFullyEngaged',\r\n headerName: 'Threads Fully Engaged Y/N?',\r\n width: 195,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'hammerTestAccRej',\r\n headerName: 'Hammer Test ACC/REJ?',\r\n width: 180,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'ACC.', 'REJ.', 'Qualifier ACC.', 'Qualifier REJ.']\r\n },\r\n {\r\n field: 'hammerTestBy',\r\n headerName: 'Hammer Test By',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'torqueRequired',\r\n headerName: 'Torque Required Y/N?',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'torqueCompletedBy',\r\n headerName: 'Torque Completed By',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'setPressureVerified',\r\n headerName: 'Set Pressure Verified',\r\n width: 165,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'dateTorqued',\r\n headerName: 'Date Torqued',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'qcCompleteBy',\r\n headerName: 'QC Complete By',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'qcCompletedDate',\r\n headerName: 'QC Complete Date',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'qaCompleteBy',\r\n headerName: 'QA Complete By',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'qaCompletedDate',\r\n headerName: 'QA Complete Date',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'popTestReportNumber',\r\n headerName: 'Pop Test Report #',\r\n width: 145,\r\n editable: false,\r\n renderCell: (params) => (\r\n params.row.reliefValveNumber && (\r\n \r\n {\r\n history.push(`/project/log-document/${params.row.reliefValveNumber}/${projectId}/Pop Test Report`);\r\n }}\r\n />\r\n \r\n )\r\n )\r\n },\r\n {\r\n field: 'popTestDate',\r\n headerName: 'Pop Test Date',\r\n width: 150,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'apiReport',\r\n headerName: 'API Report #',\r\n width: 145,\r\n editable: false,\r\n renderCell: (params) => (\r\n params.row.reliefValveNumber && (\r\n \r\n {\r\n history.push(`/project/log-document/${params.row.reliefValveNumber}/${projectId}/API Report`);\r\n }}\r\n />\r\n \r\n )\r\n )\r\n },\r\n {\r\n field: 'apiCompleteBy',\r\n headerName: 'API Complete By',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'apiReportDate',\r\n headerName: 'API Report Date',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'finalReviewBy',\r\n headerName: 'Final Review By',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n },\r\n {\r\n field: 'finalReviewDate',\r\n headerName: 'Final Review Date',\r\n width: 145,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted,\r\n type: 'date'\r\n },\r\n {\r\n field: 'comments',\r\n headerName: 'Comments',\r\n width: 300,\r\n editable: auth.accessLevel >= 40 && !projectDetail.isCompleted\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 && !projectDetail.isCompleted ? 'Add New Row' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText=\"Refresh Table\"\r\n secondaryButtonIconLeft={}\r\n secondaryButtonOnClick={getPsvLogs}\r\n />\r\n\r\n
\r\n \r\n \r\n\r\n {\r\n fetchPsvLogHistory();\r\n }}\r\n />\r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n setIsLogModalOpen(false)}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n psvLogHistory.map((log) => (\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n\r\n \r\n
FromLogDate Time
{log.createdBy}{log.log}{log.dateCreated}
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(PsvLogPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport RecursiveDocumentTree from '../../../../../components/RecursiveDocumentTree';\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\nimport * as projectDocumentService from '../../../../../services/project/projectDocumentService';\r\n// HELPERS\r\nimport * as helper from '../../../../../helpers/helper';\r\nimport constants from '../../../../../constants/constants';\r\n\r\nconst LogDocumentPage = (props) => {\r\n const { auth, showAlert } = props;\r\n const { projectId, folderName, logName } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [folderStructure, setFolderStructure] = useState({\r\n id: 99999,\r\n name: 'Documents',\r\n filePath: null,\r\n children: null\r\n });\r\n\r\n useEffect(() => {\r\n fetchProjectDocuments();\r\n }, []);\r\n\r\n const getParentName = () => {\r\n if (logName === 'Flange Log') {\r\n return logName;\r\n }\r\n\r\n // if (logName === 'Test Package Log') {\r\n // return 'Test Packages';\r\n // }\r\n\r\n return logName;\r\n };\r\n\r\n const fetchProjectDocuments = () => {\r\n setIsLoading(true);\r\n projectDocumentService.getProjectDocumentsByName(projectId, getParentName(), folderName).then((res) => {\r\n setFolderStructure(res);\r\n }).catch(() => {\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addNewFileFolder = (projectDoc) => projectDocumentService.saveProjectDocument(helper.convertJsonToFormData({ ...projectDoc, projectId })).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n\r\n return res.projectDocument;\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const renameFileFolder = (id, name) => projectDocumentService.renameProjectDocument(id, name).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const deleteFileFolder = (id) => projectDocumentService.deleteProjectDocument(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => showAlert({ text: ex.message, state: 'error' }));\r\n\r\n const downloadFile = async (filePath) => {\r\n setIsLoading(true);\r\n try {\r\n window.open(`${constants.API_URL}ProjectDocument/ViewDocument?token=${auth.authToken}&filePath=${filePath}`, '_blank');\r\n } catch (ex) {\r\n showAlert({ text: ex.message, state: 'error' });\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(LogDocumentPage);","/* eslint-disable import/prefer-default-export */\r\nimport axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'DailyForm/';\r\n\r\nconst getDailyForms = async (projectId) => axiosInstance.get(`${ENDPOINTORIGIN}GetDailyForms?projectId=${projectId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteDailyForm = async (formId, type) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteDailyForm?formId=${formId}&type=${type}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getDailyForms,\r\n deleteDailyForm\r\n};","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'DailyInspectionVtForm/';\r\n\r\nconst getDailyInspectionVtFormById = async (id) => axiosInstance.get(`${ENDPOINTORIGIN}GetDailyInspectionVtFormById?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createDailyInspectionVtForm = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateDailyInspectionVtForm?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst submitDailyInspectionVtForm = async (id) => axiosInstance.post(`${ENDPOINTORIGIN}SubmitDailyInspectionVtForm?dailyInspectionVtFormId=${id}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteDailyInspectionVtForm = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteDailyInspectionVtForm?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getDailyInspectionVtFormLineItems = async (projectId, dailyInspectionVtFormId) => axiosInstance.get(`${ENDPOINTORIGIN}GetDailyInspectionVtFormLineItems?projectId=${projectId}&dailyInspectionVtFormId=${dailyInspectionVtFormId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createDailyInspectionVtFormLineItem = async (dailyInspectionVtFormId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateDailyInspectionVtFormLineItem?dailyInspectionVtFormId=${dailyInspectionVtFormId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateDailyInspectionVtFormLineItem = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateDailyInspectionVtFormLineItem`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteDailyInspectionVtFormLineItem = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteDailyInspectionVtFormLineItem?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getDailyInspectionVtFormById,\r\n createDailyInspectionVtForm,\r\n submitDailyInspectionVtForm,\r\n deleteDailyInspectionVtForm,\r\n getDailyInspectionVtFormLineItems,\r\n createDailyInspectionVtFormLineItem,\r\n updateDailyInspectionVtFormLineItem,\r\n deleteDailyInspectionVtFormLineItem\r\n};","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'DailyFlangeLogForm/';\r\n\r\nconst getDailyFlangeLogFormById = async (id) => axiosInstance.get(`${ENDPOINTORIGIN}GetDailyFlangeLogFormById?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createDailyFlangeLogForm = async (projectId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateDailyFlangeLogForm?projectId=${projectId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst submitDailyFlangeLogForm = async (id) => axiosInstance.post(`${ENDPOINTORIGIN}SubmitDailyFlangeLogForm?dailyFlangeLogFormId=${id}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteDailyFlangeLogForm = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteDailyFlangeLogForm?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getDailyFlangeLogFormLineItems = async (projectId, dailyFlangeLogFormId) => axiosInstance.get(`${ENDPOINTORIGIN}GetDailyFlangeLogFormLineItems?projectId=${projectId}&dailyFlangeLogFormId=${dailyFlangeLogFormId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createDailyFlangeLogFormLineItem = async (dailyFlangeLogFormId) => axiosInstance.post(`${ENDPOINTORIGIN}CreateDailyFlangeLogFormLineItem?dailyFlangeLogFormId=${dailyFlangeLogFormId}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateDailyFlangeLogFormLineItem = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateDailyFlangeLogFormLineItem`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteDailyFlangeLogFormLineItem = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteDailyFlangeLogFormLineItem?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getDailyFlangeLogFormById,\r\n createDailyFlangeLogForm,\r\n submitDailyFlangeLogForm,\r\n deleteDailyFlangeLogForm,\r\n getDailyFlangeLogFormLineItems,\r\n createDailyFlangeLogFormLineItem,\r\n updateDailyFlangeLogFormLineItem,\r\n deleteDailyFlangeLogFormLineItem\r\n};","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport { TbChecks, TbAlertCircle } from 'react-icons/tb';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport Button from '../../../../components/Button';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n// SERVICES\r\nimport * as dailyFormService from '../../../../services/project/dailyFormService';\r\nimport * as dailyInspectionVtForm from '../../../../services/project/dailyInspectionVtFormService';\r\nimport * as dailyFlangeLogForm from '../../../../services/project/dailyFlangeLogFormService';\r\n\r\nconst DailyFormsPage = (props) => {\r\n const {\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isConfirmDeleteModalVisible, setIsConfirmDeleteModalVisible] = useState(false);\r\n const [forms, setForms] = useState([]);\r\n const { projectId } = useParams();\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n useEffect(() => {\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getAllForms();\r\n }, []);\r\n\r\n const getAllForms = () => {\r\n setIsLoading(true);\r\n dailyFormService.getDailyForms(projectId).then((res) => {\r\n setForms(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { id, name } = forms[dataIndex];\r\n\r\n return (\r\n (\r\n \r\n \r\n\r\n {\r\n !projectDetail.isCompleted && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Form',\r\n text: 'Are you sure you want to delete this form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n dailyFormService.deleteDailyForm(id, name === 'Daily Flange Inspection Report' ? 'Flange' : 'VT').then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllForms();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n hideConfirmModal();\r\n });\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n )\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'Form',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'createdBy',\r\n label: 'Created By',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'createdOn',\r\n label: 'Created On',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'submittedBy',\r\n label: 'Submitted By',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'submittedOn',\r\n label: 'Submitted On',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'isSubmitted',\r\n label: 'Submitted?',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { isSubmitted } = forms[dataIndex];\r\n\r\n return (\r\n

{isSubmitted ? : }

\r\n );\r\n }\r\n },\r\n }\r\n ];\r\n\r\n const createDailyInspectionVtForm = () => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n dailyInspectionVtForm.createDailyInspectionVtForm(projectId).then(() => {\r\n getAllForms();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const createDailyFLangeLogForm = () => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n dailyFlangeLogForm.createDailyFlangeLogForm(projectId).then(() => {\r\n getAllForms();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={() => showConfirmModal({\r\n title: 'Create Daily Inspection VT Form?',\r\n text: 'Are you sure you want to create a new Daily Inspection VT Form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n createDailyInspectionVtForm();\r\n }\r\n })}\r\n secondaryButtonText={!projectDetail.isCompleted ? 'New Flange Inspection Report' : ''}\r\n secondaryButtonIconLeft={!projectDetail.isCompleted && }\r\n secondaryButtonOnClick={() => showConfirmModal({\r\n title: 'Create Flange Inspection Report?',\r\n text: 'Are you sure you want to create a new Flange Inspection Report?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n createDailyFLangeLogForm();\r\n }\r\n })}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* CONFIRM DELETE MODAL */}\r\n { }}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"grey--bg\"\r\n onHide={() => {\r\n setIsConfirmDeleteModalVisible(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(DailyFormsPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\nimport { HiOutlineTrash } from 'react-icons/hi';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as dailyInspectionVtFormService from '../../../../services/project/dailyInspectionVtFormService';\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n\r\nconst DailyInspectionVtFormPage = (props) => {\r\n const {\r\n // auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId, dailyInspectionVtFormId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [testPackageLogs, setTestPackageLogs] = useState([]);\r\n const [weldNos, setWeldNos] = useState([]);\r\n const [vtForm, setVtForm] = useState({ isSubmitted: true });\r\n const [contractors, setContractors] = useState([]);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getLineItems();\r\n getVtForm();\r\n getContractors();\r\n }, []);\r\n\r\n const getVtForm = () => {\r\n dailyInspectionVtFormService.getDailyInspectionVtFormById(dailyInspectionVtFormId).then((res) => {\r\n setVtForm(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n });\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n testPackageLogService.getContractors(projectId).then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getLineItems = () => {\r\n setIsLoading(true);\r\n dailyInspectionVtFormService.getDailyInspectionVtFormLineItems(projectId, dailyInspectionVtFormId).then((res) => {\r\n setSource(res.lineItems);\r\n setOriginalSource(res.lineItems);\r\n setTestPackageLogs(['', ...res.testPackageLogs]);\r\n setWeldNos(['', ...res.weldLogs]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n dailyInspectionVtFormService.createDailyInspectionVtFormLineItem(dailyInspectionVtFormId).then((res) => {\r\n const newLineItem = {\r\n id: res.id,\r\n dailyInspectionVtFormId,\r\n weldNo: null,\r\n testPackageNo: null,\r\n welderId: null,\r\n size: null,\r\n sch: null,\r\n material: null,\r\n lineSpec: null,\r\n lineNumber: null,\r\n process: null,\r\n vtOkRej: null,\r\n vtBy: null,\r\n date: moment(res.date).format('MM/DD/YYYY'),\r\n };\r\n\r\n setSource([...source, newLineItem]);\r\n setOriginalSource([...originalSource, newLineItem]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n dailyInspectionVtFormService.updateDailyInspectionVtFormLineItem({ ...model, projectId }).then((res) => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n model = { ...model, ...res };\r\n temp[indexToReplace] = model;\r\n setSource(temp);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n dailyInspectionVtFormService.deleteDailyInspectionVtFormLineItem(id).then((res) => {\r\n getLineItems();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const submitForm = () => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n dailyInspectionVtFormService.submitDailyInspectionVtForm(dailyInspectionVtFormId).then(() => {\r\n history.push(`/project/daily-forms/${projectId}`);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Action',\r\n hide: vtForm.isSubmitted || projectDetail.isCompleted,\r\n sortable: false,\r\n renderCell: (params) => (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Cell',\r\n text: 'Are you sure you want to delete this cell?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n },\r\n {\r\n field: 'weldNo',\r\n headerName: 'Weld#',\r\n width: 85,\r\n valueFormatter: ({ value }) => value,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(weldNos.filter((x) => x))),\r\n editable: !vtForm.isSubmitted,\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n width: 160,\r\n type: 'singleSelect',\r\n editable: !vtForm.isSubmitted,\r\n valueOptions: contractors\r\n },\r\n {\r\n field: 'testPackageNo',\r\n headerName: 'Test Package No',\r\n width: 150,\r\n // editable: !vtForm.isSubmitted,\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(testPackageLogs.filter((x) => x)))\r\n },\r\n // {\r\n // field: 'welderId',\r\n // headerName: 'Welder Id',\r\n // width: 105,\r\n // editable: !vtForm.isSubmitted,\r\n // },\r\n {\r\n field: 'size',\r\n headerName: 'Size',\r\n // editable: !vtForm.isSubmitted,\r\n width: 100,\r\n },\r\n {\r\n field: 'sch',\r\n headerName: 'Sch',\r\n // editable: !vtForm.isSubmitted,\r\n width: 125,\r\n },\r\n {\r\n field: 'material',\r\n headerName: 'Material',\r\n // editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'lineSpec',\r\n headerName: 'Line Spec',\r\n // editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line Number',\r\n // editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'stencil1',\r\n headerName: 'Stencil1',\r\n editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'stencil2',\r\n headerName: 'Stencil2',\r\n editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'stencil3',\r\n headerName: 'Stencil3',\r\n editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'stencil4',\r\n headerName: 'Stencil4',\r\n editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'process',\r\n headerName: 'Process',\r\n editable: !vtForm.isSubmitted,\r\n width: 150,\r\n },\r\n {\r\n field: 'vtOkRej',\r\n headerName: 'VT OK/REJ',\r\n editable: !vtForm.isSubmitted,\r\n width: 175,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Ok', 'Rejected']\r\n },\r\n {\r\n field: 'vtBy',\r\n headerName: 'Vt By',\r\n editable: !vtForm.isSubmitted,\r\n },\r\n {\r\n field: 'date',\r\n headerName: 'Date',\r\n width: 150,\r\n editable: !vtForm.isSubmitted,\r\n type: 'date'\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText={!vtForm.isSubmitted && !projectDetail.isCompleted ? 'Submit Form' : ''}\r\n secondaryButtonOnClick={() => {\r\n showConfirmModal({\r\n title: 'Submit Form',\r\n text: 'Are you sure you want to submit this form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => submitForm()\r\n });\r\n }}\r\n />\r\n \r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n // autoHeight\r\n // showCellRightBorder\r\n // showColumnRightBorder\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(DailyInspectionVtFormPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n// HELPERS & SERVICES\r\nimport * as projectService from '../../../../services/project/projectService';\r\n\r\nconst ProjectAccessPage = (props) => {\r\n const { showAlert } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [dataAdmins, setDataAdmins] = useState([]);\r\n const [clientUsers, setClientUsers] = useState([]);\r\n const [contractorUsers, setContractorUsers] = useState([]);\r\n\r\n useEffect(() => {\r\n fetchProjectUsers();\r\n }, []);\r\n\r\n const fetchProjectUsers = () => {\r\n setIsLoading(true);\r\n\r\n projectService.getUsersForProjectAccess(projectId).then((res) => {\r\n setClientUsers(res.clientUsers);\r\n setContractorUsers(res.contractorUsers);\r\n setDataAdmins(res.dataAdmins);\r\n }).catch((ex) => {\r\n showAlert({ Text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleDataAdminChecked = (userId, isChecked) => {\r\n const tempDataAdminUsers = [...dataAdmins];\r\n const user = tempDataAdminUsers.find((x) => x.userId === userId);\r\n user.isChecked = isChecked;\r\n\r\n setDataAdmins(tempDataAdminUsers);\r\n toggleAssignment(userId, isChecked);\r\n };\r\n\r\n const handleClientChecked = (userId, isChecked) => {\r\n const tempClientUsers = [...clientUsers];\r\n const user = tempClientUsers.find((x) => x.userId === userId);\r\n user.isChecked = isChecked;\r\n\r\n setClientUsers(tempClientUsers);\r\n toggleAssignment(userId, isChecked);\r\n };\r\n\r\n const handleContractorChecked = (contractorName, userId, isChecked) => {\r\n const tempContractorUsers = [...contractorUsers];\r\n const contractor = tempContractorUsers.find((x) => x.contractor === contractorName);\r\n const user = contractor.users.find((x) => x.userId === userId);\r\n user.isChecked = isChecked;\r\n\r\n setContractorUsers(tempContractorUsers);\r\n toggleAssignment(userId, isChecked);\r\n };\r\n\r\n const toggleAssignment = (userId, isChecked) => {\r\n if (isChecked) {\r\n projectService.assignProjectUsers(projectId, userId).then(() => {\r\n\r\n }).catch((ex) => {\r\n showAlert({ Text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n } else {\r\n projectService.removeUserAssignment(projectId, userId).then(() => {\r\n\r\n }).catch((ex) => {\r\n showAlert({ Text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Data Admins\r\n \r\n \r\n \r\n \r\n \r\n Access\r\n Name\r\n Role\r\n \r\n \r\n \r\n {\r\n dataAdmins.map((user) => (\r\n \r\n \r\n handleDataAdminChecked(user.userId, target.checked)}\r\n />\r\n \r\n {user.name}\r\n {user.role}\r\n \r\n ))\r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client Users\r\n \r\n \r\n \r\n \r\n \r\n Access\r\n Name\r\n Role\r\n \r\n \r\n \r\n {\r\n clientUsers.map((client) => (\r\n \r\n \r\n handleClientChecked(client.userId, target.checked)}\r\n />\r\n \r\n {client.name}\r\n {client.role}\r\n \r\n ))\r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Contractor Users\r\n \r\n \r\n {\r\n contractorUsers.map((contractor) => (\r\n \r\n \r\n \r\n {contractor.contractor}\r\n \r\n \r\n \r\n \r\n Access\r\n Name\r\n Role\r\n \r\n \r\n \r\n {\r\n contractor.users.map((user) => (\r\n \r\n \r\n handleContractorChecked(contractor.contractor, user.userId, target.checked)}\r\n />\r\n \r\n {user.name}\r\n {user.role}\r\n \r\n ))\r\n }\r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(ProjectAccessPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport { TbChecks, TbAlertCircle } from 'react-icons/tb';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport Button from '../../../../components/Button';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n// SERVICES\r\nimport * as ndeRequestService from '../../../../services/project/ndeRequestService';\r\n\r\nconst NDERequestListingPage = (props) => {\r\n const {\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n projectDetail,\r\n setProjectDetails,\r\n auth\r\n } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isConfirmDeleteModalVisible, setIsConfirmDeleteModalVisible] = useState(false);\r\n const [forms, setForms] = useState([]);\r\n const { projectId } = useParams();\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n useEffect(() => {\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getAllForms();\r\n }, []);\r\n\r\n const getAllForms = () => {\r\n setIsLoading(true);\r\n ndeRequestService.getNDERequests(projectId).then((res) => {\r\n setForms(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { id } = forms[dataIndex];\r\n\r\n return (\r\n (\r\n \r\n \r\n {\r\n auth.accessLevel >= 50 && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete NDE Request Form',\r\n text: 'Are you sure you want to delete this form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n ndeRequestService.deleteNDERequest(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllForms();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n hideConfirmModal();\r\n });\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n )\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'Form',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'createdBy',\r\n label: 'Created By',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'createdOn',\r\n label: 'Created On',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'completedBy',\r\n label: 'Completed By',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'completedOn',\r\n label: 'Completed On',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'isCompleted',\r\n label: 'Is Completed?',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { isCompleted } = forms[dataIndex];\r\n\r\n return (\r\n

{isCompleted ? : }

\r\n );\r\n }\r\n },\r\n }\r\n ];\r\n\r\n const createNDERequestForm = () => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n ndeRequestService.createNDERequest(projectId).then(() => {\r\n getAllForms();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 ? '' : ''}\r\n primaryButtonIconLeft={!projectDetail.isCompleted && }\r\n primaryButtonOnClick={() => showConfirmModal({\r\n title: 'Create NDE Request Form?',\r\n text: 'Are you sure you want to create a new NDE Request Form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n createNDERequestForm();\r\n }\r\n })}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* CONFIRM DELETE MODAL */}\r\n { }}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"grey--bg\"\r\n onHide={() => {\r\n setIsConfirmDeleteModalVisible(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(NDERequestListingPage);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Status/';\r\n\r\nconst getStatuses = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetStatuses`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getStatusById = async (id) => axiosInstance.get(`${ENDPOINTORIGIN}GetStatusById?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst saveStatus = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}SaveStatus`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteStatus = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteStatus?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getStatuses,\r\n getStatusById,\r\n saveStatus,\r\n deleteStatus,\r\n};","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n id: Yup.number(),\r\n name: Yup.string(50).required('Status Name is required').max(50, 'Please use less than 50 characters'),\r\n colorCode: Yup.string().required(),\r\n requiresComment: Yup.boolean().nullable(),\r\n});","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable react/no-children-prop */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\nimport { CirclePicker } from 'react-color';\r\n// ICONS\r\nimport { FiCheckCircle } from 'react-icons/fi';\r\nimport { FaSquare } from 'react-icons/fa';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport Button from '../../../../../components/Button';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\nimport Overlay from '../../../../../components/Overlay';\r\n// import CheckboxBlock from '../../../../../components/CheckboxBlock';\r\n// SERVICES AND HELPERS\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\nimport * as statusService from '../../../../../services/management/statusService';\r\nimport * as helper from '../../../../../helpers/helper';\r\nimport StatusValidator from '../../../../../helpers/validators/management/status/StatusValidator';\r\n\r\nconst initialModel = {\r\n id: 0,\r\n name: '',\r\n colorCode: '#000000',\r\n requiresComment: true\r\n};\r\n\r\nconst CustomStatusListingPage = (props) => {\r\n const { showAlert, showConfirmModal, hideConfirmModal } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [modalVisible, setModalVisible] = useState(false);\r\n const [statuses, setStatuses] = useState([]);\r\n const [statusModel, setStatusModel] = useState(initialModel);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n useEffect(() => {\r\n getAllStatuses();\r\n }, []);\r\n\r\n const formik = useFormik({\r\n initialValues: statusModel,\r\n validationSchema: StatusValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n saveStatus(values);\r\n },\r\n });\r\n\r\n const getAllStatuses = () => {\r\n setIsLoading(true);\r\n statusService.getStatuses().then((res) => {\r\n setStatuses(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const saveStatus = (model) => {\r\n setIsLoading(true);\r\n statusService.saveStatus(model).then((res) => {\r\n handleModalClose();\r\n getAllStatuses();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchStatusById = (id) => {\r\n setIsLoading(true);\r\n\r\n statusService.getStatusById(id).then((res) => {\r\n setStatusModel(res);\r\n setModalVisible(true);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const deleteStatus = (id) => {\r\n setIsLoading(true);\r\n\r\n statusService.deleteStatus(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllStatuses();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n hideConfirmModal();\r\n });\r\n };\r\n\r\n const handleModalClose = () => {\r\n setModalVisible(false);\r\n setStatusModel(initialModel);\r\n formik.resetForm();\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const options = {\r\n selectableRows: 'none',\r\n download: true,\r\n print: false,\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { isSystemDefined, id } = statuses[dataIndex];\r\n\r\n return (\r\n \r\n {\r\n fetchStatusById(statuses[dataIndex].id);\r\n }}\r\n />\r\n {\r\n (!isSystemDefined)\r\n && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Status',\r\n text: 'Are you sure you want to delete this status?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => deleteStatus(id)\r\n });\r\n }}\r\n />\r\n )\r\n\r\n }\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'Status Name',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { name, isSystemDefined } = statuses[dataIndex];\r\n\r\n return (\r\n

\r\n {name}\r\n {isSystemDefined && (System)}\r\n

\r\n );\r\n }\r\n },\r\n },\r\n {\r\n name: 'colorCode',\r\n label: 'Status',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => {\r\n const { colorCode, name } = statuses[dataIndex];\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n },\r\n },\r\n // {\r\n // name: 'requiresComment',\r\n // label: 'Requires Comment?',\r\n // options: {\r\n // ...columnOptions,\r\n // customBodyRenderLite: (dataIndex) => (statuses[dataIndex].requiresComment ? 'Yes' : 'No')\r\n // }\r\n // },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={() => setModalVisible(true)}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* VIEW/UPDATE MODAL */}\r\n formik.handleSubmit()}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"danger--bg\"\r\n onHide={() => handleModalClose()}\r\n children={\r\n (\r\n \r\n
\r\n \r\n }\r\n />\r\n \r\n {\r\n formik.setFieldValue('colorCode', c.hex);\r\n }}\r\n />\r\n \r\n {\r\n formik.values.name\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n {/* \r\n \r\n */}\r\n \r\n
\r\n
\r\n )\r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(CustomStatusListingPage);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Client/';\r\n\r\nconst getAllClients = async (isActive) => axiosInstance.get(`${ENDPOINTORIGIN}GetAllClients?isActive=${isActive}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getClientById = async (clientId) => axiosInstance.get(`${ENDPOINTORIGIN}GetClientById?clientId=${clientId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createClient = async (client) => axiosInstance.post(`${ENDPOINTORIGIN}CreateClient`, client, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateClient = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateClient`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteClient = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteClient?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst toggleClientMenuItem = async (id) => axiosInstance.put(`${ENDPOINTORIGIN}ToggleClientMenuItem?id=${id}`, {}, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getAvailableUsers = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAvailableUsers`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst assignClientUsers = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}AssignClientUsers`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst removeUserAssignment = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}RemoveUserAssignment?clientUserId=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getAllClients,\r\n getClientById,\r\n createClient,\r\n updateClient,\r\n deleteClient,\r\n toggleClientMenuItem,\r\n getAvailableUsers,\r\n assignClientUsers,\r\n removeUserAssignment\r\n};","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { RiBuildingLine } from 'react-icons/ri';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport Button from '../../../../../components/Button';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n// SERVICES AND HELPERS\r\nimport * as clientService from '../../../../../services/management/clientService';\r\n\r\nconst ClientListingPage = (props) => {\r\n const { showAlert, showConfirmModal, hideConfirmModal, auth } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [clients, setClients] = useState([]);\r\n\r\n useEffect(() => {\r\n getClients();\r\n }, []);\r\n\r\n const getClients = () => {\r\n setIsLoading(true);\r\n clientService.getAllClients('').then((res) => {\r\n setClients(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const deleteClient = (id) => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n clientService.deleteClient(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getClients();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const options = {\r\n selectableRows: 'none',\r\n download: true,\r\n print: false,\r\n\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n \r\n {\r\n auth.accessLevel >= 50 && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Client',\r\n text: 'Are you sure you want to delete this client?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n deleteClient(clients[dataIndex].id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'Client',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'location',\r\n label: 'Location',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'zipCode',\r\n label: 'Zip Code',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'isActive',\r\n label: 'Is Client Active?',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => (

{clients[dataIndex].isActive ? 'Yes' : 'No'}

)\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonTo=\"/management/client\"\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(ClientListingPage);","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n name: Yup.string().required('Name is required').max(500),\r\n contactName: Yup.string().nullable().max(150),\r\n contactPhone: Yup.string().nullable().max(20),\r\n contactEmail: Yup.string().nullable().email('Please enter a valid email address').max(100),\r\n address1: Yup.string().required('Address is required').max(150),\r\n address2: Yup.string().nullable().max(150),\r\n city: Yup.string().required('City is required').max(150),\r\n state: Yup.string().required('State is required').max(50),\r\n zipCode: Yup.string().required('Zip Code is required').max(10),\r\n isActive: Yup.bool().nullable(),\r\n});","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\n// CUSTOM COMPONENTS\r\nimport Overlay from '../../../../../components/Overlay';\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport CheckboxBlock from '../../../../../components/CheckboxBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\nimport Button from '../../../../../components/Button';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\nimport SelectBlock from '../../../../../components/SelectBlock';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n// SERVICES AND HELPERS\r\nimport * as clientService from '../../../../../services/management/clientService';\r\nimport ClientValidator from '../../../../../helpers/validators/management/client/ClientValidator';\r\nimport * as helper from '../../../../../helpers/helper';\r\n\r\nconst initialClientModel = {\r\n id: 0,\r\n name: '',\r\n contactName: '',\r\n contactPhone: '',\r\n contactEmail: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n state: '',\r\n zipCode: '',\r\n isActive: true,\r\n menus: []\r\n};\r\n\r\nconst ClientManagementPage = (props) => {\r\n const {\r\n showAlert,\r\n history,\r\n auth,\r\n showConfirmModal,\r\n hideConfirmModal\r\n } = props;\r\n const { clientId } = useParams();\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [client, setClient] = useState(initialClientModel);\r\n const [projects, setProjects] = useState([]);\r\n const [isModalVisible, setIsModalVisible] = useState(false);\r\n const [users, setUsers] = useState([]);\r\n const [selectedUserOptions, setSelectedUserOptions] = useState([]);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n useEffect(() => {\r\n if (clientId) {\r\n populateForm();\r\n }\r\n }, []);\r\n\r\n const formik = useFormik({\r\n initialValues: client,\r\n validationSchema: ClientValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n if (clientId) {\r\n updateClient(values);\r\n } else {\r\n createClient(values);\r\n }\r\n },\r\n });\r\n\r\n const populateForm = () => {\r\n setIsLoading(true);\r\n clientService.getClientById(clientId).then((res) => {\r\n setClient(res.client);\r\n setProjects(res.projects);\r\n setUsers(res.availableUsers.map((x) => helper.setToOptionModel(`${x.firstName} ${x.lastName} (${x.role})`, x.id)));\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const createClient = (model) => {\r\n setIsLoading(true);\r\n clientService.createClient(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n history.push(`/management/client/edit/${res.id}`);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const updateClient = (model) => {\r\n setIsLoading(true);\r\n clientService.updateClient(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const removeUserAssignment = (id) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n clientService.removeUserAssignment(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n populateForm();\r\n handleModalClose();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n \r\n\r\n {\r\n auth.accessLevel >= 50 && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Client',\r\n text: 'Are you sure you want to delete this client?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n hideConfirmModal();\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'projectNumber',\r\n label: 'Project#',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'name',\r\n label: 'ProjectName',\r\n options: columnOptions,\r\n }\r\n ];\r\n\r\n const options = {\r\n selectableRows: 'none',\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n };\r\n\r\n const projectColumns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n display: auth.accessLevel >= 40,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n {\r\n showConfirmModal({\r\n title: 'Remove User',\r\n text: 'Are you sure you want to remove this user from this client?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => removeUserAssignment(client.users[dataIndex].id)\r\n });\r\n }}\r\n />\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'User',\r\n },\r\n {\r\n name: 'role',\r\n label: 'Role',\r\n options: columnOptions,\r\n },\r\n ];\r\n\r\n const handleModalClose = () => {\r\n setIsModalVisible(false);\r\n\r\n setTimeout(() => {\r\n setSelectedUserOptions([]);\r\n }, 100);\r\n };\r\n\r\n const saveClientUsers = () => {\r\n if (selectedUserOptions.length <= 0) {\r\n return;\r\n }\r\n setIsLoading(true);\r\n clientService.assignClientUsers({\r\n clientId: parseInt(clientId, 10),\r\n users: selectedUserOptions\r\n }).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n populateForm();\r\n handleModalClose();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {\r\n (clientId)\r\n && (\r\n <>\r\n \r\n = 40 ? 'Assign User' : ''}\r\n primaryButtonIconLeft={\r\n \r\n }\r\n primaryButtonOnClick={() => {\r\n setIsModalVisible(true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n = 40 ? 'Add Project' : ''}\r\n primaryButtonIconLeft={\r\n \r\n }\r\n primaryButtonOnClick={() => {\r\n history.push('/project/create');\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n \r\n history.push('/management/clients')}\r\n />\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n {/* ASSIGNMENT MODAL */}\r\n 0 ? 'Add' : ''}\r\n primaryModalActionColor=\"primary--bg\"\r\n primaryModalActionOnClick={saveClientUsers}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"danger--bg\"\r\n onHide={handleModalClose}\r\n >\r\n \r\n
\r\n \r\n {\r\n users.length > 0 ? (\r\n {\r\n selectedOpt = selectedOpt === null ? [] : selectedOpt;\r\n setSelectedUserOptions(selectedOpt);\r\n }}\r\n />\r\n )\r\n : (\r\n \r\n No Users Available. All the users are assigned to other clients.\r\n \r\n )\r\n }\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n})(ClientManagementPage);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'Contractor/';\r\n\r\nconst getAllContractors = async (isActive) => axiosInstance.get(`${ENDPOINTORIGIN}GetAllContractors?isActive=${isActive}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getContractorById = async (contractorId) => axiosInstance.get(`${ENDPOINTORIGIN}GetContractorById?contractorId=${contractorId}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst createContractor = async (contractor) => axiosInstance.post(`${ENDPOINTORIGIN}CreateContractor`, contractor, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst updateContractor = async (model) => axiosInstance.put(`${ENDPOINTORIGIN}UpdateContractor`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteContractor = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}DeleteContractor?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getAvailableUsers = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAvailableUsers`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst removeUserAssignment = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}RemoveUserAssignment?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst assignContractorUsers = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}AssignContractorUsers`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getAllContractors,\r\n getContractorById,\r\n createContractor,\r\n updateContractor,\r\n deleteContractor,\r\n getAvailableUsers,\r\n removeUserAssignment,\r\n assignContractorUsers\r\n};","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { RiBuildingLine } from 'react-icons/ri';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport Button from '../../../../../components/Button';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n// SERVICES AND HELPERS\r\nimport * as contractorService from '../../../../../services/management/contractorService';\r\n\r\nconst ContractorListingPage = (props) => {\r\n const { showAlert, auth, showConfirmModal, hideConfirmModal } = props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [contractors, setContractors] = useState([]);\r\n\r\n useEffect(() => {\r\n getContractors();\r\n }, []);\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n contractorService.getAllContractors('').then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const deleteContractor = (id) => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n contractorService.deleteContractor(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getContractors();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true\r\n };\r\n\r\n const options = {\r\n selectableRows: 'none',\r\n download: true,\r\n print: false,\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n \r\n\r\n {\r\n auth.accessLevel >= 50 && (\r\n {\r\n showConfirmModal({\r\n title: 'Delete Contractor',\r\n text: 'Are you sure you want to delete this contractor?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n deleteContractor(contractors[dataIndex].id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'Contractor',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'location',\r\n label: 'Location',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'zipCode',\r\n label: 'Zip Code',\r\n options: columnOptions,\r\n },\r\n {\r\n name: 'isActive',\r\n label: 'Is Contractor Active?',\r\n options: {\r\n ...columnOptions,\r\n customBodyRenderLite: (dataIndex) => (

{contractors[dataIndex].isActive ? 'Yes' : 'No'}

)\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonTo=\"/management/contractor\"\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n { ...alert.actions, ...confirmModal.actions }\r\n)(ContractorListingPage);","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n name: Yup.string().required('Name is required').max(500),\r\n address1: Yup.string().required('Address is required').max(150),\r\n address2: Yup.string().nullable().max(150),\r\n city: Yup.string().required('City is required').max(150),\r\n state: Yup.string().required('State is required').max(50),\r\n zipCode: Yup.string().required('Zip Code is required').max(10),\r\n isActive: Yup.bool().nullable(),\r\n});","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable import/order */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\nimport { useParams } from 'react-router-dom';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// CUSTOM COMPONENTS\r\nimport Overlay from '../../../../../components/Overlay';\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport CheckboxBlock from '../../../../../components/CheckboxBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\nimport Button from '../../../../../components/Button';\r\nimport SelectBlock from '../../../../../components/SelectBlock';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n// SERVICES AND HELPERS\r\nimport * as contractorService from '../../../../../services/management/contractorService';\r\nimport ContractorValidator from '../../../../../helpers/validators/management/contractor/ContractorValidator';\r\nimport * as helper from '../../../../../helpers/helper';\r\n\r\nconst initialContractorModel = {\r\n id: 0,\r\n name: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n state: '',\r\n zipCode: '',\r\n isActive: true,\r\n users: []\r\n};\r\n\r\nconst ContractorManagementPage = (props) => {\r\n const {\r\n showAlert,\r\n history,\r\n showConfirmModal,\r\n hideConfirmModal\r\n } = props;\r\n const { contractorId } = useParams();\r\n const [isModalVisible, setIsModalVisible] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [contractor, setContractor] = useState(initialContractorModel);\r\n const [users, setUsers] = useState([]);\r\n const [selectedUserOptions, setSelectedUserOptions] = useState([]);\r\n\r\n useEffect(() => {\r\n if (contractorId) {\r\n populateForm();\r\n fetchUsers();\r\n }\r\n }, []);\r\n\r\n const formik = useFormik({\r\n initialValues: contractor,\r\n validationSchema: ContractorValidator,\r\n enableReinitialize: true,\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n if (contractorId) {\r\n updateContractor(values);\r\n } else {\r\n createContractor(values);\r\n }\r\n },\r\n });\r\n\r\n const populateForm = () => {\r\n setIsLoading(true);\r\n contractorService.getContractorById(contractorId).then((res) => {\r\n setContractor(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchUsers = () => {\r\n contractorService.getAvailableUsers().then((res) => {\r\n setUsers(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'danger' });\r\n });\r\n };\r\n\r\n const createContractor = (model) => {\r\n setIsLoading(true);\r\n contractorService.createContractor(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n history.push(`/management/contractor/edit/${res.id}`);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const updateContractor = (model) => {\r\n setIsLoading(true);\r\n contractorService.updateContractor(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n {\r\n showConfirmModal({\r\n title: 'Remove User',\r\n text: 'Are you sure you want to remove this user from this contractor?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => removeUserAssignment(contractor.users[dataIndex].id)\r\n });\r\n }}\r\n />\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: 'User',\r\n },\r\n {\r\n name: 'role',\r\n label: 'Role',\r\n }\r\n ];\r\n\r\n const removeUserAssignment = (id) => {\r\n handleModalClose();\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n contractorService.removeUserAssignment(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n populateForm();\r\n fetchUsers();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n\r\n const handleModalClose = () => {\r\n setIsModalVisible(false);\r\n\r\n setTimeout(() => {\r\n setSelectedUserOptions([]);\r\n }, 100);\r\n };\r\n\r\n const saveContractorUsers = () => {\r\n if (selectedUserOptions.length <= 0) {\r\n return;\r\n }\r\n setIsLoading(true);\r\n contractorService.assignContractorUsers({\r\n contractorId: parseInt(contractorId, 10),\r\n users: selectedUserOptions\r\n }).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n populateForm();\r\n handleModalClose();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => setIsLoading(false));\r\n };\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {\r\n (contractorId)\r\n && (\r\n \r\n }\r\n primaryButtonOnClick={() => {\r\n setIsModalVisible(true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n \r\n history.push('/management/contractors')}\r\n />\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n {/* ASSIGNMENT MODAL */}\r\n 0 ? 'Add' : ''}\r\n primaryModalActionColor=\"primary--bg\"\r\n primaryModalActionOnClick={saveContractorUsers}\r\n secondaryModalActionText=\"Cancel\"\r\n secondaryModalActionColor=\"danger--bg\"\r\n onHide={handleModalClose}\r\n >\r\n \r\n
\r\n \r\n {\r\n users.length > 0 ? (\r\n {\r\n selectedOpt = selectedOpt === null ? [] : selectedOpt;\r\n setSelectedUserOptions(selectedOpt);\r\n }}\r\n />\r\n )\r\n : (\r\n \r\n No Users Available. All users are assigned to other contractors.\r\n \r\n )\r\n }\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default connect(null, {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n})(ContractorManagementPage);","/* eslint-disable react/no-unknown-property */\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\n// COMPONENTS\r\nimport PropTypes from 'prop-types';\r\n// ICONS\r\n// import { TbArrowBigLeft, TbArrowBigLeftLines } from 'react-icons/tb';\r\nimport { TbArrowBigLeftLines } from 'react-icons/tb';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst SideNav = (props) => {\r\n const {\r\n children,\r\n backgroundColor,\r\n isCollapsible,\r\n isExpanded,\r\n onClick\r\n } = props;\r\n\r\n const iconSize = 20;\r\n return (\r\n \r\n \r\n {children}\r\n \r\n\r\n {\r\n isCollapsible\r\n && (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\n// PROPS\r\nSideNav.propTypes = {\r\n // MAIN PROPS\r\n children: PropTypes.any,\r\n backgroundColor: PropTypes.string,\r\n isCollapsible: PropTypes.bool,\r\n isExpanded: PropTypes.bool,\r\n onClick: PropTypes.func\r\n};\r\n\r\n// DEFAULT PROPS\r\nSideNav.defaultProps = {\r\n // MAIN PROPS\r\n children: null,\r\n backgroundColor: 'white--sbg',\r\n isCollapsible: false,\r\n isExpanded: false,\r\n onClick: null\r\n};\r\n\r\nexport default SideNav;","/* eslint-disable consistent-return */\r\n/* eslint-disable max-len */\r\n/* eslint-disable react/jsx-props-no-multi-spaces */\r\n/* eslint-disable react/no-array-index-key */\r\n// DEPENDENCIES\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\n// COMPONENTS\r\nimport { Route, useHistory } from 'react-router-dom';\r\n// ICONS\r\nimport {\r\n TbFolders,\r\n TbClipboardText,\r\n TbEdit,\r\n TbNotes,\r\n TbLayersLinked,\r\n TbChartCircles,\r\n TbChecklist,\r\n TbMailForward,\r\n TbChartBar,\r\n TbMenu,\r\n TbX,\r\n TbChartArrows\r\n} from 'react-icons/tb';\r\nimport { GiValve, GiKeyCard } from 'react-icons/gi';\r\n// CUSTOM COMPONENTS\r\nimport DrawerNav from '../components/DrawerNav';\r\nimport CustomBlock from '../components/CustomBlock';\r\nimport TopNav from '../components/TopNav';\r\nimport NavBlock from '../components/NavBlock';\r\nimport SideNav from '../components/SideNav';\r\nimport ContentHeader from '../components/ContentHeader';\r\n// ASSETS\r\nimport Icon from '../assets/img/icon.svg';\r\n// REDUX\r\nimport * as auth from '../redux/authRedux';\r\nimport * as projectDetail from '../redux/projectDetailRedux';\r\n\r\nconst ProjectRoute = ({ component: Component, ...rest }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\r\n const [isSideNavCollapsed, setIsSideNavCollapsed] = useState(false);\r\n const [isSideNavMenuTitleVisible, setIsSideNavMenuTitleVisible] = useState(true);\r\n\r\n const history = useHistory();\r\n const iconSize = 26;\r\n const iconSizeLarge = 30;\r\n const iconColor = 'primary--clr';\r\n const mainPage = '/projects';\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen(!isDrawerOpen);\r\n };\r\n\r\n const navigateToPath = (path) => {\r\n history.push(path);\r\n setTimeout(() => {\r\n setIsDrawerOpen(false);\r\n }, 250);\r\n };\r\n\r\n const navBarItems = [\r\n {\r\n id: 0,\r\n iconLeft: ,\r\n to: '/project/edit/',\r\n name: 'Project Details',\r\n iconRightBackgroundColor: '',\r\n link: '/project/edit/',\r\n isVisible: true\r\n },\r\n {\r\n id: 1,\r\n iconLeft: ,\r\n name: 'Project Access',\r\n to: '/project/project-access/',\r\n link: '/project/project-access/',\r\n isVisible: rest.auth.accessLevel >= 50\r\n },\r\n {\r\n id: 2,\r\n iconLeft: ,\r\n name: 'KPI Report',\r\n to: '/project/kpi-report/',\r\n link: '/project/kpi-report/',\r\n isVisible: true\r\n },\r\n {\r\n id: 6,\r\n iconLeft: ,\r\n name: 'Overall Weld Log Report',\r\n to: '/project/weld-log-report/',\r\n link: '/project/weld-log-report/',\r\n isVisible: true\r\n },\r\n {\r\n id: 3,\r\n iconLeft: ,\r\n name: 'Weld Log',\r\n to: '/project/weld-log/',\r\n link: '/project/weld-log/',\r\n isVisible: true\r\n },\r\n {\r\n id: 4,\r\n iconLeft: ,\r\n name: 'Flange Log',\r\n to: '/project/flange-log/',\r\n link: '/project/flange-log/',\r\n isVisible: true\r\n },\r\n {\r\n id: 5,\r\n iconLeft: ,\r\n name: 'PSV Log',\r\n to: '/project/psv-log/',\r\n link: '/project/psv-log/',\r\n isVisible: true\r\n },\r\n {\r\n id: 6,\r\n iconLeft: ,\r\n name: 'Test Package Log',\r\n to: '/project/test-package-log/',\r\n link: '/project/test-package-log/',\r\n isVisible: true\r\n },\r\n {\r\n id: 7,\r\n iconLeft: ,\r\n title: 'Daily Forms',\r\n name: 'Daily Forms',\r\n to: '/project/daily-forms/',\r\n link: '/project/daily-forms/',\r\n isVisible: true\r\n },\r\n {\r\n id: 8,\r\n iconLeft: ,\r\n name: 'NDE Request Form',\r\n to: '/project/nde-request-form/',\r\n link: '/project/nde-request-form/',\r\n isVisible: true\r\n },\r\n {\r\n id: 9,\r\n iconLeft: ,\r\n name: 'Documents',\r\n to: '/project/documents',\r\n link: '/project/documents/',\r\n isVisible: true\r\n },\r\n ];\r\n\r\n const topNavMenuItems = [\r\n {\r\n id: 1,\r\n name: 'Projects',\r\n to: '/projects',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 0,\r\n },\r\n {\r\n id: 2,\r\n name: 'Clients',\r\n to: '/management/clients',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n },\r\n {\r\n id: 3,\r\n name: 'Contractors',\r\n to: '/management/contractors',\r\n action: null,\r\n subMenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n },\r\n {\r\n id: 4,\r\n name: 'Users',\r\n to: '/management/users',\r\n action: null,\r\n submenuItems: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n },\r\n {\r\n id: 5,\r\n name: 'Settings',\r\n to: '',\r\n action: null,\r\n isVisible: rest.auth.accessLevel >= 40,\r\n submenuItems: [\r\n {\r\n id: 1,\r\n name: 'Notification Emails',\r\n to: '/management/notification-emails',\r\n iconLeft: \r\n },\r\n ]\r\n },\r\n ];\r\n\r\n return (\r\n (\r\n <>\r\n x.isVisible)}\r\n menuToggleIcon={\r\n isDrawerOpen\r\n ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n secondaryIconActionOnClick={() => {\r\n rest.resetProjectDetails();\r\n rest.logout();\r\n }}\r\n onClickAvatar={() => {\r\n history.push('/my-profile');\r\n }}\r\n onClick={() => {\r\n toggleDrawer();\r\n }}\r\n />\r\n\r\n {\r\n setIsDrawerOpen(false);\r\n }}\r\n onClickLogout={() => {\r\n rest.resetProjectDetails();\r\n rest.logout();\r\n }}\r\n navigationItems={\r\n navBarItems.filter((x) => x.isVisible).map((item, index) => (\r\n {\r\n navigateToPath(`${item.link}${rest.projectDetail.projectId}`);\r\n }}\r\n />\r\n ))\r\n }\r\n />\r\n\r\n \r\n {\r\n setIsSideNavCollapsed(!isSideNavCollapsed);\r\n\r\n if (isSideNavCollapsed) {\r\n setTimeout(() => {\r\n setIsSideNavMenuTitleVisible(true);\r\n }, 200);\r\n } else {\r\n setIsSideNavMenuTitleVisible(false);\r\n }\r\n }}\r\n >\r\n {\r\n navBarItems.filter((x) => x.isVisible).map((item, index) => (\r\n {\r\n navigateToPath(`${item.link}${rest.projectDetail.projectId}`);\r\n }}\r\n />\r\n ))\r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ projectDetail: state.projectDetail, auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, { ...auth.actions, ...projectDetail.actions })(ProjectRoute);","import axiosInstance from '../apiService';\r\nimport constants from '../../constants/constants';\r\n\r\nconst ENDPOINTORIGIN = 'DailyFormNotificationEmail/';\r\n\r\nconst getAll = async () => axiosInstance.get(`${ENDPOINTORIGIN}GetAll`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst getById = async (id) => axiosInstance.get(`${ENDPOINTORIGIN}GetById?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst save = async (model) => axiosInstance.post(`${ENDPOINTORIGIN}Save`, model, constants.REQUIRE_INTERCEPTORS);\r\n\r\nconst deleteEmail = async (id) => axiosInstance.delete(`${ENDPOINTORIGIN}Delete?id=${id}`, constants.REQUIRE_INTERCEPTORS);\r\n\r\nexport {\r\n getAll,\r\n getById,\r\n save,\r\n deleteEmail,\r\n};","/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useFormik } from 'formik';\r\nimport { connect } from 'react-redux';\r\nimport * as Yup from 'yup';\r\n// COMPONENTS\r\nimport MUIDataTable from 'mui-datatables';\r\n// ICONS\r\nimport { TbMail } from 'react-icons/tb';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../../components/Section';\r\nimport ContentBlock from '../../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../../components/CustomBlock';\r\nimport FormBlock from '../../../../../components/FormBlock';\r\nimport ContentHeader from '../../../../../components/ContentHeader';\r\nimport Button from '../../../../../components/Button';\r\nimport ModalBlock from '../../../../../components/ModalBlock';\r\nimport InputBlock from '../../../../../components/InputBlock';\r\nimport OverLay from '../../../../../components/Overlay';\r\n// HELPERS AND SERVICES\r\nimport * as dailyFormNotificationEmailService from '../../../../../services/management/dailyFormNotificationEmailService';\r\nimport * as helper from '../../../../../helpers/helper';\r\n// REDUX\r\nimport * as alert from '../../../../../redux/alertToastRedux';\r\nimport * as auth from '../../../../../redux/authRedux';\r\nimport * as confirmModal from '../../../../../redux/confirmModalRedux';\r\n\r\nconst initialModel = {\r\n id: 0,\r\n email: '',\r\n};\r\n\r\nconst DailyFormNotificationEmailListingPage = (props) => {\r\n const {\r\n showAlert,\r\n auth,\r\n showConfirmModal,\r\n hideConfirmModal\r\n } = props;\r\n const [isModalVisible, setIsModalVisible] = useState(false);\r\n const [emails, setEmails] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [model, setModel] = useState(initialModel);\r\n\r\n useEffect(() => {\r\n getAllEmails();\r\n }, []);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const inputIconColor = 'grey--clr';\r\n // const pinCodeIcon = ;\r\n const emailIcon = ;\r\n\r\n const getAllEmails = () => {\r\n dailyFormNotificationEmailService.getAll().then((res) => {\r\n setEmails(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'warning' });\r\n }).finally(() => { });\r\n };\r\n\r\n const formik = useFormik({\r\n initialValues: model,\r\n enableReinitialize: true,\r\n validationSchema: Yup.object().shape({\r\n id: Yup.number(),\r\n email: Yup.string().email('Please enter valid email').required('Email is required').max(250),\r\n }),\r\n onSubmit: (values, { setSubmitting }) => {\r\n setSubmitting(true);\r\n saveNotificationEmail(values);\r\n },\r\n });\r\n\r\n const saveNotificationEmail = (model) => {\r\n setIsLoading(true);\r\n dailyFormNotificationEmailService.save(model).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n handleModalClose();\r\n getAllEmails();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeEmail = (id) => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n dailyFormNotificationEmailService.deleteEmail(id).then((res) => {\r\n showAlert({ text: res.message, state: 'success' });\r\n getAllEmails();\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columnOptions = {\r\n filter: true,\r\n sort: true,\r\n print: false,\r\n download: true,\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n print: false,\r\n download: false,\r\n display: auth.accessLevel >= 50,\r\n customBodyRenderLite: (dataIndex) => (\r\n \r\n {\r\n setModel(emails[dataIndex]);\r\n setIsModalVisible(true);\r\n }}\r\n />\r\n {\r\n auth.accessLevel >= 50 && (\r\n\r\n {\r\n showConfirmModal({\r\n title: 'Delete Email',\r\n text: 'Are you sure you want to remove this email?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeEmail(emails[dataIndex].id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: 'email',\r\n label: 'Email',\r\n options: columnOptions,\r\n },\r\n ];\r\n\r\n const handleModalClose = () => {\r\n formik.resetForm();\r\n setModel(initialModel);\r\n setIsModalVisible(false);\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n\r\n \r\n
\r\n \r\n \r\n = 50 ? 'Add New Email' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={() => {\r\n setIsModalVisible(true);\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...auth.actions,\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(DailyFormNotificationEmailListingPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React from 'react';\r\n// import moment from 'moment';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\n// SERVICES\r\n// REDUX\r\n\r\nconst WeldLogReportTable = (props) => {\r\n const {\r\n tableName,\r\n fivePercentCompleteSw,\r\n fivePercentInCompleteSw,\r\n fivePercentCompleteFw,\r\n fivePercentInCompleteFw,\r\n fivePercentCompleteTw,\r\n fivePercentInCompleteTw,\r\n tenPercentCompleteSw,\r\n tenPercentInCompleteSw,\r\n tenPercentCompleteFw,\r\n tenPercentInCompleteFw,\r\n tenPercentCompleteTw,\r\n tenPercentInCompleteTw,\r\n twentyPercentCompleteSw,\r\n twentyPercentInCompleteSw,\r\n twentyPercentCompleteFw,\r\n twentyPercentInCompleteFw,\r\n twentyPercentCompleteTw,\r\n twentyPercentInCompleteTw,\r\n hundredPercentCompleteSw,\r\n hundredPercentInCompleteSw,\r\n hundredPercentCompleteFw,\r\n hundredPercentInCompleteFw,\r\n hundredPercentCompleteTw,\r\n hundredPercentInCompleteTw,\r\n // naSwTotal,\r\n // naFwTotal,\r\n // naTwTotal\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {tableName}\r\n \r\n \r\n \r\n \r\n %\r\n SW\r\n FW\r\n TW\r\n \r\n \r\n \r\n \r\n 5%\r\n \r\n {fivePercentCompleteSw}\r\n /\r\n {fivePercentInCompleteSw}\r\n \r\n \r\n {fivePercentCompleteFw}\r\n /\r\n {fivePercentInCompleteFw}\r\n \r\n \r\n {fivePercentCompleteTw}\r\n /\r\n {fivePercentInCompleteTw}\r\n \r\n \r\n \r\n 10%\r\n \r\n {tenPercentCompleteSw}\r\n /\r\n {tenPercentInCompleteSw}\r\n \r\n \r\n {tenPercentCompleteFw}\r\n /\r\n {tenPercentInCompleteFw}\r\n \r\n \r\n {tenPercentCompleteTw}\r\n /\r\n {tenPercentInCompleteTw}\r\n \r\n \r\n \r\n 20%\r\n \r\n {twentyPercentCompleteSw}\r\n /\r\n {twentyPercentInCompleteSw}\r\n \r\n \r\n {twentyPercentCompleteFw}\r\n /\r\n {twentyPercentInCompleteFw}\r\n \r\n \r\n {twentyPercentCompleteTw}\r\n /\r\n {twentyPercentInCompleteTw}\r\n \r\n \r\n \r\n 100%\r\n \r\n {hundredPercentCompleteSw}\r\n /\r\n {hundredPercentInCompleteSw}\r\n \r\n \r\n {hundredPercentCompleteFw}\r\n /\r\n {hundredPercentInCompleteFw}\r\n \r\n \r\n {hundredPercentCompleteTw}\r\n /\r\n {hundredPercentInCompleteTw}\r\n \r\n \r\n {/* \r\n N/A\r\n {naSwTotal}\r\n {naFwTotal}\r\n {naTwTotal}\r\n */}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default WeldLogReportTable;","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport SelectBlock from '../../../../components/SelectBlock';\r\nimport WeldLogReportTable from './WeldLogReportTable';\r\n// SERVICES\r\nimport * as weldLogService from '../../../../services/project/weldLogService';\r\nimport * as testPackageLogService from '../../../../services/project/testPackageLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\n\r\nconst WeldLogPage = (props) => {\r\n const { showAlert } = props;\r\n const { projectId, testPackage, contractor } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [data, setData] = useState([]);\r\n const [contractors, setContractors] = useState([]);\r\n const [selectedContractor, setSelectedContractor] = useState(null);\r\n\r\n useEffect(() => {\r\n if (contractor) {\r\n setSelectedContractor({ label: decodeURIComponent(contractor), value: decodeURIComponent(contractor) });\r\n } else {\r\n setSelectedContractor({ label: 'All', value: null });\r\n }\r\n getContractors();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedContractor) {\r\n getWeldLogReport(selectedContractor.value);\r\n }\r\n }, [selectedContractor]);\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n const contractorPromise = testPackage ? testPackageLogService.getContractorsByTp(projectId, testPackage) : testPackageLogService.getContractors(projectId);\r\n contractorPromise.then((res) => {\r\n setContractors([{ label: 'All', value: null }, ...res]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getWeldLogReport = (contractorValue) => {\r\n setIsLoading(true);\r\n const reportPromise = testPackage ? weldLogService.getReportData(projectId, testPackage, contractorValue || '') : weldLogService.getCompositeReportData(projectId, contractorValue || '');\r\n reportPromise.then((res) => {\r\n setData(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {\r\n setSelectedContractor(opt);\r\n }}\r\n />\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total Welds
{data.length}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total Shop WeldsTotal Field WeldsTotal Tie-in Welds
{data.filter((x) => x.weldLocation === 'Shop Weld').length}{data.filter((x) => x.weldLocation === 'Field Weld').length}{data.filter((x) => x.weldLocation === 'Tie-in Weld').length}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total Completed WeldsCompleted Shop WeldsCompleted Field WeldsCompleted Tie-in Welds
{data.filter((x) => x && x.vtBy && x.vtDate).length}{data.filter((x) => x.weldLocation === 'Shop Weld' && x.vtBy && x.vtDate).length}{data.filter((x) => x.weldLocation === 'Field Weld' && x.vtBy && x.vtDate).length}{data.filter((x) => x.weldLocation === 'Tie-in Weld' && x.vtBy && x.vtDate).length}
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n VT\r\n \r\n \r\n \r\n \r\n %\r\n SW\r\n FW\r\n TW\r\n \r\n \r\n \r\n \r\n 100%\r\n \r\n {data.filter((x) => x.weldLocation === 'Shop Weld').length}\r\n /\r\n {data.filter((x) => x.weldLocation === 'Shop Weld' && x.vtDate).length}\r\n \r\n \r\n {data.filter((x) => x.weldLocation === 'Field Weld').length}\r\n /\r\n {data.filter((x) => x.weldLocation === 'Field Weld' && x.vtDate).length}\r\n \r\n \r\n {data.filter((x) => x.weldLocation === 'Tie-in Weld').length}\r\n /\r\n {data.filter((x) => x.weldLocation === 'Tie-in Weld' && x.vtDate).length}\r\n \r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n \r\n VT Rejects\r\n \r\n \r\n \r\n \r\n %\r\n SW\r\n FW\r\n TW\r\n \r\n \r\n \r\n \r\n 100%\r\n \r\n {data.filter((x) => x.weldLocation === 'Shop Weld' && x.accRej === 'REJ.').length}\r\n \r\n \r\n {data.filter((x) => x.weldLocation === 'Field Weld' && x.accRej === 'REJ.').length}\r\n \r\n \r\n {data.filter((x) => x.weldLocation === 'Tie-in Weld' && x.accRej === 'REJ.').length}\r\n \r\n \r\n \r\n */}\r\n \r\n\r\n \r\n x.xrayUtPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.xrayUtPercentage === '5%' && x.rtUtDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.xrayUtPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.xrayUtPercentage === '5%' && x.rtUtDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.xrayUtPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.xrayUtPercentage === '5%' && x.rtUtDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.xrayUtPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.xrayUtPercentage === '10%' && x.rtUtDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.xrayUtPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.xrayUtPercentage === '10%' && x.rtUtDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.xrayUtPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.xrayUtPercentage === '10%' && x.rtUtDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.xrayUtPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.xrayUtPercentage === '20%' && x.rtUtDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.xrayUtPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.xrayUtPercentage === '20%' && x.rtUtDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.xrayUtPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.xrayUtPercentage === '20%' && x.rtUtDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.xrayUtPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.xrayUtPercentage === '100%' && x.rtUtDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.xrayUtPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.xrayUtPercentage === '100%' && x.rtUtDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.xrayUtPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.xrayUtPercentage === '100%' && x.rtUtDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.xrayUtPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.xrayUtPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.xrayUtPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n \r\n x.ptMtPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.ptMtPercentage === '5%' && x.ptMtDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.ptMtPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.ptMtPercentage === '5%' && x.ptMtDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.ptMtPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.ptMtPercentage === '5%' && x.ptMtDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.ptMtPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.ptMtPercentage === '10%' && x.ptMtDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.ptMtPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.ptMtPercentage === '10%' && x.ptMtDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.ptMtPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.ptMtPercentage === '10%' && x.ptMtDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.ptMtPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.ptMtPercentage === '20%' && x.ptMtDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.ptMtPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.ptMtPercentage === '20%' && x.ptMtDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.ptMtPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.ptMtPercentage === '20%' && x.ptMtDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.ptMtPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.ptMtPercentage === '100%' && x.ptMtDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.ptMtPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.ptMtPercentage === '100%' && x.ptMtDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.ptMtPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.ptMtPercentage === '100%' && x.ptMtDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.ptMtPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.ptMtPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.ptMtPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n \r\n x.pmiPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.pmiPercentage === '5%' && x.pmiDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.pmiPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.pmiPercentage === '5%' && x.pmiDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.pmiPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.pmiPercentage === '5%' && x.pmiDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.pmiPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.pmiPercentage === '10%' && x.pmiDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.pmiPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.pmiPercentage === '10%' && x.pmiDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.pmiPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.pmiPercentage === '10%' && x.pmiDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.pmiPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.pmiPercentage === '20%' && x.pmiDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.pmiPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.pmiPercentage === '20%' && x.pmiDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.pmiPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.pmiPercentage === '20%' && x.pmiDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.pmiPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.pmiPercentage === '100%' && x.pmiDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.pmiPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.pmiPercentage === '100%' && x.pmiDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.pmiPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.pmiPercentage === '100%' && x.pmiDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pmiPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pmiPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pmiPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n \r\n x.pwhtPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.pwhtPercentage === '5%' && x.pwhtDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.pwhtPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.pwhtPercentage === '5%' && x.pwhtDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.pwhtPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.pwhtPercentage === '5%' && x.pwhtDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.pwhtPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.pwhtPercentage === '10%' && x.pwhtDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.pwhtPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.pwhtPercentage === '10%' && x.pwhtDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.pwhtPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.pwhtPercentage === '10%' && x.pwhtDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.pwhtPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.pwhtPercentage === '20%' && x.pwhtDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.pwhtPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.pwhtPercentage === '20%' && x.pwhtDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.pwhtPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.pwhtPercentage === '20%' && x.pwhtDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.pwhtPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.pwhtPercentage === '100%' && x.pwhtDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.pwhtPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.pwhtPercentage === '100%' && x.pwhtDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.pwhtPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.pwhtPercentage === '100%' && x.pwhtDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pwhtPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pwhtPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.pwhtPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n {/* \r\n \r\n \r\n \r\n XRAY UT Rejects\r\n \r\n \r\n \r\n \r\n %\r\n SW\r\n FW\r\n TW\r\n \r\n \r\n \r\n {\r\n ['5%', '10%', '20%', '100%'].map((percent) => (\r\n \r\n {percent}\r\n \r\n {data.filter((x) => x.xrayUtPercentage === percent && x.weldLocation === 'Shop Weld' && x.weldAcceptedRejected === 'REJ.').length}\r\n \r\n \r\n {data.filter((x) => x.xrayUtPercentage === percent && x.weldLocation === 'Field Weld' && x.weldAcceptedRejected === 'REJ.').length}\r\n \r\n \r\n {data.filter((x) => x.xrayUtPercentage === percent && x.weldLocation === 'Tie-in Weld' && x.weldAcceptedRejected === 'REJ.').length}\r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n */}\r\n \r\n x.afterStressPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.afterStressPercentage === '5%' && x.afterStressDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.afterStressPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.afterStressPercentage === '5%' && x.afterStressDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.afterStressPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.afterStressPercentage === '5%' && x.afterStressDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.afterStressPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.afterStressPercentage === '10%' && x.afterStressDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.afterStressPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.afterStressPercentage === '10%' && x.afterStressDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.afterStressPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.afterStressPercentage === '10%' && x.afterStressDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.afterStressPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.afterStressPercentage === '20%' && x.afterStressDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.afterStressPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.afterStressPercentage === '20%' && x.afterStressDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.afterStressPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.afterStressPercentage === '20%' && x.afterStressDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.afterStressPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.afterStressPercentage === '100%' && x.afterStressDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.afterStressPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.afterStressPercentage === '100%' && x.afterStressDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.afterStressPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.afterStressPercentage === '100%' && x.afterStressDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.afterStressPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.afterStressPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.afterStressPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n \r\n x.rtUtAsPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.rtUtAsPercentage === '5%' && x.rtUtAsDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.rtUtAsPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.rtUtAsPercentage === '5%' && x.rtUtAsDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.rtUtAsPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.rtUtAsPercentage === '5%' && x.rtUtAsDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.rtUtAsDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.rtUtAsDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.rtUtAsPercentage === '10%' && x.rtUtAsDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.rtUtAsDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.rtUtAsDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.rtUtAsPercentage === '20%' && x.rtUtAsDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.rtUtAsDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.rtUtAsDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.rtUtAsPercentage === '100%' && x.rtUtAsDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.rtUtAsPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.rtUtAsPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.rtUtAsPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n\r\n \r\n x.bhnPercentage === '5%' && x.weldLocation === 'Shop Weld').length}\r\n fivePercentInCompleteSw={data.filter((x) => x.bhnPercentage === '5%' && x.bhnDate && x.weldLocation === 'Shop Weld').length}\r\n fivePercentCompleteFw={data.filter((x) => x.bhnPercentage === '5%' && x.weldLocation === 'Field Weld').length}\r\n fivePercentInCompleteFw={data.filter((x) => x.bhnPercentage === '5%' && x.bhnDate && x.weldLocation === 'Field Weld').length}\r\n fivePercentCompleteTw={data.filter((x) => x.bhnPercentage === '5%' && x.weldLocation === 'Tie-in Weld').length}\r\n fivePercentInCompleteTw={data.filter((x) => x.bhnPercentage === '5%' && x.bhnDate && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentCompleteSw={data.filter((x) => x.bhnPercentage === '10%' && x.weldLocation === 'Shop Weld').length}\r\n tenPercentInCompleteSw={data.filter((x) => x.bhnPercentage === '10%' && x.bhnDate && x.weldLocation === 'Shop Weld').length}\r\n tenPercentCompleteFw={data.filter((x) => x.bhnPercentage === '10%' && x.weldLocation === 'Field Weld').length}\r\n tenPercentInCompleteFw={data.filter((x) => x.bhnPercentage === '10%' && x.bhnDate && x.weldLocation === 'Field Weld').length}\r\n tenPercentCompleteTw={data.filter((x) => x.bhnPercentage === '10%' && x.weldLocation === 'Tie-in Weld').length}\r\n tenPercentInCompleteTw={data.filter((x) => x.bhnPercentage === '10%' && x.bhnDate && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentCompleteSw={data.filter((x) => x.bhnPercentage === '20%' && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentInCompleteSw={data.filter((x) => x.bhnPercentage === '20%' && x.bhnDate && x.weldLocation === 'Shop Weld').length}\r\n twentyPercentCompleteFw={data.filter((x) => x.bhnPercentage === '20%' && x.weldLocation === 'Field Weld').length}\r\n twentyPercentInCompleteFw={data.filter((x) => x.bhnPercentage === '20%' && x.bhnDate && x.weldLocation === 'Field Weld').length}\r\n twentyPercentCompleteTw={data.filter((x) => x.bhnPercentage === '20%' && x.weldLocation === 'Tie-in Weld').length}\r\n twentyPercentInCompleteTw={data.filter((x) => x.bhnPercentage === '20%' && x.bhnDate && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentCompleteSw={data.filter((x) => x.bhnPercentage === '100%' && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentInCompleteSw={data.filter((x) => x.bhnPercentage === '100%' && x.bhnDate && x.weldLocation === 'Shop Weld').length}\r\n hundredPercentCompleteFw={data.filter((x) => x.bhnPercentage === '100%' && x.weldLocation === 'Field Weld').length}\r\n hundredPercentInCompleteFw={data.filter((x) => x.bhnPercentage === '100%' && x.bhnDate && x.weldLocation === 'Field Weld').length}\r\n hundredPercentCompleteTw={data.filter((x) => x.bhnPercentage === '100%' && x.weldLocation === 'Tie-in Weld').length}\r\n hundredPercentInCompleteTw={data.filter((x) => x.bhnPercentage === '100%' && x.bhnDate && x.weldLocation === 'Tie-in Weld').length}\r\n naSwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.bhnPercentage) && x.weldLocation === 'Shop Weld').length}\r\n naFwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.bhnPercentage) && x.weldLocation === 'Field Weld').length}\r\n naTwTotal={data.filter((x) => ['', null, 'N/A'].includes(x.bhnPercentage) && x.weldLocation === 'Tie-in Weld').length}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(WeldLogPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Chart } from 'react-google-charts';\r\n// import moment from 'moment';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\n// SERVICES\r\nimport * as flangeLogService from '../../../../services/project/flangeLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\n\r\nconst FlangeLogReportPage = (props) => {\r\n const { showAlert } = props;\r\n const { projectId, testPackage, isTestPackage } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [data, setData] = useState([]);\r\n const [calcData, setCalcData] = useState({\r\n totalNumberOfBoltUps: 0,\r\n boltUpsReportedComplete: 0,\r\n totalBoltUpsQcComplete: 0,\r\n percentReportedComplete: 0,\r\n percentRemaining: 0\r\n });\r\n const [chartData, setChartData] = useState([\r\n ['Size', 'Total number of bolt ups', 'Bolt ups Reported Completed', 'Total bolt ups QC Complete']\r\n ]);\r\n\r\n useEffect(() => {\r\n getWeldLogReport();\r\n }, []);\r\n\r\n const getWeldLogReport = () => {\r\n setIsLoading(true);\r\n flangeLogService.getReportData(projectId, testPackage, isTestPackage).then((res) => {\r\n setData(res);\r\n const totalNumberOfBoltUps = res.reduce((a, v) => a + v.totalNumberOfBoltUps, 0);\r\n const boltUpsReportedComplete = res.reduce((a, v) => a + v.boltUpsReportedComplete, 0);\r\n const totalBoltUpsQcComplete = res.reduce((a, v) => a + v.totalBoltUpsQcComplete, 0);\r\n const percentReportedComplete = totalNumberOfBoltUps === 0 ? 0 : boltUpsReportedComplete / totalNumberOfBoltUps;\r\n const percentRemaining = 100 - (percentReportedComplete * 100);\r\n\r\n setCalcData({\r\n totalNumberOfBoltUps,\r\n boltUpsReportedComplete,\r\n totalBoltUpsQcComplete,\r\n percentReportedComplete,\r\n percentRemaining\r\n });\r\n\r\n const modifiedChartData = [...chartData, ['Total', totalNumberOfBoltUps, boltUpsReportedComplete, totalBoltUpsQcComplete]];\r\n\r\n adjustChartData(res, modifiedChartData);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const adjustChartData = (arr, modifiedChartData) => {\r\n arr.forEach((x) => {\r\n modifiedChartData.push([x.size, x.totalNumberOfBoltUps, x.boltUpsReportedComplete, x.totalBoltUpsQcComplete]);\r\n });\r\n\r\n setChartData(modifiedChartData);\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n data.map((x) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n
SizeTotal number of bolt upsBolt ups Reported CompleteTotal bolt ups QC CompletePercent Reported completePercent remaining
Total{calcData.totalNumberOfBoltUps}{calcData.boltUpsReportedComplete}{calcData.totalBoltUpsQcComplete}\r\n {(calcData.percentReportedComplete * 100).toFixed(2)}\r\n %\r\n \r\n {calcData.percentRemaining.toFixed(2)}\r\n %\r\n
{x.size}{x.totalNumberOfBoltUps}{x.boltUpsReportedComplete}{x.totalBoltUpsQcComplete}\r\n {(x.percentReportedComplete * 100).toFixed(2)}\r\n %\r\n \r\n {x.totalNumberOfBoltUps === 0 ? '0.00' : x.percentRemaining.toFixed(2)}\r\n %\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(FlangeLogReportPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\nimport { HiOutlineTrash } from 'react-icons/hi';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as dailyFlangeLogFormService from '../../../../services/project/dailyFlangeLogFormService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\n\r\nconst DailyFlangeLogFormPage = (props) => {\r\n const {\r\n // auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n history,\r\n projectDetail,\r\n setProjectDetails\r\n } = props;\r\n const { projectId, dailyFlangeFormId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [flanges, setFlanges] = useState([]);\r\n const [flangeLogForm, setFlangeLogForm] = useState({ isSubmitted: true });\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getLineItems();\r\n getFlangeLogForm();\r\n }, []);\r\n\r\n const getFlangeLogForm = () => {\r\n dailyFlangeLogFormService.getDailyFlangeLogFormById(dailyFlangeFormId).then((res) => {\r\n setFlangeLogForm(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n });\r\n };\r\n\r\n const getLineItems = () => {\r\n setIsLoading(true);\r\n dailyFlangeLogFormService.getDailyFlangeLogFormLineItems(projectId, dailyFlangeFormId).then((res) => {\r\n setSource(res.lineItems);\r\n setOriginalSource(res.lineItems);\r\n setFlanges(['', ...res.flangeLogs]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n dailyFlangeLogFormService.createDailyFlangeLogFormLineItem(dailyFlangeFormId).then((res) => {\r\n const newLine = {\r\n id: res.id,\r\n dailyFlangeLogFormId: dailyFlangeFormId,\r\n flangeId: res.flangeId,\r\n burnsId: null,\r\n iso: null,\r\n systemId: null,\r\n testPackageNumber: null,\r\n size: null,\r\n material: null,\r\n rating: null,\r\n flangeFace: null,\r\n acceptedBy: null,\r\n reportedBoltUpdate: null,\r\n typeOfGasketInstalled: null,\r\n typeOfBoltsUsed: null,\r\n threadsFullyEngaged: null,\r\n hammerTest: null,\r\n hammerTestBy: null,\r\n torqueRequired: null,\r\n torqueCompleteBy: null,\r\n dateTorqued: null,\r\n qcComplete: null,\r\n reportedDate: null,\r\n };\r\n setSource([...source, newLine]);\r\n setOriginalSource([...originalSource, newLine]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (model) => {\r\n dailyFlangeLogFormService.updateDailyFlangeLogFormLineItem({ ...model, projectId }).then((res) => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(model.id);\r\n model = { ...model, ...res };\r\n temp[indexToReplace] = model;\r\n setSource(temp);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(model.id);\r\n originalTemp[originalIndexToReplace] = model;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n dailyFlangeLogFormService.deleteDailyFlangeLogFormLineItem(id).then((res) => {\r\n getLineItems();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const submitForm = () => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n dailyFlangeLogFormService.submitDailyFlangeLogForm(dailyFlangeFormId).then(() => {\r\n history.push(`/project/daily-forms/${projectId}`);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n hide: flangeLogForm.isSubmitted || projectDetail.isCompleted,\r\n renderCell: (params) => (\r\n \r\n {\r\n !projectDetail.isCompleted && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Row',\r\n text: 'Are you sure you want to delete this row?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n \r\n )\r\n },\r\n {\r\n field: 'flangeId',\r\n headerName: 'Flange Id',\r\n width: 125,\r\n type: 'singleSelect',\r\n valueOptions: flanges,\r\n editable: true,\r\n },\r\n {\r\n field: 'testPackageNumber',\r\n headerName: 'Test Package #',\r\n width: 150,\r\n },\r\n {\r\n field: 'projectNumber',\r\n headerName: 'Project Number',\r\n width: 150,\r\n },\r\n {\r\n field: 'iso',\r\n headerName: 'ISO',\r\n width: 100,\r\n },\r\n {\r\n field: 'systemId',\r\n headerName: 'System ID',\r\n width: 100,\r\n },\r\n {\r\n field: 'size',\r\n headerName: 'Size',\r\n type: 'singleSelect',\r\n valueOptions: ['', 0.75, 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 30, 48, 60],\r\n },\r\n {\r\n field: 'material',\r\n headerName: 'Material',\r\n },\r\n {\r\n field: 'rating',\r\n headerName: 'Rating',\r\n },\r\n {\r\n field: 'flangeFace',\r\n headerName: 'Flange Face ACC/REJ',\r\n width: 175,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Accepted', 'Rejected'],\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'acceptedBy',\r\n headerName: 'Accepted By',\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'reportedBoltUpdate',\r\n headerName: 'Reported bolt-up date',\r\n width: 175,\r\n type: 'date',\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'typeOfGasketInstalled',\r\n headerName: 'Type of gasket installed',\r\n width: 175,\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'typeOfBoltsUsed',\r\n headerName: 'Type of Bolts used',\r\n width: 175,\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'threadsFullyEngaged',\r\n headerName: 'Threads fully engaged Y/N',\r\n width: 200,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No'],\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'hammerTest',\r\n headerName: 'Hammer test ACC/REJ',\r\n width: 175,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Accepted', 'Rejected'],\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'hammerTestBy',\r\n headerName: 'Hammer test by',\r\n width: 175,\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'torqueRequired',\r\n headerName: 'Torque req. Y/N',\r\n width: 145,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No'],\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'torqueCompleteBy',\r\n headerName: 'Torque complete by',\r\n width: 175,\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'dateTorqued',\r\n headerName: 'Date Torqued',\r\n width: 150,\r\n type: 'date',\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'reportedDate',\r\n headerName: 'Reported Date',\r\n width: 150,\r\n type: 'date',\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n {\r\n field: 'qcComplete',\r\n headerName: 'QC Complete',\r\n editable: !flangeLogForm.isSubmitted && !projectDetail.isCompleted\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText={(!flangeLogForm.isSubmitted && !projectDetail.isCompleted) ? 'Submit Form' : ''}\r\n secondaryButtonOnClick={() => {\r\n showConfirmModal({\r\n title: 'Submit Form',\r\n text: 'Are you sure you want to submit this form?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => submitForm()\r\n });\r\n }}\r\n />\r\n \r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(DailyFlangeLogFormPage);","// DEPENDENCIES\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// ICONS\r\nimport { AiOutlineLoading } from 'react-icons/ai';\r\n// CUSTOM COMPONENTS\r\nimport CustomBlock from './CustomBlock';\r\n\r\nconst TextAreaBlock = (props) => {\r\n const {\r\n containerClassName,\r\n className,\r\n backgroundColor,\r\n label,\r\n labelColor,\r\n inputLabel,\r\n placeholder,\r\n inputState,\r\n errorMessage,\r\n successMessage,\r\n warningMessage,\r\n isLabelLoading,\r\n isRequired,\r\n isDisabled,\r\n hasBorder,\r\n } = props;\r\n\r\n const errorMessageSuffix = 'is required';\r\n const inputStates = {\r\n error: 'error',\r\n warning: 'warning',\r\n success: 'success',\r\n disabled: 'disabled'\r\n };\r\n\r\n return (\r\n \r\n {\r\n inputLabel\r\n && (\r\n \r\n {inputLabel}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n {\r\n label\r\n && (\r\n \r\n {label}\r\n {isRequired && *}\r\n {\r\n isLabelLoading\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n {\r\n inputState === 'error'\r\n && (\r\n \r\n {errorMessage || (inputLabel || label ? (inputLabel || `${label} ${errorMessageSuffix}`) : 'Error message undefined')}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'warning'\r\n && (\r\n \r\n {warningMessage}\r\n \r\n )\r\n }\r\n {\r\n inputState === 'success'\r\n && (\r\n \r\n {successMessage}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nTextAreaBlock.propTypes = {\r\n // CONTAINER PROPS\r\n containerClassName: PropTypes.string,\r\n className: PropTypes.string,\r\n backgroundColor: PropTypes.string,\r\n\r\n // LABEL PROPS\r\n label: PropTypes.string,\r\n labelColor: PropTypes.string,\r\n inputLabel: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n\r\n // STATE PROPS\r\n inputState: PropTypes.string,\r\n errorMessage: PropTypes.string,\r\n successMessage: PropTypes.string,\r\n warningMessage: PropTypes.string,\r\n\r\n // BOOLEAN PROPS\r\n isLabelLoading: PropTypes.bool,\r\n isRequired: PropTypes.bool,\r\n isDisabled: PropTypes.bool,\r\n hasBorder: PropTypes.bool,\r\n};\r\n\r\nTextAreaBlock.defaultProps = {\r\n // CONTAINER PROPS\r\n containerClassName: '',\r\n className: '',\r\n backgroundColor: 'light--sbg',\r\n\r\n // LABEL PROPS\r\n label: '',\r\n labelColor: '',\r\n inputLabel: '',\r\n placeholder: '',\r\n\r\n // STATE PROPS\r\n inputState: '',\r\n errorMessage: '',\r\n successMessage: '',\r\n warningMessage: '',\r\n\r\n // BOOLEAN PROPS\r\n isLabelLoading: false,\r\n isRequired: false,\r\n isDisabled: false,\r\n hasBorder: false,\r\n};\r\n\r\nexport default TextAreaBlock;","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-underscore-dangle */\r\n\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useFormik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { useParams } from 'react-router-dom';\r\n// import moment from 'moment';\r\nimport Box from '@mui/material/Box';\r\nimport {\r\n DataGridPro,\r\n useGridApiRef,\r\n GridToolbarContainer,\r\n GridToolbarExport\r\n} from '@mui/x-data-grid-pro';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\nimport CreatableSelect from 'react-select/creatable';\r\n// ICONS\r\nimport { IoMdAddCircle } from 'react-icons/io';\r\nimport { HiOutlineTrash, HiOutlineRefresh } from 'react-icons/hi';\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport OverLay from '../../../../components/Overlay';\r\nimport Button from '../../../../components/Button';\r\nimport ModalBlock from '../../../../components/ModalBlock';\r\nimport InputBlock from '../../../../components/InputBlock';\r\nimport FormBlock from '../../../../components/FormBlock';\r\nimport TextAreaBlock from '../../../../components/TextAreaBlock';\r\nimport DataGridFilterModule from '../../../../components/DataGridFilterModule';\r\n// SERVICES\r\nimport * as ndeRequestService from '../../../../services/project/ndeRequestService';\r\nimport * as projectService from '../../../../services/project/projectService';\r\nimport * as weldLogService from '../../../../services/project/weldLogService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\nimport * as projectDetailRedux from '../../../../redux/projectDetailRedux';\r\nimport * as helper from '../../../../helpers/helper';\r\n\r\nconst NDRequestFormPage = (props) => {\r\n const {\r\n auth,\r\n showAlert,\r\n showConfirmModal,\r\n hideConfirmModal,\r\n projectDetail,\r\n setProjectDetails,\r\n history\r\n } = props;\r\n const { projectId, ndeRequestId } = useParams();\r\n\r\n const initialEmailModel = {\r\n projectId,\r\n ndeRequestId,\r\n subject: 'NDE Request Form',\r\n message: `NDE Request Form has been sent to review. Please check the link below. \\n ${window.location.href}`,\r\n emails: []\r\n };\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [source, setSource] = useState([]);\r\n const [ndeRequest, setNDERequest] = useState({\r\n projectId: 0,\r\n name: '',\r\n isCompleted: false,\r\n completedByUserId: 0,\r\n completedDateTime: null\r\n });\r\n const [originalSource, setOriginalSource] = useState([]);\r\n const [weldLogs, setWeldLogs] = useState([]);\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [drawings, setDrawings] = useState([]);\r\n const [emailOptions, setEmailOptions] = useState(\r\n [\r\n { label: 'Work Station 1', value: 'Precise.t1w1@pndtllc.com' },\r\n { label: 'Work Station 2', value: 'Precise.t1w2@pndtllc.com' },\r\n { label: 'Work Station 3', value: 'Precise.t1w3@pndtllc.com' },\r\n { label: 'Work Station 4', value: 'Precise.t1w4@pndtllc.com' },\r\n { label: 'Durabook Tab 1', value: 'Precise.t1tab1@pndtllc.com' },\r\n { label: 'Durabook Tab 2', value: 'Precise.t1tab2@pndtllc.com' },\r\n { label: 'Durabook Tab 3', value: 'Precise.t1tab3@pndtllc.com' },\r\n { label: 'Durabook Tab 4', value: 'Precise.t1tab4@pndtllc.com' },\r\n { label: 'Durabook Tab 5', value: 'Precise.t1tab5@pndtllc.com' },\r\n { label: 'Durabook Tab 6', value: 'Precise.t1tab6@pndtllc.com' },\r\n ]\r\n );\r\n const [model, setModel] = useState(initialEmailModel);\r\n const [selectedEmails, setSelectedEmails] = useState(null);\r\n const [ndeRequestLog, setNDERequestLog] = useState([]);\r\n const [isLogModalOpen, setIsLogModalOpen] = useState(false);\r\n const [contractors, setContractors] = useState([]);\r\n\r\n const iconSize = 22;\r\n const iconColor = 'white--clr';\r\n const apiRef = useGridApiRef();\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n setProjectDetails({ ...projectDetail, projectId });\r\n getNDERequests();\r\n getContractorUsers();\r\n getNDERequest();\r\n getContractors();\r\n fetchDrawings();\r\n }, []);\r\n\r\n const getNDERequest = () => {\r\n setIsLoading(true);\r\n ndeRequestService.getNDERequestById(ndeRequestId).then((res) => {\r\n setNDERequest(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n weldLogService.getContractors(projectId).then((res) => {\r\n setContractors(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchDrawings = () => {\r\n setIsLoading(true);\r\n\r\n weldLogService.getDrawingNos(projectId).then((res) => {\r\n setDrawings(res);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getNDERequests = () => {\r\n setIsLoading(true);\r\n ndeRequestService.getNDERequestLineItems(projectId, ndeRequestId).then((res) => {\r\n setSource(res.ndeRequests);\r\n setOriginalSource(res.ndeRequests);\r\n setWeldLogs(res.weldLogs);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getContractorUsers = () => {\r\n projectService.getContractorUsersForProject(projectId).then((res) => {\r\n setEmailOptions([...emailOptions, ...res]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n });\r\n };\r\n\r\n const addLog = () => {\r\n setIsLoading(true);\r\n ndeRequestService.createNDERequestLineItem(ndeRequestId).then((res) => {\r\n const newLineItem = {\r\n id: res.id,\r\n projectId,\r\n ndeRequestId,\r\n weldNo: null,\r\n testPackageNumber: null,\r\n contractor: null,\r\n workListNumber: null,\r\n lineNumber: null,\r\n unit: null,\r\n scopeRevReWork: null,\r\n dwgNo: null,\r\n baseMaterial: null,\r\n pipeSize: null,\r\n pipeSchedule: null,\r\n stencil1: null,\r\n stencil2: null,\r\n stencil3: null,\r\n stencil4: null,\r\n weldType: null,\r\n weldLocation: null,\r\n process: null,\r\n ndePercentage: null,\r\n prePWHT: null,\r\n postPWHT: null,\r\n paut: null,\r\n rt: null,\r\n pt: null,\r\n mt: null,\r\n ht: null,\r\n pmi: null,\r\n fn: null,\r\n bhn: null,\r\n dateSentOut: null,\r\n dateCompleted: null,\r\n dateReviewedBy: null,\r\n dateDataEntered: null,\r\n requestBy: null,\r\n comments: null,\r\n };\r\n setSource([...source, newLineItem]);\r\n setOriginalSource([...source, newLineItem]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleAfterEdit = (mdel) => {\r\n ndeRequestService.updateNDERequestLineItem(mdel).then((res) => {\r\n const temp = [...source];\r\n const indexToReplace = temp.map((a) => a.id).indexOf(mdel.id);\r\n temp[indexToReplace] = res.ndeRequest;\r\n setSource(temp);\r\n\r\n // original\r\n const originalTemp = [...originalSource];\r\n const originalIndexToReplace = originalTemp.map((a) => a.id).indexOf(mdel.id);\r\n originalTemp[originalIndexToReplace] = res.ndeRequest;\r\n\r\n setOriginalSource(originalTemp);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const removeCell = (id) => {\r\n hideConfirmModal();\r\n setIsLoading(true);\r\n ndeRequestService.deleteNDERequestLineItem(id).then((res) => {\r\n getNDERequests();\r\n showAlert({ text: res.message, state: 'success' });\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n field: 'action',\r\n headerName: 'Actions',\r\n sortable: false,\r\n hide: projectDetail.isCompleted || ndeRequest.isCompleted,\r\n width: 75,\r\n renderCell: (params) => (\r\n \r\n {\r\n auth.accessLevel >= 50 && (\r\n }\r\n onClick={() => {\r\n showConfirmModal({\r\n title: 'Delete Row',\r\n text: 'Are you sure you want to delete this row?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n removeCell(params.id);\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n \r\n )\r\n },\r\n {\r\n field: 'dwgNo',\r\n headerName: 'DWG. No.',\r\n width: 120,\r\n // editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(drawings.filter((x) => x)))\r\n },\r\n {\r\n field: 'weldNo',\r\n headerName: 'Weld No',\r\n width: 75,\r\n // editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n type: 'singleSelect',\r\n valueOptions: Array.from(new Set(weldLogs.filter((x) => x)))\r\n },\r\n {\r\n field: 'contractor',\r\n headerName: 'Contractor',\r\n width: 175,\r\n // editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n type: 'singleSelect',\r\n valueOptions: contractors\r\n },\r\n {\r\n field: 'testPackageNumber',\r\n headerName: 'Test Package Number',\r\n width: 175,\r\n },\r\n {\r\n field: 'lineNumber',\r\n headerName: 'Line Number',\r\n width: 175,\r\n },\r\n {\r\n field: 'workListNumber',\r\n headerName: 'Work List Number',\r\n width: 175,\r\n },\r\n {\r\n field: 'unit',\r\n headerName: 'Unit',\r\n width: 145,\r\n },\r\n {\r\n field: 'scopeRevReWork',\r\n headerName: 'Scope / Rev / ReWork',\r\n width: 200,\r\n },\r\n {\r\n field: 'spec',\r\n headerName: 'Pipe Spec',\r\n width: 100,\r\n },\r\n {\r\n field: 'baseMaterial',\r\n headerName: 'Base Material',\r\n width: 120,\r\n },\r\n {\r\n field: 'pipeSize',\r\n headerName: 'Pipe Size',\r\n width: 100,\r\n },\r\n {\r\n field: 'pipeSchedule',\r\n headerName: 'Pipe Schedule',\r\n width: 150,\r\n type: 'singleSelect',\r\n },\r\n {\r\n field: 'stencil1',\r\n headerName: 'Stencil',\r\n width: 100,\r\n },\r\n {\r\n field: 'stencil2',\r\n headerName: 'Stencil',\r\n width: 100,\r\n },\r\n {\r\n field: 'stencil3',\r\n headerName: 'Stencil',\r\n width: 100,\r\n },\r\n {\r\n field: 'stencil4',\r\n headerName: 'Stencil',\r\n width: 100,\r\n },\r\n {\r\n field: 'weldType',\r\n headerName: 'Weld Type',\r\n width: 100,\r\n },\r\n {\r\n field: 'weldLocation',\r\n headerName: 'Weld Location',\r\n width: 125,\r\n },\r\n {\r\n field: 'process',\r\n headerName: 'Process',\r\n width: 100,\r\n },\r\n {\r\n field: 'bakeOut',\r\n headerName: 'Bake Out',\r\n width: 100,\r\n },\r\n {\r\n field: 'preheat',\r\n headerName: 'Pre Heat',\r\n width: 100,\r\n },\r\n {\r\n field: 'ndePercentage',\r\n headerName: 'NDE %',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', '5%', '10%', '20%', '100%', 'N/A']\r\n },\r\n {\r\n field: 'prePWHT',\r\n headerName: 'Pre PWHT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'postPWHT',\r\n headerName: 'Post PWHT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'paut',\r\n headerName: 'PA/UT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'rt',\r\n headerName: 'RT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'pt',\r\n headerName: 'PT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'mt',\r\n headerName: 'MT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'ht',\r\n headerName: 'HT',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'pmi',\r\n headerName: 'PMI',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'fn',\r\n headerName: 'FN',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'bhn',\r\n headerName: 'BHN',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n type: 'singleSelect',\r\n valueOptions: ['', 'Yes', 'No']\r\n },\r\n {\r\n field: 'dateSentOut',\r\n headerName: 'Date Sent Out',\r\n type: 'date',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 150,\r\n },\r\n {\r\n field: 'dateCompleted',\r\n headerName: 'Date Completed',\r\n type: 'date',\r\n editable: (auth.accessLevel >= 40 || auth.accessLevel === 15) && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 150,\r\n },\r\n {\r\n field: 'dateReviewedBy',\r\n headerName: 'Date Reviewed By',\r\n type: 'date',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 150,\r\n },\r\n {\r\n field: 'dateDataEntered',\r\n headerName: 'Date Data Entered',\r\n type: 'date',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 150,\r\n },\r\n {\r\n field: 'requestBy',\r\n headerName: 'Request By',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 100,\r\n },\r\n {\r\n field: 'comments',\r\n headerName: 'Comments',\r\n editable: auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted),\r\n width: 300,\r\n }\r\n ];\r\n\r\n const handleModalOnClose = () => {\r\n setIsModalOpen(false);\r\n setModel(initialEmailModel);\r\n setSelectedEmails(null);\r\n };\r\n\r\n const formik = useFormik({\r\n initialValues: model,\r\n validationSchema: Yup.object().shape({\r\n projectId: Yup.number(),\r\n subject: Yup.string().required().max(250),\r\n message: Yup.string().required().max(10000)\r\n }),\r\n enableReinitialize: true,\r\n onSubmit: (values) => {\r\n if (values.emails.length === 0) {\r\n showAlert({ state: 'error', text: 'Please select at least one email' });\r\n return;\r\n }\r\n\r\n sendNotificationToContractors(values);\r\n },\r\n });\r\n\r\n const sendNotificationToContractors = (value) => {\r\n setIsLoading(true);\r\n ndeRequestService.sendNotificationToNDEContractor(value).then((res) => {\r\n showAlert({ state: 'success', text: res.message });\r\n getNDERequests();\r\n }).catch((ex) => {\r\n showAlert({ state: 'error', text: ex.message });\r\n }).finally(() => {\r\n handleModalOnClose();\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const notifyAdmin = () => {\r\n setIsLoading(true);\r\n hideConfirmModal();\r\n\r\n ndeRequestService.sendNotificationToAdmins(projectId, ndeRequestId).then((res) => {\r\n showAlert({ state: 'success', text: res.message });\r\n }).catch((ex) => {\r\n showAlert({ state: 'error', text: ex.message });\r\n }).finally(() => {\r\n handleModalOnClose();\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const fetchNDELog = () => {\r\n setIsLoading(true);\r\n\r\n ndeRequestService.getNDERequestLog(ndeRequestId).then((res) => {\r\n setIsLogModalOpen(true);\r\n setNDERequestLog(res);\r\n }).catch((ex) => {\r\n showAlert({ state: 'error', text: ex.message });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const completeNDERequest = () => {\r\n setIsLoading(true);\r\n\r\n ndeRequestService.completeNDERequest(ndeRequestId).then((res) => {\r\n history.push(`/project/nde-request-form/${projectId}`);\r\n showAlert({ state: 'success', text: res.message });\r\n }).catch((ex) => {\r\n showAlert({ state: 'error', text: ex.message });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n = 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted)) ? '' : ''}\r\n primaryButtonIconLeft={}\r\n primaryButtonOnClick={addLog}\r\n secondaryButtonText=\"Refresh Table\"\r\n secondaryButtonIconLeft={}\r\n secondaryButtonOnClick={getNDERequests}\r\n />\r\n
\r\n \r\n \r\n\r\n {\r\n (auth.accessLevel >= 40 && !(projectDetail.isCompleted || ndeRequest.isCompleted)) && (\r\n {\r\n setIsModalOpen(true);\r\n }}\r\n />\r\n )\r\n }\r\n\r\n {\r\n auth.accessLevel === 15 && !(projectDetail.isCompleted || ndeRequest.isCompleted) && (\r\n {\r\n showConfirmModal({\r\n title: 'Notify Admin',\r\n text: 'Are you sure you want to notify admin about this NDE Request?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n notifyAdmin();\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n {\r\n fetchNDELog();\r\n }}\r\n />\r\n\r\n {\r\n !ndeRequest.isCompleted && (\r\n {\r\n showConfirmModal({\r\n title: 'Notify Admin',\r\n text: 'Are you sure you want to notify admin about this NDE Request?',\r\n rightBtnText: 'Confirm',\r\n btnAction: () => {\r\n completeNDERequest();\r\n }\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n \r\n \r\n\r\n
\r\n\r\n \r\n \r\n (\r\n \r\n \r\n \r\n ),\r\n }}\r\n onCellEditCommit={({ id, field, value }) => {\r\n const originalModel = source.find((x) => x.id === id);\r\n if (originalModel) {\r\n originalModel[field] = value;\r\n handleAfterEdit(originalModel);\r\n }\r\n }}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Select Recipient(s)\r\n *\r\n \r\n
\r\n {\r\n if (option.length > 0) {\r\n if (option[option.length - 1].__isNew__) {\r\n const emailRegex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$/;\r\n\r\n if (!emailRegex.test(option[option.length - 1].value)) {\r\n return;\r\n }\r\n }\r\n }\r\n setSelectedEmails(option);\r\n let tempArr = [];\r\n\r\n if (option) {\r\n tempArr = option.map((x) => ({\r\n name: x.label,\r\n emailAddress: x.value\r\n }));\r\n }\r\n formik.setFieldValue('emails', tempArr);\r\n }}\r\n />\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n\r\n setIsLogModalOpen(false)}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n ndeRequestLog.map((log) => (\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n\r\n \r\n
FromLogDate Time
{log.createdBy}{log.log}{log.dateCreated}
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({\r\n auth: state.auth,\r\n projectDetail: state.projectDetail\r\n});\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions,\r\n ...projectDetailRedux.actions\r\n }\r\n)(NDRequestFormPage);","/* eslint-disable max-len */\r\n/* eslint-disable react/no-unstable-nested-components */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-console */\r\n// DEPENDENCIES\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Chart } from 'react-google-charts';\r\n// import moment from 'moment';\r\n// COMPONENTS\r\nimport Table from 'react-bootstrap/Table';\r\nimport { HiOutlineRefresh } from 'react-icons/hi';\r\n// ICONS\r\n// CUSTOM COMPONENTS\r\nimport Section from '../../../../components/Section';\r\nimport ContentBlock from '../../../../components/ContentBlock';\r\nimport CustomBlock from '../../../../components/CustomBlock';\r\nimport ContentHeader from '../../../../components/ContentHeader';\r\nimport SelectBlock from '../../../../components/SelectBlock';\r\nimport OverLay from '../../../../components/Overlay';\r\n// SERVICES\r\nimport * as weldLogService from '../../../../services/project/weldLogService';\r\nimport * as projectService from '../../../../services/project/projectService';\r\n// REDUX\r\nimport * as alert from '../../../../redux/alertToastRedux';\r\nimport * as confirmModal from '../../../../redux/confirmModalRedux';\r\n\r\nconst KPIReportPage = (props) => {\r\n const { showAlert } = props;\r\n const { projectId } = useParams();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [contractors, setContractors] = useState([]);\r\n const [selectedContractor, setSelectedContractor] = useState({ label: 'All', value: null });\r\n\r\n const [data, setData] = useState({\r\n flangeLogReport: [],\r\n testPackageReport: {\r\n totalTestPackages: 0,\r\n ndePercentageComplete: 0,\r\n hydroPercentageComplete: 0,\r\n postPercentageComplete: 0,\r\n packageSoldPercentageComplete: 0,\r\n overallTotalCompleted: 0\r\n },\r\n weldLogReport: {\r\n totalWelds: 0,\r\n totalShopWelds: 0,\r\n totalFieldWelds: 0,\r\n totalTieInWelds: 0,\r\n completedShopWelds: 0,\r\n completedFieldWelds: 0,\r\n completedTieInWelds: 0,\r\n acceptedShopWelds: 0,\r\n acceptedTieInFieldWelds: 0,\r\n rejectedShopWelds: 0,\r\n rejectedTieInFieldWelds: 0,\r\n shopWeldRejectionRate: 0,\r\n tieInFieldWeldRejectionRate: 0\r\n },\r\n ndeRequest: {\r\n completedNDERequest: 0,\r\n totalNDERequest: 0\r\n },\r\n psvLogReport: {\r\n totalApiTestReportCompleted: 0,\r\n totalPopTestReportCompleted: 0,\r\n totalPsv: 0,\r\n totalQcCompleted: 0\r\n }\r\n });\r\n const [flangeChartData, setFlangeChartData] = useState([\r\n ['Size', 'Total number of bolt ups', 'Bolt ups Reported Completed', 'Total bolt ups QC Complete', 'Total bolt ups QA Complete', 'Total Torque Complete']\r\n ]);\r\n const [flangeChartDataByPsv, setFlangeChartDataByPsv] = useState([\r\n ['Size', 'Total number of bolt ups', 'Bolt ups Reported Completed', 'Total bolt ups QC Complete', 'Total bolt ups QA Complete', 'Total Torque Complete']\r\n ]);\r\n const [calcData, setCalcData] = useState({\r\n totalNumberOfBoltUps: 0,\r\n boltUpsReportedComplete: 0,\r\n totalBoltUpsQcComplete: 0,\r\n totalBoltUpsQaComplete: 0,\r\n totalTorqueComplete: 0,\r\n percentReportedComplete: 0,\r\n percentRemaining: 0\r\n });\r\n const [calcDataByPsv, setCalcDataByPsv] = useState({\r\n totalNumberOfBoltUps: 0,\r\n boltUpsReportedComplete: 0,\r\n totalBoltUpsQcComplete: 0,\r\n totalBoltUpsQaComplete: 0,\r\n totalTorqueComplete: 0,\r\n percentReportedComplete: 0,\r\n percentRemaining: 0\r\n });\r\n const [flangeLogData, setFlangeLogData] = useState([]);\r\n const [tpChartData, setTpChartData] = useState([\r\n ['Type', '% Complete']\r\n ]);\r\n const [psvChartData, setPsvChartData] = useState([\r\n ['Report', '# Completed']\r\n ]);\r\n\r\n const [hasDataLoaded, setHasDataLoaded] = useState(false);\r\n const [totalWeldChartData, setTotalWeldChartData] = useState(['Weld Location', 'Total', 'Completed']);\r\n const [rejectWeldChartData, setRejectWeldChartData] = useState([]);\r\n const [ndeRequestData, setNDERequestData] = useState([\r\n ['NDE Request', 'Count']\r\n ]);\r\n const [flangeLogMetaData, setFlangeLogMetaData] = useState({\r\n totalFlange: 0,\r\n totalQAComplete: 0,\r\n totalQCComplete: 0,\r\n totalFlangeByPsv: 0,\r\n totalQACompleteByPsv: 0,\r\n totalQCCompleteByPsv: 0,\r\n });\r\n\r\n useEffect(() => {\r\n getContractors();\r\n getKPIReport();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedContractor && hasDataLoaded) {\r\n getWeldLogKPIData();\r\n }\r\n }, [selectedContractor]);\r\n\r\n const getWeldLogKPIData = () => {\r\n setIsLoading(true);\r\n\r\n projectService.getKPIReportForWeldLogByContractor(projectId, selectedContractor.value || '').then((res) => {\r\n const tempData = { ...data };\r\n setData({ ...tempData, weldLogReport: res.weldLogReport });\r\n prepareTotalWeldLogChart(res.weldLogReport);\r\n prepareRejectedWeldLogChart(res.weldLogReport);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getContractors = () => {\r\n setIsLoading(true);\r\n\r\n weldLogService.getContractors(projectId).then((res) => {\r\n setContractors([{ label: 'All', value: null }, ...res]);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const getKPIReport = () => {\r\n setIsLoading(true);\r\n projectService.getKPIReportData(projectId).then((res) => {\r\n setData(res);\r\n setFlangeLogData(res.flangeLogReport);\r\n prepareFlangeLogChart(res.flangeLogReport);\r\n prepareFlangeLogChartByPsv(res.flangeLogReportByPsv);\r\n prepareTestPackageChart(res.testPackageReport);\r\n prepareTotalWeldLogChart(res.weldLogReport);\r\n prepareRejectedWeldLogChart(res.weldLogReport);\r\n prepareNDERequestLogChart(res.ndeRequest);\r\n preparePsvLogChart(res.psvLogReport);\r\n setFlangeLogMetaData(res.flangeLogMetaData);\r\n setHasDataLoaded(true);\r\n }).catch((ex) => {\r\n showAlert({ text: ex.message, state: 'error' });\r\n }).finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const preparePsvLogChart = (res) => {\r\n setPsvChartData(\r\n [\r\n ['Report', '# Completed'],\r\n ['Total Psv', res.totalPsv],\r\n ['QC Done', res.totalQcCompleted],\r\n ['Pop Test Report Completed', res.totalPopTestReportCompleted],\r\n ['API Report Completed', res.totalApiTestReportCompleted]\r\n ]\r\n );\r\n };\r\n\r\n const prepareTestPackageChart = (res) => {\r\n setTpChartData(\r\n [\r\n ['Type', '% Complete'],\r\n ['NDE% Complete', res.ndePercentageComplete],\r\n ['Hydro% Complete', res.hydroPercentageComplete],\r\n ['Post% Complete', res.postPercentageComplete],\r\n ['Package Sold%', res.packageSoldPercentageComplete]\r\n ]\r\n );\r\n };\r\n\r\n const prepareNDERequestLogChart = (res) => {\r\n setNDERequestData(\r\n [\r\n ['NDE Request', 'Count'],\r\n ['Total NDE Requests', res.totalNDERequest],\r\n ['Completed NDE Requests', res.completedNDERequest]\r\n ]\r\n );\r\n };\r\n\r\n const prepareTotalWeldLogChart = (res) => {\r\n setTotalWeldChartData(\r\n [\r\n ['Weld Location', 'Total', 'Completed'],\r\n ['Shop Weld', res.totalShopWelds, res.completedShopWelds],\r\n ['Field Weld', res.totalFieldWelds, res.completedFieldWelds],\r\n ['Tie In Weld', res.totalTieInWelds, res.completedTieInWelds]\r\n ]\r\n );\r\n };\r\n\r\n const prepareRejectedWeldLogChart = (res) => {\r\n setRejectWeldChartData(\r\n [\r\n ['Weld Location', 'Total', 'Accepted', 'Rejected'],\r\n ['Shop Weld', res.totalShopWelds, res.acceptedShopWelds, res.rejectedShopWelds],\r\n ['Field/Tie-in Weld', res.totalFieldWelds + res.totalTieInWelds, res.acceptedTieInFieldWelds, res.rejectedTieInFieldWelds],\r\n ]\r\n );\r\n };\r\n\r\n const prepareFlangeLogChart = (res) => {\r\n const totalNumberOfBoltUps = res.reduce((a, v) => a + v.totalNumberOfBoltUps, 0);\r\n const boltUpsReportedComplete = res.reduce((a, v) => a + v.boltUpsReportedComplete, 0);\r\n const totalBoltUpsQcComplete = res.reduce((a, v) => a + v.totalBoltUpsQcComplete, 0);\r\n const totalBoltUpsQaComplete = res.reduce((a, v) => a + v.totalBoltUpsQaComplete, 0);\r\n const totalTorqueComplete = res.reduce((a, v) => a + v.totalTorqueComplete, 0);\r\n const percentReportedComplete = totalNumberOfBoltUps === 0 ? 0 : boltUpsReportedComplete / totalNumberOfBoltUps;\r\n const percentRemaining = 100 - (percentReportedComplete * 100);\r\n\r\n setCalcData({\r\n totalNumberOfBoltUps,\r\n boltUpsReportedComplete,\r\n totalBoltUpsQcComplete,\r\n percentReportedComplete,\r\n percentRemaining\r\n });\r\n\r\n const modifiedChartData = [...flangeChartData, ['Total', totalNumberOfBoltUps, boltUpsReportedComplete, totalBoltUpsQcComplete, totalBoltUpsQaComplete, totalTorqueComplete]];\r\n\r\n adjustChartData(res, modifiedChartData);\r\n };\r\n\r\n const prepareFlangeLogChartByPsv = (res) => {\r\n const totalNumberOfBoltUps = res.reduce((a, v) => a + v.totalNumberOfBoltUps, 0);\r\n const boltUpsReportedComplete = res.reduce((a, v) => a + v.boltUpsReportedComplete, 0);\r\n const totalBoltUpsQcComplete = res.reduce((a, v) => a + v.totalBoltUpsQcComplete, 0);\r\n const totalBoltUpsQaComplete = res.reduce((a, v) => a + v.totalBoltUpsQaComplete, 0);\r\n const totalTorqueComplete = res.reduce((a, v) => a + v.totalTorqueComplete, 0);\r\n\r\n const percentReportedComplete = totalNumberOfBoltUps === 0 ? 0 : boltUpsReportedComplete / totalNumberOfBoltUps;\r\n const percentRemaining = 100 - (percentReportedComplete * 100);\r\n\r\n setCalcDataByPsv({\r\n totalNumberOfBoltUps,\r\n boltUpsReportedComplete,\r\n totalBoltUpsQcComplete,\r\n percentReportedComplete,\r\n percentRemaining\r\n });\r\n\r\n const modifiedChartData = [...flangeChartDataByPsv, ['Total', totalNumberOfBoltUps, boltUpsReportedComplete, totalBoltUpsQcComplete, totalBoltUpsQaComplete, totalTorqueComplete]];\r\n\r\n adjustChartDataByPsv(res, modifiedChartData);\r\n };\r\n\r\n const adjustChartData = (arr, modifiedChartData) => {\r\n arr.forEach((x) => {\r\n modifiedChartData.push([x.size, x.totalNumberOfBoltUps, x.boltUpsReportedComplete, x.totalBoltUpsQcComplete, x.totalBoltUpsQaComplete, x.totalTorqueComplete]);\r\n });\r\n\r\n setFlangeChartData(modifiedChartData);\r\n console.log(calcData, flangeLogData, flangeLogMetaData);\r\n };\r\n\r\n const adjustChartDataByPsv = (arr, modifiedChartData) => {\r\n arr.forEach((x) => {\r\n modifiedChartData.push([x.size, x.totalNumberOfBoltUps, x.boltUpsReportedComplete, x.totalBoltUpsQcComplete, x.totalBoltUpsQaComplete, x.totalTorqueComplete]);\r\n });\r\n\r\n setFlangeChartDataByPsv(modifiedChartData);\r\n console.log(calcDataByPsv, flangeLogData);\r\n };\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n
\r\n \r\n \r\n }\r\n primaryButtonOnClick={() => window.location.reload()}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Total Test Packages\r\n NDE% Complete\r\n Hydro% Complete\r\n Post% Complete\r\n Package Sold%\r\n Overall Total #\r\n \r\n \r\n \r\n \r\n {data.testPackageReport.totalTestPackages}\r\n \r\n {(data.testPackageReport.ndePercentageComplete).toFixed(2)}\r\n %\r\n \r\n \r\n {(data.testPackageReport.hydroPercentageComplete).toFixed(2)}\r\n %\r\n \r\n \r\n {(data.testPackageReport.postPercentageComplete).toFixed(2)}\r\n %\r\n \r\n \r\n {(data.testPackageReport.packageSoldPercentageComplete).toFixed(2)}\r\n %\r\n \r\n {data.testPackageReport.overallTotalCompleted}\r\n \r\n \r\n \r\n \r\n\r\n
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n flangeLogData.map((x) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n
SizeTotal number of bolt upsBolt ups Reported CompleteTotal bolt ups QC CompletePercent Reported completePercent remaining
Total{calcData.totalNumberOfBoltUps}{calcData.boltUpsReportedComplete}{calcData.totalBoltUpsQcComplete}\r\n {(calcData.percentReportedComplete * 100).toFixed(2)}\r\n %\r\n \r\n {calcData.percentRemaining.toFixed(2)}\r\n %\r\n
{x.size}{x.totalNumberOfBoltUps}{x.boltUpsReportedComplete}{x.totalBoltUpsQcComplete}\r\n {(x.percentReportedComplete * 100).toFixed(2)}\r\n %\r\n \r\n {x.totalNumberOfBoltUps === 0 ? '0.00' : x.percentRemaining.toFixed(2)}\r\n %\r\n
\r\n
*/}\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {\r\n setSelectedContractor(opt);\r\n }}\r\n />\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total Welds
{data.weldLogReport.totalWelds}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total Shop WeldsTotal Field WeldsTotal Tie-in Welds
{data.weldLogReport.totalShopWelds}{data.weldLogReport.totalFieldWelds}{data.weldLogReport.totalTieInWelds}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Completed Shop WeldsCompleted Field WeldsCompleted Tie-in Welds
{data.weldLogReport.completedShopWelds}{data.weldLogReport.completedFieldWelds}{data.weldLogReport.completedTieInWelds}
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Rejection RateTotal Shop WeldAccepted Shop WeldsRejected Shop Welds
\r\n {(data.weldLogReport.shopWeldRejectionRate).toFixed(2)}\r\n %\r\n {data.weldLogReport.totalShopWelds}{data.weldLogReport.acceptedShopWelds}{data.weldLogReport.rejectedShopWelds}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Rejection RateTotal Field/Tie-in WeldAccepted Field/Tie-in WeldsRejected Field/Tie-in Welds
\r\n {(data.weldLogReport.tieInFieldWeldRejectionRate).toFixed(2)}\r\n %\r\n {data.weldLogReport.totalTieInWelds + data.weldLogReport.totalFieldWelds}{data.weldLogReport.acceptedTieInFieldWelds}{data.weldLogReport.rejectedTieInFieldWelds}
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Total NDE RequestCompleted NDE Request
{data.ndeRequest.totalNDERequest}{data.ndeRequest.completedNDERequest}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(\r\n mapStateFromProps,\r\n {\r\n ...alert.actions,\r\n ...confirmModal.actions\r\n }\r\n)(KPIReportPage);","/* eslint-disable camelcase */\r\n\r\n// DEPENDENCIES\r\nimport React, {\r\n useEffect,\r\n useState,\r\n} from 'react';\r\nimport { connect } from 'react-redux';\r\nimport jwt_decode from 'jwt-decode';\r\nimport {\r\n Switch,\r\n Route,\r\n Redirect,\r\n useLocation,\r\n} from 'react-router-dom';\r\nimport { enableBodyScroll } from 'body-scroll-lock';\r\n// ROUTES\r\nimport PrivateRoute from './routes/PrivateRoute';\r\n// CUSTOM COMPONENTS\r\nimport ConfirmModal from './components/ConfirmModal';\r\nimport AlertToast from './components/AlertToast';\r\n// AUTHENTICATION\r\nimport LoginPage from './pages/admin/authentication/LoginPage';\r\n// MANAGEMENT PAGES - SYSTEM\r\nimport UserListingPage from './pages/admin/management/system/user/UserListingPage';\r\nimport UserProfilePage from './pages/admin/management/system/user/UserProfilePage';\r\n// PROJECT\r\n// -- Project\r\nimport ProjectListingPage from './pages/admin/project/project/ProjectListingPage';\r\nimport ProjectManagementPage from './pages/admin/project/project/ProjectManagementPage';\r\nimport ProjectDocumentPage from './pages/admin/project/project/ProjectDocumentPage';\r\nimport TestPackageLogPage from './pages/admin/project/project/TestPackageLogPage';\r\nimport FlangeLogPage from './pages/admin/project/project/FlangeLogPage';\r\nimport WeldLogPage from './pages/admin/project/project/WeldLogPage';\r\nimport PSVLogPage from './pages/admin/project/project/PSVLogPage';\r\nimport LogDocumentPage from './pages/admin/project/project/documents/LogDocumentPage';\r\nimport DailyFormsPage from './pages/admin/project/project/DailyFormsPage';\r\nimport DailyInspectionVtFormPage from './pages/admin/project/project/DailyInspectionVtFormPage';\r\nimport ProjectAccessPage from './pages/admin/project/project/ProjectAccessPage';\r\nimport NDERequestListingPage from './pages/admin/project/project/NDERequestListingPage';\r\n// -- WALL CHART\r\n// -- EQUIPMENT\r\n// -- STATUS\r\nimport CustomStatusListingPage from './pages/admin/project/management/status/CustomStatusListingPage';\r\n// -- CLIENT\r\nimport ClientListingPage from './pages/admin/project/management/client/ClientListingPage';\r\nimport ClientManagementPage from './pages/admin/project/management/client/ClientManagementPage';\r\n// -- CONTRACTOR\r\nimport ContractorListingPage from './pages/admin/project/management/contractor/ContractorListingPage';\r\nimport ContractorManagementPage from './pages/admin/project/management/contractor/ContractorManagementPage';\r\nimport ProjectRoute from './routes/ProjectRoute';\r\nimport DailyFormNotificationEmailListingPage from './pages/admin/management/system/notificationEmail/DailyFormNotificationEmailListingPage';\r\nimport WeldLogReportPage from './pages/admin/project/project/WeldLogReportPage';\r\nimport FlangeLogReportPage from './pages/admin/project/project/FlangeLogReportPage';\r\nimport DailyFlangeLogFormPage from './pages/admin/project/project/DailyFlangeLogFormPage';\r\nimport NDERequestFormPage from './pages/admin/project/project/NDERequestFormPage';\r\nimport KPIReportPage from './pages/admin/project/project/KPIReportPage';\r\n// -- COMPONENTS\r\n// -- MENU ITEMS\r\n\r\nconst Routes = (props) => {\r\n const { auth } = props;\r\n const [isAuthorized, setIsAuthorized] = useState(true);\r\n const { pathname } = useLocation();\r\n\r\n useEffect(() => {\r\n const body = document.querySelector('body');\r\n window.scrollTo(0, 0);\r\n enableBodyScroll(body);\r\n }, [pathname]);\r\n\r\n const validateAccess = () => {\r\n if (auth.authToken !== '') {\r\n try {\r\n const decodedToken = jwt_decode(auth.authToken);\r\n setIsAuthorized(decodedToken);\r\n } catch (ex) {\r\n setIsAuthorized(false);\r\n }\r\n } else {\r\n setIsAuthorized(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n validateAccess();\r\n }, [auth]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {\r\n isAuthorized\r\n ? (\r\n <>\r\n {/* MANAGEMENT PAGES - SYSTEM */}\r\n \r\n\r\n \r\n\r\n {/* PROJECTS */}\r\n \r\n\r\n \r\n\r\n {/* PROJECT MANAGEMENT */}\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {/* STATUS MANAGEMENT */}\r\n \r\n\r\n \r\n\r\n {/* CLIENT MANAGEMENT */}\r\n \r\n\r\n \r\n\r\n \r\n\r\n {/* CONTRACTOR MANAGEMENT */}\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n : \r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateFromProps = (state) => ({ auth: state.auth });\r\n\r\nexport default connect(mapStateFromProps, null)(Routes);","/* eslint-disable import/no-unresolved */\r\n\r\n// DEPENDENCIES\r\nimport React from 'react';\r\nimport { LicenseInfo } from '@mui/x-license-pro';\r\nimport HttpsRedirect from 'react-https-redirect';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport Routes from './Routes';\r\n// CUSTOM COMPONENTS\r\n// STYLESHEETS\r\nimport 'react-table/react-table.css';\r\nimport './assets/css/main.css';\r\nimport './assets/custom/custom.css';\r\n// HELPERS\r\nimport constants from './constants/constants';\r\n\r\nLicenseInfo.setLicenseKey(constants.MUI_X_LICENSE_KEY);\r\n\r\nconst App = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default App;","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({\r\n getCLS,\r\n getFID,\r\n getFCP,\r\n getLCP,\r\n getTTFB\r\n }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;","// DEPENDENCIES\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport App from './app/App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport store, { persistor } from './app/redux/store';\r\n\r\nconst { PUBLIC_URL } = process.env;\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\nreportWebVitals();"],"sourceRoot":""}