{"version":3,"sources":["assets/images/Logo.png","store/layout/actionTypes.js","store/layout/actions.js","store/auth/register/actionTypes.js","store/auth/register/actions.js","store/auth/login/actionTypes.js","store/auth/login/actions.js","store/auth/forgetpwd/actionTypes.js","store/auth/forgetpwd/actions.js","store/auth/profile/actionTypes.js","store/auth/profile/actions.js","store/calendar/actionTypes.js","store/calendar/actions.js","store/Breadcrumb/actionTypes.js","store/Breadcrumb/actions.js","pages/Authentication/user-profile.js","helpers/url_helper.js","pages/Authentication/Login.js","pages/Authentication/Logout.js","pages/Authentication/Register.js","assets/images/Ador_light.png","pages/Authentication/ForgetPassword.js","pages/Dashboard/Miniwidget.js","pages/Dashboard/areachart.js","pages/Dashboard/barchart.js","components/Common/PageDataContext.js","pages/Dashboard/Campuslist.js","pages/Dashboard/yearly-sales.js","pages/Dashboard/Speedometer.js","pages/ViolationLogs/slidewithindicator.js","pages/ViolationLogs/ViewImageModal.js","pages/ViolationLogs/ViolationLogsComponents.js","pages/Dashboard/ViolationTableComponent.js","pages/Dashboard/Heatmapcontainer.js","pages/Dashboard/index.js","store/auth/authContext.js","assets/images/Ador_logo_cropped.png","pages/ViolationLogs/EditViolationModal.js","components/Common/Utility.js","pages/ViolationLogs/ViolationLogs.js","pages/Map/InfoWindowEx.js","pages/Map/MapContainer.js","pages/Map/Campuslist.js","pages/Map/Maps.js","pages/VehicleCount/VehicleCountComponents.js","pages/VehicleCount/MaxSpeedChart.js","pages/VehicleCount/DiskChartSpeedDistribution.js","pages/VehicleCount/DiskChartBkup.js","pages/VehicleCount/VehicleCntAreachart.js","pages/VehicleCount/AvgSpeedChart.js","pages/VehicleCount/VehicleCount.js","pages/VehicleDetails/EditVehicleDataModal.js","assets/templates/VehicleDetailTemplate.csv","pages/VehicleDetails/UploadVehicleDataExcel.js","pages/VehicleDetails/AddVehicleData.js","pages/VehicleDetails/RegisterVehicle.js","pages/DeviceManagement/deviceList.js","pages/DeviceManagement/MapContext.js","pages/DeviceManagement/DeviceMapContainer.js","pages/DeviceManagement/addDevice.js","pages/DeviceManagement/firmwareConfig.js","pages/DeviceManagement/deviceManagementTabs.js","assets/images/challanpreview.jpg","assets/images/violationImage.png","assets/images/ZoneConfigImage.jpg","pages/Settings/addChallanSettings.js","pages/Settings/addSmtpConfig.js","pages/UserRoles/UserRoles.js","pages/UserManagement/UserRegistration.js","pages/UserManagement/DeleteUser.js","pages/UserManagement/EditUser.js","pages/UserManagement/ChangePassword.js","pages/UserManagement/UserManagement.js","pages/ViolationLogs/ViolationsReport.js","pages/Settings/addDraggableZoneConfig.js","pages/UserManagement/DefaultChangePassword.js","routes/allRoutes.js","helpers/firebase_helper.js","routes/middleware/Authmiddleware.js","components/CommonForBoth/TopbarDropdown/NotificationDropdown.js","components/CommonForBoth/TopbarDropdown/ProfileMenu.js","assets/images/adorflower.ico","components/VerticalLayout/Header.js","components/VerticalLayout/SidebarContent.js","components/VerticalLayout/Sidebar.js","components/VerticalLayout/Footer.js","components/CommonForBoth/Rightbar.js","assets/audio/notification.mp3","components/Common/Breadcrumb.js","components/VerticalLayout/index.js","components/NonAuthLayout.js","routes/ProtectedRoute.js","App.js","serviceWorker.js","store/layout/reducer.js","store/Breadcrumb/reducer.js","store/auth/login/reducer.js","store/auth/register/reducer.js","store/auth/forgetpwd/reducer.js","store/auth/profile/reducer.js","store/calendar/reducer.js","store/reducers.js","helpers/api_helper.js","helpers/jwt-token-access/accessToken.js","helpers/fakebackend_helper.js","store/auth/register/saga.js","store/auth/login/saga.js","store/auth/forgetpwd/saga.js","store/auth/profile/saga.js","store/layout/saga.js","store/calendar/saga.js","store/sagas.js","store/index.js","index.js"],"names":["CHANGE_LAYOUT","CHANGE_LAYOUT_WIDTH","CHANGE_SIDEBAR_THEME","CHANGE_SIDEBAR_TYPE","CHANGE_TOPBAR_THEME","SHOW_SIDEBAR","TOGGLE_LEFTMENU","SHOW_RIGHT_SIDEBAR","CHANGE_PRELOADER","changeLayout","layout","type","payload","changeLayoutWidth","width","changeSidebarTheme","theme","changeSidebarType","sidebarType","isMobile","changeTopbarTheme","topbarTheme","showRightSidebarAction","isopen","REGISTER_USER","REGISTER_USER_SUCCESSFUL","REGISTER_USER_FAILED","registerUserSuccessful","user","registerUserFailed","LOGIN_USER","LOGIN_SUCCESS","LOGOUT_USER","LOGOUT_USER_SUCCESS","API_ERROR","loginSuccess","logoutUserSuccess","apiError","error","FORGET_PASSWORD","FORGET_PASSWORD_SUCCESS","FORGET_PASSWORD_ERROR","userForgetPasswordSuccess","message","EDIT_PROFILE","PROFILE_SUCCESS","PROFILE_ERROR","RESET_PROFILE_FLAG","profileSuccess","msg","profileError","GET_EVENTS","GET_EVENTS_SUCCESS","GET_EVENTS_FAIL","ADD_NEW_EVENT","ADD_EVENT_SUCCESS","ADD_EVENT_FAIL","UPDATE_EVENT","UPDATE_EVENT_SUCCESS","UPDATE_EVENT_FAIL","DELETE_EVENT","DELETE_EVENT_SUCCESS","DELETE_EVENT_FAIL","GET_CATEGORIES","GET_CATEGORIES_SUCCESS","GET_CATEGORIES_FAIL","getEventsFail","addEventSuccess","event","addEventFail","updateEventSuccess","updateEventFail","deleteEventSuccess","deleteEventFail","getCategoriesFail","SET_BREADCRUMB_ITEMS","setBreadcrumbItems","title","items","withRouter","connect","state","Profile","success","editProfile","resetProfileFlag","props","useState","email","setemail","name","setname","idx","setidx","useEffect","sessionStorage","getItem","obj","JSON","parse","username","uid","setTimeout","breadcrumbItems","link","Fragment","Row","Col","lg","Alert","color","Card","CardBody","Media","className","body","onValidSubmit","e","v","values","label","value","placeholder","required","Button","apiEndpoint","setError","errorColor","setErrorColor","otpVisible","setOtpVisible","sendOtpDisabled","setSendOtpDisabled","otp","setOtp","timer","setTimer","countdown","setCountdown","loginButtonVisible","setLoginButtonVisible","setUsername","password","setPassword","clearInterval","Container","md","xl","src","logoDark","alt","height","nativeEvent","submitter","fetch","method","headers","stringify","UserName","Password","then","res","json","response","status","intervalId","setInterval","prev","handleSendOtp","OTP","token","cleanToken","replace","decodedToken","jwt","decode","setItem","userFullName","encodedPasswordChange","sign","needsPasswordChange","history","push","handleValidSubmit","onChange","target","disabled","Date","getFullYear","Logout","logoutUser","propTypes","PropTypes","object","func","Account","registrationError","loading","registerUser","to","id","ForgetPassword","forgetError","forgetSuccessMsg","userForgetPassword","role","style","marginTop","WidgetPropsViolations","Miniwidget","todaysCount","settodaysCount","monthCount","setmonthCount","todaysChange","monthChange","bounce","setbounce","intCampusID","CampusID","getData","a","data","TotalViolationsCount","responseMonthly","dataMonthly","console","log","iconClass","total","average","badgecolor","previosPeriod","map","report","key","sm","onAnimationEnd","maxHeight","minHeight","display","textSizeAdjust","fontWeight","fontSize","areachart","violations","setviolations","vehiclecount","setvehiclecount","locations","setlocations","violationCnt","setviolationCnt","vehicleCountNo","setvehicleCountNo","VehicleCount","item","ViolationCount","LocationName","violationsCnt","vehicleCnt","options","colors","chart","toolbar","show","dataLabels","enabled","stroke","curve","grid","borderColor","row","opacity","legend","xaxis","categories","dir","series","Barchart","plotOptions","bar","horizontal","columnWidth","endingShape","ViolationsContext","React","createContext","setViolations","VehicleDataContext","vehicledetails","setVehicleData","CampusIdContext","selectedCampusval","setCampusValue","AllUsersListContext","usersData","setUsersData","CampusList","setItems","useContext","result","undefined","length","CampusName","Component","speedoMeterProps","Speedometer","todaysMaxSpeed","settodaysMaxSpeed","monthlyMaxSpeed","setmonthlyMaxSpeed","todaysAvgSpeed","settodaysAvgSpeed","MaxSpeed","responseAvg","dataAvg","AvgSpeed","maxValue","divHeight","divWidth","param","justifyContent","alignItems","forceRender","needleTransition","needleTransitionDuration","startColor","endColor","Slidewithindicator","violationImgArr","Imageitems","ImagePath","ViolationImgBase64Img","i","altText","parseInt","caption","activeIndex","next","bind","previous","goToIndex","onExiting","onExited","this","animating","nextIndex","setState","ImageIndextemp","ImageIndex","newIndex","slides","context","CarouselItem","zoomSrc","moveType","zoomScale","hideCloseButton","hideHint","Carousel","interval","keyboard","CarouselIndicators","onClickHandler","CarouselControl","direction","directionText","ViewImageModalComponent","setViolationImageIndex","ImgPath","Message","setAlert","warning","onConfirm","onCancel","confirmBtnBsStyle","setImageData","modalIsOpen","setModalIsOpen","imgData","alertmsg","toggle","onClick","Modal","isOpen","maxWidth","ModalHeader","tag","ModalBody","ReportType","SelectedReportTypeitem","setSelectedReportTypeItem","setReportType","boxes","document","getElementsByClassName","ViolationType","ViolationTypeitem","setSelectedViolationTypeitem","setViolationType","SpeedType","SelectedSpeedTypeitem","setSelectedSpeedTypeItem","setSpeedType","Search","SearchBar","componentRef","useRef","moment","format","columns","dataField","text","sort","csvExport","formatter","Violations","xOverflow","keyField","ref","baseProps","mapStyles","gradient","google","window","MapContainer","collection","nextProps","maps","visualization","Locations","centre","lat","lng","isEmpty","zoom","center","onReady","handleMapReady","positions","radius","GoogleApiWrapper","apiKey","libraries","Contextvalue","Provider","Campuslist","Heatmapcontainer","AuthContext","AuthProvider","children","userPermissions","setUserPermissions","setUserFullName","isAuthenticated","setIsAuthenticated","cookie","split","find","startsWith","checkAuth","EditViolationModalComponent","ANPRVal","setANPR","violationImageIndex","violationImage","showGenerateChallanButton","setshowGenerateChallanButton","modalOpen","setModalOpen","modal_small","setmodal_small","SelectedChallanType","setSelectedChallanType","TotalViolationFreq","setTotalViolationFreq","EmailPDFCheck","setEmailPDFCheck","showDeleteButton","setShowDeleteButton","newdata","CompanyName","setCompanyName","CompanyAddress1","setNewCompanyAddress1","CompanyAddress2","setNewCompanyAddress2","CityName","setCityName","StateName","setStateName","NewChallanAmount","setNewChallanAmount","ChallanType","setChallanType","CompanyLogo","setCompanyLogo","SecondaryCompanyLogo","setSecondaryCompanyLogo","showEmailButton","setShowEmailButton","showSMSButton","setShowSMSButton","DuplicateChallan","setDuplicateChallan","tog_small","classList","add","ViolationData","EnableEmail","EnableSMS","DownloadChallan","violationData","NewANPRVal","mode","RecordID","LocationID","IncidentTime","VehicleSpeed","ChallanID","VehicleOwner","VehicleOwnerName","Department","VehicleOwnerDept","EICName","ManagerName","RegistrationNumber","img","secondaryImg","CompanyAddress","CityAddress","doc","Speed","TotalViolationFrequency","ChallanAmount","UniqueChallanID","jsPDF","addFont","setFontSize","rect","addImage","line","save","VehicleOwnerEmailAddress","pdfData","output","EmailChallanToVehicleOwner","DownloadPDF","VehicleOwnerEmail","strToken","strImagePath","UserPermissions","userRolePermissions","DeleteViolations","EditDeleteStatus","for","recdID","slice","elindex","findIndex","someobject","splice","VehicleOwnerContact","ChallanConfigDetails","AddressLine1","AddressLine2","City","State","base64Image","secondBase64Image","location","href","cancelBtnBsStyle","showCancel","reverseButtons","GetChallanConfig","responseType","UncontrolledTooltip","placement","htmlFor","defaultValue","class","ModalFooter","getCurrentDate","separator","newDate","date","getDate","month","getMonth","year","btnstylesObj","ExportCSV","size","onExport","Campusitems","setCampusItems","SelectedCampusitem","setSelectedCampusItem","selectedCampusVal","setCampusSelected","FromDtTm","setFrmDttm","ToDtTm","setToDttm","Monthlyrt","setMonthlyrt","FromSpeed","setFrmSpeed","ToSpeed","setToSpeed","BoolANPR","selectedReportTypeVal","selectedSpeedTypeVal","setselectonLoadLocVal","editviolations","seteditviolations","datefilename","isLoading","setIsLoading","isDownloadingImage","setIsDownloadingImage","slicedViolation","setSlicedViolation","hidden","headerStyle","colum","colIndex","textAlign","backgroundColor","position","cell","hiddenWhenPrint","ViewImageModal","EditViolationModal","custompagination","paginationFactory","page","sizePerPage","lastPageText","firstPageText","nextPageText","prePageText","showTotal","alwaysShowAllBtns","paginationSize","sizePerPageList","onPageChange","handleSliceData","onSizePerPageChange","handleTableChange","sortField","sortOrder","endIndex","startIndex","tempData","EditViolations","campuslst","changeCampusSelectHandler","Locitems","setLocItems","SelectedLocitem","setSelectedLocItem","selectedLocVal","setLocSelected","locArr","Array","isArray","unshift","loclst","LocValue","changeReportTypeHandle","defaultChecked","checked","validate","myValidation","ctx","errorMessage","exportCSV","fileName","search","searchFormatted","xs","ButtonGroup","csvProps","TypeOfViolation","SpeedLimit","content","startY","head","autoTable","exportPDF","el","range","sel","createRange","getSelection","removeAllRanges","selectNodeContents","addRange","selectNode","execCommand","createTextRange","moveToElementText","select","copyToClipboardAsTable","getElementById","slicedData","current","table","currDate","toLocaleDateString","FileName","blob","saveAs","DownloadImage","Spinner","searchProps","onTableChange","onSort","pagination","InfoWindowEx","infoWindowRef","createRef","contentElement","createElement","prevProps","ReactDOM","render","Children","only","infowindow","setContent","onMarkerClick","marker","activeMarker","showingInfoWindow","url","tdStatus","LocationDetails","selectedPlace","cpuTemp","CPUTemperature","cpuUsage","CPUUsage","RamPer","RamPerc","UsagePer","DiskUsagePerc","LastUpadtedTime","TimeStamp","toLocaleString","timeZone","showInfoWindow","prevState","Latitude","Longitude","catch","initialCenter","tooltip","Status","Size","icon","scaledSize","visible","Table","exportingModule","Highcharts","require","MaxSpeedChart","maxSpeed","afterChartCreated","chartOptions","credits","yAxis","xAxis","labels","rangeSelector","selected","step","borderRadius","dataGrouping","exporting","buttons","contextButton","menuItems","filename","responsive","rules","condition","forExport","internalChart","forceUpdate","objToArr","newArrayOfObj","x","y","rest","setData","highcharts","callback","constructorType","updateArgs","HC_more","highcharts3d","drilldown","PieChart","exampleColors","DiskChartBK","speedData","margin","spacingTop","spacingBottom","spacingLeft","spacingRight","options3d","alpha","beta","accessibility","point","valueSuffix","pointFormat","pie","allowPointSelect","slicedOffset","shadow","startAngle","cursor","depth","innerSize","events","points","forEach","p","category","Color","lighten","toString","unselect","colorByPoint","speed","convertedArr","o","areaspline","fillOpacity","AvgSpeedChart","avgSpeed","fromDateChange","toDateChange","inputProps","startTime","endTime","now","setMinutes","getMinutes","getTimezoneOffset","toISOString","d","setHours","setDate","oneMonthAgo","setMonth","changeLocSelectHandler","requestBody","setrequestbody","SearchViolations","requestB","parsedData","formattedData","AverageSpeed","toFixed","ws","XLSX","json_to_sheet","wb","book_new","book_append_sheet","EditVehicleDataModalComponent","VehicleCurrentRowData","VehicleEditedDetails","setVehicleDetailsInputs","handleEditChange","EmployeeID","VehicleRegistrationNumber","VehicleOwnerAddress","VehicleID","VehicleDetails","VehicleDetail","dataindex","UploadVehicleDataModalComponent","file","setFile","files","formdata","FormData","campus","append","info","NoOfRowsAffected","reload","err","handleVehicleDataUploadClick","VehicleDetailsTemplate","download","AddVehicleDataModalComponent","setVehicleOwnerName","setEmployeeID","setVehicleRegistrationNumber","setVehicleOwnerDept","setVehicleOwnerEmailAddress","setVehicleOwnerContact","setVehicleOwnerAddress","onSubmit","RegExp","test","checkRegistrationNumber","isMulti","closeMenuOnSelect","hideSelectedOptions","components","Option","isSelected","allowSelectAll","pattern","minLength","maxLength","EditVehicleDataModal","GetVehicleDetails","VehicleDetailsList","AddVehicleData","modal","setModal","LocationList","setLocationList","setHardwareDetailsList","ControllerIPAddress","CameraIPAddress","MacAddress","FormValues","setFormValues","basic","setbasic","HardwareDetails","editLocationValues","seteditLocationValues","editControllerIP","seteditControllerIP","editCameraIP","seteditCameraIP","editRadarIP","editMacAddress","seteditMacAddress","editLatitude","setditLatitude","editLongitude","seteditLongitude","EditResponseMessage","setEditResponseMessage","EditResponseMessageType","setEditResponseMessageType","validateIpAddress","ResponseMessage","ResponseType","custom","RadarIPAddress","seteditR","LocationStatus","LatLongData","LatContext","LongContext","LatitudeContext","DeviceMapContainer","NewLatitudeValue","NewLongitudeValue","contextType","AddDevice","EncodedCampus","NewLocationValue","setNewLocationValue","NewControllerIPValue","setNewControllerIPValue","NewRadarIPValue","setNewRadarIPValue","NewCameraIPValue","setNewCameraIPValue","NewMacAddressValue","setNewMacAddressValue","setNewLatitudeValue","setNewLongitudeValue","NewCampusID","setNewCampusID","AddCampusResponse","setAddCampusResponse","AddCampusResponseType","setAddCampusResponseType","CampsuList","setCampusList","SelectedCampusValue","setSelectedCampusValue","AddNewCampusValue","setAddNewCampusValue","classNamePrefix","googleMapsApiKey","mapContainerStyle","latLng","FirmwareConfig","setSpeedLimit","GreenDisplayMsg","setGreenDisplayMsg","AmberDisplayMsg","setAmberDisplayMsg","RedDisplayMsg","setRedDisplayMsg","SelectedLocationValue","setSelectedLocationValue","setFirmwareDetails","AddMessageResponse","setAddMessageResponse","AddMessageResponseType","setAddMessageResponseType","GetLocationList","GetFirmwareList","LocationId","intLocationID","FirmwareDetails","GreenDisplayMessage","AmberDisplayMessage","RedDisplayMessage","DeviceManagementTabs","locationListData","activeTab","activeTab1","activeTab2","activeTab3","verticalActiveTab","customActiveTab","activeTabJustify","col1","col2","col3","col5","col6","col7","col8","col9","col10","col11","toggle1","t_col1","t_col2","t_col3","t_col5","t_col6","t_col7","t_col8","t_col9","t_col10","t_col11","toggle2","toggle3","toggleVertical","toggleCustom","tab","Nav","pills","NavItem","NavLink","classnames","active","TabContent","TabPane","tabId","EncodedLogo","ChallanDetailsResponse","setChallanDetailsResponse","Base64CompanyLogo","setBase64CompanyLogo","showChallanPreview","setShowChallanPreview","Offsymbol","paddingRight","OnSymbol","GetChallanDetails","scope","colSpan","CardImg","challanpreview","uncheckedIcon","checkedIcon","onColor","ValidateCompanyLog","fileExtension","pop","includes","fileType","reader","FileReader","readAsDataURL","onload","NewSMTPHost","setNewSMTPHost","NewSMTPPort","setNewSMTPPort","NewMailFrom","setMailFrom","NewPassword","setNewPassword","EnableSSLSwitch","setEnableSSLSwitch","EnableEmailAlerts","setEnableEmailAlerts","EnableSMSAlerts","setEnableSMSAlerts","GetSmtpDetails","SmtpConfigDetails","HostName","MailFrom","PortNumber","bsAlertStyle","Userroleitems","setUserroleItems","SelectedUserroleitem","setSelectedUserroleItem","selectedUserroleVal","setUserroleSelected","editviolationlogs","seteditviolationlogs","deleteviolationlogs","setDeleteViolationLogs","registerdevice","setregisterdevice","registervehicle","setregistervehicle","smtp","setsmtp","challan","setchallan","usermanagement","setusermanagement","rolemanagement","setrolemanagement","adduser","setadduser","editdeleteuser","seteditdeleteuser","addrole","setaddrole","editdeleterole","seteditdeleterole","changepassword","setchangepassword","alertModal","setAlertModal","addroleaccess","setaddroleaccess","editdeleteroleaccess","seteditdeleteroleaccess","AddRole","EditDeleteRole","UserRoleList","UserRolePermissions","RegisterDevice","RegisterVehicle","SMTP","Challan","UserManagement","RoleManagement","AddUser","EditDeleteUser","ChangePassword","float","funDelete","cancelBtnText","RowsAffected","tabIndex","roleName","UserRegistratinoModalComponent","FirstName","setFirstName","LastName","setLastName","EmailID","setEmailID","MobileNumber","setMobileNumber","setUserName","ConfirmPassword","setConfirmPassword","SendMail","setSendMail","SendSMS","setSendSMS","SendEodMail","setSendEodMail","SessionExpired","checkName","isUndefined","checkMobileNumber","confirmPassword","validRegExp","checkPasswords","NewData","match","DeleteUserModalComponent","useHistory","UserData","UserID","removeItem","EditUserModalComponent","setUserData","selectedCampusList","availableCampusList","availableLocationList","selectedLocationList","userRoleDetails","UserRoleID","UserRole","UserFullName","UserEmail","UserContactNumber","SendEoDMail","controlShouldRenderValue","ChangePasswordModalComponent","EditUser","DeleteUser","withFirstAndLast","sizePerPageRenderer","currSizePerPage","Users","trigger","btnRadiostylesObj","marginLeft","RegisteredVehicleFlag","setRegisteredVehicleFlag","selectedViolationTypeVal","speedLimit","setspeedLimit","vehicleOwner","setvehicleOwner","ownerEmail","setownerEmail","ownerNo","setownerNo","ownerDept","setownerDept","empID","setempID","violationFreq","setviolationFreq","setviolationsForExport","setheaders","dataArr","headersArr","arr","k","field","data1","setPolyCoordinates","setCircleCoordinates","setShowUpdatedImage","setImageUrl","setCoordinatesSaved","selectedImage","setSelectedImage","imageLoaded","setImageLoaded","setPoints","isPolygonClosed","setIsPolygonClosed","showStartingPoint","setShowStartingPoint","CampusVal","GetZoneConfigDetails","SelectedZoneSideItems","setSelectedZoneSideItems","SelectedTrafficDirection","setSelectedTrafficDirection","LocVal","ZoneConfig","ZoneROI","Base64UploadedImage","base64Img","Image","selectedOption","URL","createObjectURL","getStage","getPointerPosition","firstPoint","Math","sqrt","image","index","sides","fill","draggable","onDragEnd","updatedPoints","handleDragEnd","strokeWidth","flatMap","sceneFunc","shape","beginPath","moveTo","lineTo","closePath","fillStyle","fillStrokeShape","DefaultPasswordChangeComponent","setErrors","validationErrors","newErrors","Object","keys","userData","editViolations","vehicleCount","registerDevice","registerVehicle","smtpSettings","challanSettings","userManagement","addUser","editDeleteUser","roleManagement","addRole","editDeleteRole","changePassword","deleteViolations","dashboard","violationLogs","config","userRoutes","path","component","Dashboard","requiredPermissions","ViolationLogs","Maps","SMTPSettings","ChallanSettings","UserRoles","UserProfile","ViolationsReport","exact","authRoutes","Login","ForgetPwd","Register","Authmiddleware","Layout","isAuthProtected","pathname","from","withTranslation","menu","setMenu","Dropdown","DropdownToggle","DropdownMenu","t","setusername","DropdownItem","layoutType","showRightSidebar","leftMenu","leftSideBarType","toggleLeftmenu","createmenu","setCreateMenu","navigator","userAgent","logo","logoLightPng","tToggle","scrollElement","currentPosition","offsetTop","innerHeight","getScrollElement","scrollTop","pathName","MetisMenu","matchingMenuItem","getElementsByTagName","parent","parentElement","parent2El","childNodes","parent2","parent3","parent4","parent5","activateParentDropdown","initMenu","recalculate","Footer","fluid","changePreloader","preventDefault","layoutWidth","leftSideBarTheme","FormGroup","isPreloader","BreadcrumbData","Breadcrumb","setnotifications","itemLength","violationsStrng","audio","Audio","sound","Notifications","setlivenotifications","setViolationData","intUserID","intViolationsCnt","notifications","lastNotId","NotificationID","IncidentDescription","Campus","UpdatedAt","toast","POSITION","TOP_RIGHT","autoClose","loop","play","svgWidth","svgHeight","capitalizeFirstLetter","string","charAt","toUpperCase","toggleMenuCallback","scrollTo","Rightbar","NonAuthLayout","_fireBaseBackend","getFirebaseBackend","ProtectedRoute","booleanValue","every","permission","process","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","firebaseConfig","Promise","resolve","reject","firebase","auth","createUserWithEmailAndPassword","currentUser","_handleError","editProfileAPI","loginUser","signInWithEmailAndPassword","forgetPassword","sendPasswordResetEmail","protocol","host","logout","signOut","socialLoginUser","credential","GoogleAuthProvider","idToken","FacebookAuthProvider","signInWithCredential","addNewUserToFirestore","firestore","profile","additionalUserInfo","details","firstName","given_name","first_name","lastName","family_name","last_name","fullName","picture","createdDtm","FieldValue","serverTimestamp","lastLoginTime","set","setLoggeedInUser","getAuthenticatedUser","initializeApp","onAuthStateChanged","Auth","VerticalLayout","route","Boolean","hostname","INIT_STATE","showSidebar","action","initialState","login","account","Calendar","filter","rootReducer","combineReducers","calendar","axiosApi","axios","create","baseURL","get","post","put","delete","defaults","common","interceptors","use","postFakeForgetPwd","postJwtProfile","postJwtRegister","postJwtLogin","postJwtLogout","postJwtForgetPwd","getEvents","addNewEvent","updateEvent","deleteEvent","del","getCategories","watchUserRegister","accountSaga","call","takeEvery","all","fork","authSaga","forgetUser","watchUserPasswordForget","forgetPasswordSaga","watchProfile","ProfileSaga","changeLeftSidebarTheme","changeLeftSidebarType","watchChangeLayoutType","watchChangeLayoutWidth","watchChangeLeftSidebarTheme","watchChangeLeftSidebarType","watchChangeTopbarTheme","watchShowRightSidebar","LayoutSaga","changeBodyAttribute","attribute","setAttribute","manageBodyClass","cssClass","remove","changeTopbarThemeAction","removeAttribute","changeSidebarTypeAction","screen","fetchEvents","onAddNewEvent","onUpdateEvent","onDeleteEvent","onGetCategories","calendarSaga","rootSaga","AccountSaga","AuthSaga","ForgetSaga","sagaMiddleware","createSagaMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","run","app","forceRefresh","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.206b0fed.chunk.js","sourcesContent":["export default \"data:image/png;base64,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\"","/* LAYOUT */\nexport const CHANGE_LAYOUT = \"CHANGE_LAYOUT\"\nexport const CHANGE_LAYOUT_WIDTH = \"CHANGE_LAYOUT_WIDTH\"\nexport const CHANGE_SIDEBAR_THEME = \"CHANGE_SIDEBAR_THEME\"\nexport const CHANGE_SIDEBAR_TYPE = \"CHANGE_SIDEBAR_TYPE\"\n\n// topbar\nexport const CHANGE_TOPBAR_THEME = \"CHANGE_TOPBAR_THEME\"\n\n// show sidebar\nexport const SHOW_SIDEBAR = \"SHOW_SIDEBAR\"\nexport const TOGGLE_LEFTMENU = \"TOGGLE_LEFTMENU\"\n\n/* RIGHT SIDEBAR */\nexport const SHOW_RIGHT_SIDEBAR = \"SHOW_RIGHT_SIDEBAR\"\n\n// Preloader\nexport const CHANGE_PRELOADER = \"CHANGE_PRELOADER\"\n","import {\n CHANGE_LAYOUT,\n CHANGE_LAYOUT_WIDTH,\n CHANGE_SIDEBAR_THEME,\n CHANGE_SIDEBAR_TYPE,\n CHANGE_TOPBAR_THEME,\n SHOW_RIGHT_SIDEBAR,\n SHOW_SIDEBAR,\n CHANGE_PRELOADER,\n TOGGLE_LEFTMENU,\n} from \"./actionTypes\"\n\nexport const changeLayout = layout => ({\n type: CHANGE_LAYOUT,\n payload: layout,\n})\n\nexport const changePreloader = layout => ({\n type: CHANGE_PRELOADER,\n payload: layout,\n})\n\nexport const changeLayoutWidth = width => ({\n type: CHANGE_LAYOUT_WIDTH,\n payload: width,\n})\n\nexport const changeSidebarTheme = theme => ({\n type: CHANGE_SIDEBAR_THEME,\n payload: theme,\n})\n\nexport const changeSidebarType = (sidebarType, isMobile) => {\n return {\n type: CHANGE_SIDEBAR_TYPE,\n payload: { sidebarType, isMobile },\n }\n}\n\nexport const changeTopbarTheme = topbarTheme => ({\n type: CHANGE_TOPBAR_THEME,\n payload: topbarTheme,\n})\n\nexport const showRightSidebarAction = isopen => ({\n type: SHOW_RIGHT_SIDEBAR,\n payload: isopen,\n})\n\nexport const showSidebar = isopen => ({\n type: SHOW_SIDEBAR,\n payload: isopen,\n})\n\nexport const toggleLeftmenu = isopen => ({\n type: TOGGLE_LEFTMENU,\n payload: isopen,\n})\n","export const REGISTER_USER = \"register_user\"\nexport const REGISTER_USER_SUCCESSFUL = \"register_user_successfull\"\nexport const REGISTER_USER_FAILED = \"register_user_failed\"\n","import {\n REGISTER_USER,\n REGISTER_USER_SUCCESSFUL,\n REGISTER_USER_FAILED,\n} from \"./actionTypes\"\n\nexport const registerUser = user => {\n return {\n type: REGISTER_USER,\n payload: { user },\n }\n}\n\nexport const registerUserSuccessful = user => {\n return {\n type: REGISTER_USER_SUCCESSFUL,\n payload: user,\n }\n}\n\nexport const registerUserFailed = user => {\n return {\n type: REGISTER_USER_FAILED,\n payload: user,\n }\n}\n","export const LOGIN_USER = \"LOGIN_USER\"\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\"\n\nexport const LOGOUT_USER = \"LOGOUT_USER\"\nexport const LOGOUT_USER_SUCCESS = \"LOGOUT_USER_SUCCESS\"\nexport const API_ERROR = \"LOGIN_API_ERROR\"\n","import {\n LOGIN_USER,\n LOGIN_SUCCESS,\n LOGOUT_USER,\n LOGOUT_USER_SUCCESS,\n API_ERROR,\n} from \"./actionTypes\"\n\nexport const loginUser = (user, history) => {\n return {\n type: LOGIN_USER,\n payload: { user, history },\n }\n}\n\nexport const loginSuccess = user => {\n return {\n type: LOGIN_SUCCESS,\n payload: user,\n }\n}\n\nexport const logoutUser = history => {\n return {\n type: LOGOUT_USER,\n payload: { history },\n }\n}\n\nexport const logoutUserSuccess = () => {\n return {\n type: LOGOUT_USER_SUCCESS,\n payload: {},\n }\n}\n\nexport const apiError = error => {\n return {\n type: API_ERROR,\n payload: error,\n }\n}","export const FORGET_PASSWORD = \"FORGET_PASSWORD\"\nexport const FORGET_PASSWORD_SUCCESS = \"FORGET_PASSWORD_SUCCESS\"\nexport const FORGET_PASSWORD_ERROR = \"FORGET_PASSWORD_ERROR\"\n","import {\n FORGET_PASSWORD,\n FORGET_PASSWORD_SUCCESS,\n FORGET_PASSWORD_ERROR,\n} from \"./actionTypes\"\n\nexport const userForgetPassword = (user, history) => {\n return {\n type: FORGET_PASSWORD,\n payload: { user, history },\n }\n}\n\nexport const userForgetPasswordSuccess = message => {\n return {\n type: FORGET_PASSWORD_SUCCESS,\n payload: message,\n }\n}\n\nexport const userForgetPasswordError = message => {\n return {\n type: FORGET_PASSWORD_ERROR,\n payload: message,\n }\n}\n","export const EDIT_PROFILE = \"EDIT_PROFILE\"\nexport const PROFILE_SUCCESS = \"PROFILE_SUCCESS\"\nexport const PROFILE_ERROR = \"PROFILE_ERROR\"\nexport const RESET_PROFILE_FLAG = \"RESET_PROFILE_FLAG\";","import { PROFILE_ERROR, PROFILE_SUCCESS, EDIT_PROFILE, RESET_PROFILE_FLAG } from \"./actionTypes\"\n\nexport const editProfile = user => {\n return {\n type: EDIT_PROFILE,\n payload: { user },\n }\n}\n\nexport const profileSuccess = msg => {\n return {\n type: PROFILE_SUCCESS,\n payload: msg,\n }\n}\n\nexport const profileError = error => {\n return {\n type: PROFILE_ERROR,\n payload: error,\n }\n}\n\nexport const resetProfileFlag = error => {\n return {\n type: RESET_PROFILE_FLAG,\n }\n}\n","/* EVENTS */\nexport const GET_EVENTS = \"GET_EVENTS\"\nexport const GET_EVENTS_SUCCESS = \"GET_EVENTS_SUCCESS\"\nexport const GET_EVENTS_FAIL = \"GET_EVENTS_FAIL\"\n\nexport const ADD_NEW_EVENT = \"ADD_NEW_EVENT\"\nexport const ADD_EVENT_SUCCESS = \"ADD_EVENT_SUCCESS\"\nexport const ADD_EVENT_FAIL = \"ADD_EVENT_FAIL\"\n\nexport const UPDATE_EVENT = \"UPDATE_EVENT\"\nexport const UPDATE_EVENT_SUCCESS = \"UPDATE_EVENT_SUCCESS\"\nexport const UPDATE_EVENT_FAIL = \"UPDATE_EVENT_FAIL\"\n\nexport const DELETE_EVENT = \"DELETE_EVENT\"\nexport const DELETE_EVENT_SUCCESS = \"DELETE_EVENT_SUCCESS\"\nexport const DELETE_EVENT_FAIL = \"DELETE_EVENT_FAIL\"\n\nexport const GET_CATEGORIES = \"GET_CATEGORIES\"\nexport const GET_CATEGORIES_SUCCESS = \"GET_CATEGORIES_SUCCESS\"\nexport const GET_CATEGORIES_FAIL = \"GET_CATEGORIES_FAIL\"\n","import {\n GET_EVENTS,\n GET_EVENTS_FAIL,\n GET_EVENTS_SUCCESS,\n ADD_NEW_EVENT,\n ADD_EVENT_SUCCESS,\n ADD_EVENT_FAIL,\n UPDATE_EVENT,\n UPDATE_EVENT_SUCCESS,\n UPDATE_EVENT_FAIL,\n DELETE_EVENT,\n DELETE_EVENT_SUCCESS,\n DELETE_EVENT_FAIL,\n GET_CATEGORIES,\n GET_CATEGORIES_SUCCESS,\n GET_CATEGORIES_FAIL,\n} from \"./actionTypes\"\n\nexport const getEvents = () => ({\n type: GET_EVENTS,\n})\n\nexport const getEventsSuccess = events => ({\n type: GET_EVENTS_SUCCESS,\n payload: events,\n})\n\nexport const getEventsFail = error => ({\n type: GET_EVENTS_FAIL,\n payload: error,\n})\n\nexport const addNewEvent = event => ({\n type: ADD_NEW_EVENT,\n payload: event,\n})\n\nexport const addEventSuccess = event => ({\n type: ADD_EVENT_SUCCESS,\n payload: event,\n})\n\nexport const addEventFail = error => ({\n type: ADD_EVENT_FAIL,\n payload: error,\n})\n\nexport const updateEvent = event => ({\n type: UPDATE_EVENT,\n payload: event,\n})\n\nexport const updateEventSuccess = event => ({\n type: UPDATE_EVENT_SUCCESS,\n payload: event,\n})\n\nexport const updateEventFail = error => ({\n type: UPDATE_EVENT_FAIL,\n payload: error,\n})\n\nexport const deleteEvent = event => ({\n type: DELETE_EVENT,\n payload: event,\n})\n\nexport const deleteEventSuccess = event => ({\n type: DELETE_EVENT_SUCCESS,\n payload: event,\n})\n\nexport const deleteEventFail = error => ({\n type: DELETE_EVENT_FAIL,\n payload: error,\n})\n\nexport const getCategories = () => ({\n type: GET_CATEGORIES,\n})\n\nexport const getCategoriesSuccess = categories => ({\n type: GET_CATEGORIES_SUCCESS,\n payload: categories,\n})\n\nexport const getCategoriesFail = error => ({\n type: GET_CATEGORIES_FAIL,\n payload: error,\n})\n","export const SET_BREADCRUMB_ITEMS = \"SET_BREADCRUMB_ITEMS\";","import {\r\n SET_BREADCRUMB_ITEMS\r\n} from './actionTypes';\r\n\r\nexport const setBreadcrumbItems = (title, items) => ({\r\n type: SET_BREADCRUMB_ITEMS,\r\n payload: {\r\n title : title,\r\n items : items\r\n }\r\n});","import PropTypes from 'prop-types'\nimport MetaTags from 'react-meta-tags';\nimport React, { useState, useEffect } from \"react\"\nimport {\n Row,\n Col,\n Card,\n Alert,\n CardBody,\n Media,\n Button,\n} from \"reactstrap\"\n\n// availity-reactstrap-validation\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\n\n// Redux\nimport { connect } from \"react-redux\"\nimport { withRouter } from \"react-router-dom\"\n\nimport avatar from \"../../assets/images/Logo.png\"\n// actions\nimport { editProfile, resetProfileFlag } from \"../../store/actions\"\n\n//Import Action to copy breadcrumb items from local state to redux state\nimport { setBreadcrumbItems } from \"../../store/actions\";\n\nconst UserProfile = props => {\n \n const [email, setemail] = useState(\"\")\n const [name, setname] = useState(\"\")\n const [idx, setidx] = useState(1)\n\n useEffect(() => {\n if (sessionStorage.getItem(\"Clear_AuthUser\")) {\n const obj = JSON.parse(sessionStorage.getItem(\"Clear_AuthUser\"))\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n setname(obj.displayName)\n setemail(obj.email)\n setidx(obj.uid)\n } else if (\n process.env.REACT_APP_DEFAULTAUTH === \"fake\" ||\n process.env.REACT_APP_DEFAULTAUTH === \"jwt\"\n ) {\n setname(obj.username)\n setemail(obj.email)\n setidx(obj.uid)\n }\n setTimeout(() => {\n props.resetProfileFlag();\n }, 3000);\n }\n }, [props.success])\n\n const breadcrumbItems = [\n { title: \"User\", link: \"#\" },\n { title: \"Profile\", link: \"#\" },\n ]\n\n useEffect(() => {\n props.setBreadcrumbItems('Profile', breadcrumbItems)\n })\n\n function handleValidSubmit(event, values) {\n props.editProfile(values)\n }\n\n return (\n \n \n Profile | Lexa - Responsive Bootstrap 5 Admin Dashboard\n \n\n\n \n \n {props.error && props.error ? (\n {props.error}\n ) : null}\n {props.success ? (\n {props.success}\n ) : null}\n\n \n \n \n
\n {/* */}\n
\n \n
\n
{name}
\n

{email}

\n

Id no: #{idx}

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

Change User Name

\n\n \n \n {\n handleValidSubmit(e, v)\n }}\n >\n
\n \n \n
\n
\n \n
\n \n
\n
\n\n
\n )\n}\n\nUserProfile.propTypes = {\n editProfile: PropTypes.func,\n error: PropTypes.any,\n success: PropTypes.any\n}\n\nconst mapStatetoProps = state => {\n const { error, success } = state.Profile\n return { error, success }\n}\n\nexport default withRouter(\n connect(mapStatetoProps, { editProfile, resetProfileFlag, setBreadcrumbItems })(UserProfile)\n)","//REGISTER\nexport const POST_FAKE_REGISTER = \"/post-fake-register\"\n\n//LOGIN\nexport const POST_FAKE_LOGIN = \"/post-fake-login\"\nexport const POST_FAKE_JWT_LOGIN = \"/post-jwt-login\"\nexport const POST_FAKE_PASSWORD_FORGET = \"/fake-forget-pwd\"\nexport const POST_FAKE_JWT_PASSWORD_FORGET = \"/jwt-forget-pwd\"\nexport const SOCIAL_LOGIN = \"/social-login\"\n\n//PROFILE\nexport const POST_EDIT_JWT_PROFILE = \"/post-jwt-profile\"\nexport const POST_EDIT_PROFILE = \"/post-fake-profile\"\n\n//PRODUCTS\nexport const GET_PRODUCTS = \"/products\"\nexport const GET_PRODUCTS_DETAIL = \"/product\"\n\n//CALENDER\nexport const GET_EVENTS = \"/events\"\nexport const ADD_NEW_EVENT = \"/add/event\"\nexport const UPDATE_EVENT = \"/update/event\"\nexport const DELETE_EVENT = \"/delete/event\"\nexport const GET_CATEGORIES = \"/categories\"\n\n//API URL\n//export const apiEndpoint = \"http://172.16.15.48:86/IndusV2WebAPI/api/Indus\";//Test Server\n//export const apiEndpoint = \"http://103.176.134.139:86/IndusV2WebAPI/api/Indus\";//Test Server Public IP\n//export const apiEndpoint = \"https://localhost:44327/api/Indus\";//Local\n//export const apiEndpoint = \"https://www.adorindus.com/IndusV2WebAPI/api/Indus\";//Production\n export const apiEndpoint = \"https://cvasssecjmdqa.ril.com/IndusV2WebAPI/api/Indus\";// RIL\n\n\n\n\n\n\n","import PropTypes from 'prop-types';\nimport MetaTags from 'react-meta-tags';\nimport React, { useEffect, useState } from 'react';\nimport { Row, Col, CardBody, Card, Alert, Container } from 'reactstrap';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { apiEndpoint } from 'helpers/url_helper';\nimport jwt from 'jsonwebtoken';\nimport logoDark from '../../assets/images/Logo.png';\nimport { withRouter, Link } from \"react-router-dom\";\n\nconst Login = (props) => {\n const [error, setError] = useState('');\n const [errorColor, setErrorColor] = useState('');\n const [otpVisible, setOtpVisible] = useState(false);\n const [sendOtpDisabled, setSendOtpDisabled] = useState(false);\n const [otp, setOtp] = useState('');\n const [timer, setTimer] = useState(null);\n const [countdown, setCountdown] = useState(0);\n const [loginButtonVisible, setLoginButtonVisible] = useState(false);\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n\n const handleSendOtp = () => {\n setOtpVisible(true);\n setSendOtpDisabled(true);\n setLoginButtonVisible(true);\n setCountdown(120);\n\n fetch(apiEndpoint + '/Login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n UserName: username,\n Password: password,\n }),\n })\n .then((res) => res.json())\n .then(\n (response) => {\n if (response.status) {\n setError(response.message);\n setErrorColor('success');\n } else {\n setError(response.message);\n setErrorColor('danger');\n\n setSendOtpDisabled(false);\n setOtpVisible(false);\n setLoginButtonVisible(false);\n }\n },\n (error) => {\n setError('An unexpected error occurred.');\n setErrorColor('danger');\n }\n );\n\n const intervalId = setInterval(() => {\n setCountdown((prev) => {\n if (prev <= 1) {\n clearInterval(intervalId);\n setSendOtpDisabled(false);\n setOtpVisible(false);\n setLoginButtonVisible(false);\n setOtp('');\n setError(null);\n setErrorColor(null);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n setTimer(intervalId);\n };\n\n const handleValidSubmit = (event, values) => {\n fetch(apiEndpoint + '/Login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n UserName: values.username,\n Password: values.password,\n OTP: otp,\n }),\n })\n .then((res) => res.json())\n .then(\n (response) => {\n if (response.status) {\n if (response.token) {\n const cleanToken = response.token.replace(/^\"+|\"+$/g, '');\n const decodedToken = jwt.decode(cleanToken);\n sessionStorage.setItem('userFullName', decodedToken.userFullName);\n sessionStorage.setItem('Clear_AuthUser', cleanToken);\n\n const secretKey = 'ToEncodePasswordChange';\n const encodedPasswordChange = jwt.sign(response.needsPasswordChange,secretKey);\n\n sessionStorage.setItem('GetToChange', encodedPasswordChange);\n \n // Check if password change is required\n if (response.needsPasswordChange) {\n props.history.push('/defaultPasswordChange');\n } else {\n props.history.push('/dashboard');\n }\n } else {\n setError('Invalid token or missing userRolePermissions');\n setErrorColor('danger');\n }\n } else {\n setError(response.message);\n setErrorColor('danger');\n }\n },\n (error) => {\n setError('An unexpected error occurred.');\n setErrorColor('danger');\n }\n );\n };\n\n const onFormSubmit = (event, values) => {\n if (event.nativeEvent.submitter.name === 'sendOtp') {\n handleSendOtp();\n } else {\n handleValidSubmit(event, values);\n }\n };\n\n useEffect(() => {\n return () => {\n if (timer) {\n clearInterval(timer);\n }\n };\n }, [timer]);\n\n return (\n \n \n Login\n \n
\n \n \n \n \n \n

\n \n \"\"\n \n

\n
\n

Welcome Back!

\n

Sign in to continue to Indus.

\n \n {error && typeof error === 'string' ? (\n {error}\n ) : null}\n\n
\n setUsername(e.target.value)}\n disabled={sendOtpDisabled}\n type=\"text\"\n required\n />\n
\n\n
\n setPassword(e.target.value)}\n disabled={sendOtpDisabled}\n />\n
\n\n {otpVisible && (\n
\n setOtp(e.target.value)}\n required\n />\n
\n )}\n\n
\n
\n \n {sendOtpDisabled ? `Resend in ${countdown}s` : 'Send OTP'}\n \n
\n {loginButtonVisible && (\n
\n \n Log In\n \n
\n )}\n
\n \n
\n
\n
\n
\n

\n © {new Date().getFullYear()} Ador Powertron Ltd \n

\n
\n \n
\n
\n
\n
\n );\n};\n\nLogin.propTypes = {\n error: PropTypes.any,\n history: PropTypes.object,\n};\n\nexport default withRouter(Login);\n","import PropTypes from 'prop-types'\nimport React, { useEffect } from \"react\"\nimport { connect } from \"react-redux\"\nimport { withRouter } from \"react-router-dom\"\n\nimport { logoutUser } from \"../../store/actions\"\n\nconst Logout = props => {\n useEffect(() => {\n props.logoutUser(props.history)\n })\n\n return <>\n}\n\nLogout.propTypes = {\n history: PropTypes.object,\n logoutUser: PropTypes.func\n}\n\nexport default withRouter(connect(null, { logoutUser })(Logout))\n","import PropTypes from \"prop-types\"\nimport React, { useEffect } from \"react\"\nimport MetaTags from 'react-meta-tags';\nimport { Row, Col, CardBody, Card, Alert, Container } from \"reactstrap\"\n\n// availity-reactstrap-validation\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\n\n// action\nimport { registerUser, apiError, registerUserFailed } from \"../../store/actions\"\n\n// Redux\nimport { connect } from \"react-redux\"\nimport { Link } from \"react-router-dom\"\n\n// import images\nimport logoDark from \"../../assets/images/Ador_light.png\"\n\nconst Register = props => {\n // handleValidSubmit\n const handleValidSubmit = (event, values) => {\n props.registerUser(values)\n }\n\n useEffect(() => {\n props.apiError(\"\")\n }, []);\n\n return (\n \n \n Register | Lexa - Responsive Bootstrap 5 Admin Dashboard\n \n\n
\n \n \n \n \n \n

\n \n \"\"\n \n

\n
\n

Free Register

\n

Get your free Lexa account now.

\n {\n handleValidSubmit(e, v)\n }}\n >\n {props.user && props.user ? (\n \n Register User Successfully\n \n ) : null}\n\n {props.registrationError &&\n props.registrationError ? (\n \n {props.registrationError}\n \n ) : null}\n\n
\n \n
\n\n
\n \n
\n
\n \n
\n\n
\n
\n \n
\n
\n\n
\n
\n

By registering you agree to the Lexa Terms of Use

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

\n Already have an account ?{\" \"}\n \n {\" \"}\n Login\n {\" \"}\n

\n

\n © {new Date().getFullYear()} Lexa - Crafted with by Themesbrand.\n

\n
\n \n
\n
\n
\n
\n )\n}\n\nRegister.propTypes = {\n registerUser: PropTypes.func,\n registerUserFailed: PropTypes.func,\n registrationError: PropTypes.any,\n user: PropTypes.any,\n}\n\nconst mapStatetoProps = state => {\n const { user, registrationError, loading } = state.Account\n return { user, registrationError, loading }\n}\n\nexport default connect(mapStatetoProps, {\n registerUser,\n apiError,\n registerUserFailed,\n})(Register)\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAAAXNSR0IArs4c6QAABBNJREFUSEu1lX1MVXUYxz/n3HNfgQtiKSvLWai9aGm8OMo1U4eJUUnlVn+UA4fhQlOJmW384VaWSGpOEUb0spYb+BrDLHLpaslKoVqjUFajctYSBe6V+3Jefu2ck/d6Bef9p+fPc57zeZ7z/L7P9ydphhD8TyElC9f/Po/WfQpldh6OiVlJtZMUXO//jcGSEsSlAHJmOun79+GYPOWGBUbDhUCEQ0huN8gOCxA+uJ/guldAUUDTSH27Fs/Sp2y4oSOiUSS3ByQpoWACXOg6I+9sI9p2BMfUbNLq6pBS0wi3thCs3hCH176J5+llGMEAwaoq9DNncRUXkbJ6LTjshsxIgGu9PQwWFoHLBUKg5MzCX7+H6LFjo+Cu+QsYfnElWtcPdsfRKBmfH0GZfs914Gd+YXBRkd2h9csGzpxZuIof43LNpljnvk01RD9ps8GybOfqOhlH21Gm3TU2XBgGI9vqCNU3xucnwDFjGkb/OUTwMlJaCvKkLPSevqtyBL6Kcnxr18eLXTsWs6Q199othBqbYvNzzivA9cgcQjua8a4uRT3RSfTLzljH3vIVpFRXxwQwauYiEkYEh0GAMHRGdu4k+lmHleecm4f3hWVI/vGI4QFCH7SgfvWt9c79aCHeykokU1kSSKl+WzlXOld7fyawshxxMRCXkjBwFT2Ma/EC5MybcWbPRFKcCE1F/bUHY+Av1OMnibQejY/ChI9Lx9+wB2X63bZahl9eQ7T90zGXwvPc4/gq1+BIvyn2Xh8yu28i1LDXUtW14VqyGP/2HTY8+Pomws0fJhyG9Vs+L951K3AvWIQy8bY4/MJ5Iic6GNnSgAgEE9mGgaf0eVJfq7HhxtAgI5s3o//eH0sUoRBK/gwcU+/AMSEL58wHkFMzrPOIdnWin+1B7/8TrbsXyeONfSffPpmUja8i+zMSlwhh2PK+dJHhilVop7utA3YtfAjPimchoOPMzSe4dRuRva1WrpIzG//uXcjjMu0C0n+6H0uKxuUAgbIy1O+6YmNyzX8Q+ZYJhD86hG91BcY/Fwh/3Gqpw1q0/FzSmpqQU1ITRpToLaEQQ6XL0UzwFRMyDJSCPLTOU/YzEzZvLurxr+NnJATO/Bz8ze8ljCgBrv7YzdCSJ8HjtjswDLxly3HcmU1ww8bY+qe89QZ6Xx/hd9+PFwhHSG8/hPO+2WOvv37uDwYXFiI0HVQN76pyfOuriBw4MMq43EtLGKnbSmh3IzgVJMVBxhcdOG6dNDbc1Gz05DdEDh/EmZuLp+QZywKuZ7mmciL7WlBPncZdUoJrTkGCpyd1E0XaDhMwvdp0S1Ulbed23MVPjLl0Vz9MCm5eCoGXVqF9/xPK/ffi31VvXSI3iqTgJsT0FGNgAHn8eMtjkol/AZtF+m+r1eL3AAAAAElFTkSuQmCC\"","import PropTypes from 'prop-types'\nimport MetaTags from 'react-meta-tags';\nimport React from \"react\"\nimport { Row, Col, Alert, Card, CardBody, Container } from \"reactstrap\"\n\n// Redux\nimport { connect } from \"react-redux\"\nimport { withRouter, Link } from \"react-router-dom\"\n\n// availity-reactstrap-validation\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\n\n// action\nimport { userForgetPassword } from \"../../store/actions\"\n\n// import images\nimport logoDark from \"../../assets/images/Logo.png\"\n\nconst ForgetPasswordPage = props => {\n function handleValidSubmit(event, values) {\n props.userForgetPassword(values, props.history)\n }\n\n return (\n \n \n Forget Password | Lexa - Responsive Bootstrap 5 Admin Dashboard\n \n
\n \n \n \n \n \n

\n \n \"\"\n \n

\n
\n

Reset Password

\n
\n Enter your Email and instructions will be sent to you!\n
\n {props.forgetError && props.forgetError ? (\n \n {props.forgetError}\n \n ) : null}\n {props.forgetSuccessMsg ? (\n \n {props.forgetSuccessMsg}\n \n ) : null}\n\n handleValidSubmit(e, v)}\n >\n
\n \n
\n \n \n \n Reset\n \n \n \n \n
\n
\n
\n
\n

\n Remember It ?{\" \"}\n \n Sign In Here\n {\" \"}\n

\n

\n © {new Date().getFullYear()} Lexa - Crafted with by Themesbrand.\n

\n
\n \n
\n
\n
\n
\n )\n}\n\nForgetPasswordPage.propTypes = {\n forgetError: PropTypes.any,\n forgetSuccessMsg: PropTypes.any,\n history: PropTypes.object,\n userForgetPassword: PropTypes.func\n}\n\nconst mapStatetoProps = state => {\n const { forgetError, forgetSuccessMsg } = state.ForgetPassword\n return { forgetError, forgetSuccessMsg }\n}\n\nexport default withRouter(\n connect(mapStatetoProps, { userForgetPassword })(ForgetPasswordPage)\n)\n","import React from \"react\";\nimport { apiEndpoint } from \"helpers/url_helper\";\nimport { Card, CardBody, Row, Col } from \"reactstrap\"\nimport { useEffect, useState } from 'react';\nimport './Miniwidget.css'\nvar WidgetPropsViolations = [];\nconst Miniwidget = props => {\n const [todaysCount, settodaysCount] = useState([]);\n const [monthCount, setmonthCount] = useState([]);\n const [todaysChange, settodaysChange] = useState([]);\n const [monthChange, setmonthChange] = useState([]);\n\n const [bounce, setbounce] = useState(false);\n\n\n useEffect(() => {\n\n var intCampusID = props.CampusID;\n\n const getData = async () => {\n // UserValidated\n const url = apiEndpoint + '/GetTodaysTotalViolations';\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n \"intCampusID\": intCampusID,\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\n }),\n\n });\n if (response.body != null) {\n const data = await response.json();\n //settodaysChange(data.percChange);\n settodaysCount(data.TotalViolationsCount);\n setbounce(true)\n }\n\n // UserValidated\n const urlMonth = apiEndpoint + '/GetMonthlyViolations';\n const responseMonthly = await fetch(urlMonth, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n \"intCampusID\": intCampusID,\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n if (responseMonthly.body != null) {\n const dataMonthly = await responseMonthly.json();\n // setmonthChange(dataMonthly.percChange);\n setmonthCount(dataMonthly.TotalViolationsCount);\n }\n } catch (error) {\n console.log(error);\n }\n };\n getData();\n }, [props.CampusID]);\n\n\n if (props.type == \"daily\") {\n WidgetPropsViolations = [\n {\n title: \"Today's Violations\",\n iconClass: \"cube-outline\", total: todaysCount,\n average: todaysChange, badgecolor: \"info\", previosPeriod: \"Yesterday\"\n },\n ]\n }\n else if (props.type == \"monthly\") {\n WidgetPropsViolations = [\n {\n title: \"Last Month's Violations\",\n iconClass: \"tag-text-outline\", total: monthCount,\n average: monthChange, badgecolor: \"warning\", previosPeriod: \"Last Month\"\n }]\n }\n\n\n return (\n \n {/* */}\n {WidgetPropsViolations.map((report, key) => (\n \n
setbounce(false)} style={{ maxHeight: \"120%\", minHeight: \"110%\" }}>\n \n \n {/* style={{height:\"23vh\"}} */}\n\n\n
\n

{report.title}\n

\n
\n \n
\n

{report.total}

\n\n {/* {report.average}% Change From {report.previosPeriod} \n */}\n\n
\n\n
\n
\n
\n
\n \n ))}\n {/*
*/}\n
\n )\n\n}\n\nexport default Miniwidget\n","import React from \"react\";\nimport {apiEndpoint} from \"helpers/url_helper\";\n\n\nimport { useEffect, useState } from 'react';\nimport ReactApexChart from \"react-apexcharts\"\nimport { Card } from \"reactstrap\";\nimport {CardBody} from \"reactstrap\";\nimport {Row,Col} from \"reactstrap\";\nconst areachart= props => {\n const [violations, setviolations] = useState([]);\n const [vehiclecount, setvehiclecount] = useState([]);\n const [locations, setlocations] = useState([]);\n const [violationCnt, setviolationCnt] = useState([]);\n const [vehicleCountNo, setvehicleCountNo] = useState([]);\n\n \n useEffect(() => {\n \n var intCampusID=props.CampusID;\n //console.log(intCampusID)\n const getData = async () => {\n // UserValidated\n const url = apiEndpoint+'/GetWeeklyData';\n try {\n // axios.post(url).then(function(response) {\n // areachart.updateSeries([{\n // name: 'Violations',\n // data: response.Violations\n // },{\n // name: 'Vehicle Count',\n // data: response.VehicleCount\n // }])\n // })\n\n // const response = await fetch(url, {\n // method: 'POST', \n // mode: 'no-cors'});\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n \"intCampusID\": intCampusID,\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n //console.log(response);\n if(response.body!=null){\n const data = await response.json();\n //console.log(data);\n \n // var arr=JSON.parse(data.Violations);\n // console.log(arr);\n // arr.map(item => {\n // violations.push(item.ViolationCount);\n // locations.push(item.LocationName)\n // });\n \n // setviolations(violations);\n // setlocations(locations);\n if(data.VehicleCount!=null)\n setviolations(JSON.parse(data.VehicleCount)?.map((item) => item.ViolationCount));\n if(data.VehicleCount!=null){\n setlocations(JSON.parse(data.VehicleCount)?.map((item) => item.LocationName));\n }\n if(data.VehicleCount!=null)\n setvehiclecount(JSON.parse(data.VehicleCount)?.map((item) => item.VehicleCount));\n \n \n setviolationCnt(data.violationsCnt)\n setvehicleCountNo(data.vehicleCnt)\n // areachart.updateSeries([{\n // name: 'Violations',\n // data: data.Violations\n // }])\n // setviolations(data.Violations.y);\n // setlocations(data.Violations.x);\n // setvehiclecount(data.VehicleCount.y);\n }\n } catch (error) {\n console.log(error);\n }\n };\n getData();\n // setlocations([]);\n // setvehiclecount([]);\n // setviolations([]);\n\n }, [props.CampusID]);\n\n\n const options = {\n // colors: [\"#ccc\", \"#3c4ccf\", \"#02a499\"],\n colors: [ \"#3c4ccf\", \"#02a499\"],\n chart: {\n toolbar: {\n show: false,\n },\n },\n dataLabels: {\n enabled: true,\n },\n stroke: {\n curve: \"smooth\",\n width: 0.1,\n },\n grid: {\n borderColor: \"#f8f8fa\",\n row: {\n colors: [\"transparent\", \"transparent\"], // takes an array which will be repeated on columns\n opacity: 0.5,\n },\n },\n \n legend: {\n show: true,\n },\n xaxis: {\n categories: locations\n }\n }\n \n return (\n \n \n\n\n\n

Violations in last week

\n \n \n
{vehicleCountNo}
\n

Vehicle Count

\n \n \n
{violationCnt}
\n

Violation Count

\n \n
\n\n
\n \n
\n
\n
\n
\n )\n }\n\n \nexport default areachart;\n","import React from \"react\";\nimport { apiEndpoint } from \"helpers/url_helper\";\nimport ReactApexChart from \"react-apexcharts\"\nimport axios from \"axios\";\nimport { useEffect, useState } from 'react';\nimport { Card } from \"reactstrap\";\nimport {CardBody} from \"reactstrap\";\nimport {Row,Col} from \"reactstrap\";\nconst series=[];\nconst Barchart = props => {\n const [violations, setviolations] = useState([]);\n const [vehiclecount, setvehiclecount] = useState([]);\n const [locations, setlocations] = useState([]);\n const [violationCnt, setviolationCnt] = useState([]);\n const [vehicleCountNo, setvehicleCountNo] = useState([]);\n useEffect(() => {\n var intCampusID=props.CampusID;\n const getData = async () => {\n // UserValidated\n var url = apiEndpoint+'/GetDailyData';\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n \"intCampusID\": intCampusID,\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n if(response.body!=null){\n const data = await response.json();\n // console.log(\"Violations\"+data.Violations);\n // console.log(\"Vehicle Count\"+data.VehicleCount);\n \n setviolations(JSON.parse(data.VehicleCount)?.map((item) => item.ViolationCount));\n setvehiclecount(JSON.parse(data.VehicleCount)?.map((item) => item.VehicleCount));\n setlocations(JSON.parse(data.VehicleCount)?.map((item) => item.LocationName));\n // console.log(JSON.parse(data.VehicleCount)?.map((item) => item.LocationName))\n // console.log(JSON.parse(data.Violations)?.map((item) => item.LocationName))\n\n setviolationCnt(data.violationsCnt)\n setvehicleCountNo(data.vehicleCnt)\n }\n } catch (error) {\n console.log(error);\n }\n};\n getData();\n}, [props.CampusID]);\n\n const options = {\n chart: {\n toolbar: {\n show: false,\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '30%',\n endingShape: 'rounded'\n\n },\n },\n stroke: {\n show: true,\n width: 3,\n colors: ['transparent']\n },\n dataLabels: {\n enabled: false,\n },\n\n colors: [ \"#5D59AF\", \"#98D7C2\"],\n grid: {\n borderColor: \"#f8f8fa\",\n row: {\n colors: [\"transparent\", \"transparent\"], // takes an array which will be repeated on columns\n opacity: 0.5,\n },\n },\n legend: {\n show: true,\n },\n xaxis: {\n categories: locations\n }\n }\n \n\n return (\n \n \n

Today's Violations

\n
\n
\n
{vehicleCountNo}
\n

Vehicle Count

\n
\n
\n
{violationCnt}
\n

Violation Count

\n
\n
\n
\n \n
\n
\n
\n
\n )\n}\n\nexport default Barchart\n\n","import React from \"react\";\r\n\r\nconst ViolationsContext = React.createContext({\r\n violations: [],\r\n setViolations: () => {}\r\n });\r\n\r\n const VehicleDataContext = React.createContext({\r\n vehicledetails: [],\r\n setVehicleData: () => {}\r\n });\r\n const CampusIdContext = React.createContext({\r\n selectedCampusval: \"\",\r\n setCampusValue: () => {}\r\n });\r\n \r\n const AllUsersListContext = React.createContext({\r\n usersData:[],\r\n setUsersData: () => {}\r\n });\r\n export {ViolationsContext,VehicleDataContext,CampusIdContext,AllUsersListContext}","import { CampusIdContext } from 'components/Common/PageDataContext';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nimport {useEffect,useState} from 'react';\r\nimport { useContext } from 'react';\r\nconst CampusList = props => {\r\n const [error, setError] = useState(null);\r\n //const [isLoaded, setIsLoaded] = useState(false);\r\n const [items, setItems] = useState([]);\r\n //const [vehicleCountNo, setvehicleCountNo] = useState([]);\r\n //const [selectedCampusval, setSelected] = useState('');\r\n const { selectedCampusval, setCampusValue } = useContext(CampusIdContext);\r\n const handleCampusChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n //console.log(event.target.value);\r\n setCampusValue(event.target.value);\r\n props.setCampusValue(event.target.value);\r\n//console.log(selectedCampusval)\r\n//console.log(event.target.value)\r\n\r\n };\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n // fetch(apiEndpoint+\"/GetCampusList?intUserID=\"+ JSON.parse(sessionStorage.getItem(\"UserID\"))+\"\")\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n \r\n if(result.CampusList != undefined){\r\n if(JSON.parse(result.CampusList).length > 0){\r\n //console.log(JSON.parse(result.Locations));\r\n setItems(JSON.parse(result.CampusList));\r\n //console.log(JSON.parse(result.CampusList)[0])\r\n setCampusValue(JSON.parse(result.CampusList)[0].CampusID)\r\n //props.setCampusValue(JSON.parse(result.CampusList)[0])\r\n }\r\n }\r\n \r\n \r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n // setIsLoaded(true);\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } //else if (!isLoaded) {\r\n // return
Loading...
;\r\n //} \r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default CampusList\r\n","import React, { Component } from 'react';\r\nimport { Row, Col, Card, CardBody } from \"reactstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { Sparklines } from 'react-sparklines';\r\nimport { SparklinesBars } from 'react-sparklines';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n\r\nclass YearlySales extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n options: {\r\n chart: {\r\n toolbar: {\r\n show: false,\r\n },\r\n },\r\n colors: ['#7A6FBE', '#28BBE3'],\r\n plotOptions: {\r\n bar: {\r\n columnWidth: '70%',\r\n dataLabels: {\r\n show: false\r\n },\r\n\r\n },\r\n },\r\n legend: {\r\n show: false\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n grid: {\r\n show: false,\r\n row: {\r\n colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n labels: {\r\n show: false\r\n },\r\n categories: [],\r\n axisBorder: {\r\n show: false\r\n },\r\n axisTicks: {\r\n show: false\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false\r\n },\r\n tooltip: {\r\n enabled: false\r\n }\r\n },\r\n },\r\n series: [{\r\n name: 'Series A',\r\n data: [8, 6, 4, 7, 10, 12, 7, 4, 9, 12, 13, 11, 12]\r\n },],\r\n YearlyCount:''\r\n }\r\n }\r\n async componentDidUpdate(prevProps) {\r\n if(prevProps.CampusID!=this.props.CampusID){\r\n var intCampusID=this.props.CampusID;\r\n // UserValidated\r\n const url= apiEndpoint+'/GetYearlyViolations';\r\n \r\n fetch(url,{ \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json()).then((result) =>{ \r\n //console.log(result)\r\n this.setState({ YearlyCount: result.TotalViolationsCount })}).catch((error) => console.log(error));\r\n }}\r\n UNSAFE_componentWillReceiveProps(props) {\r\n var intCampusID=props.CampusID;\r\n // UserValidated\r\n const url= apiEndpoint+'/GetYearlyViolations';\r\n \r\n fetch(url,\r\n { \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n }).then(res => res.json()).then((result) =>{ \r\n //console.log(result)\r\n this.setState({ YearlyCount: result.TotalViolationsCount })}).catch((error) => console.log(error));\r\n }\r\n render() {\r\n //console.log(this.state.YearlyCount)\r\n return (\r\n \r\n \r\n \r\n \r\n

Yearly Violations

\r\n \r\n \r\n
\r\n

{this.state.YearlyCount}

\r\n

Total Violations in campus

\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\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 YearlySales;","import React from \"react\";\r\nimport { useEffect, useState } from 'react';\r\nimport ReactSpeedometer from \"react-d3-speedometer\"\r\nimport { Card, CardHeader } from \"reactstrap\";\r\nimport {CardBody} from \"reactstrap\";\r\nimport './Miniwidget.css'\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nvar speedoMeterProps=[];\r\nconst Speedometer= props => {\r\n const [todaysMaxSpeed, settodaysMaxSpeed] = useState([]);\r\n const [monthlyMaxSpeed, setmonthlyMaxSpeed] = useState([]);\r\n const [todaysAvgSpeed, settodaysAvgSpeed] = useState([]);\r\n const [bounce, setbounce] = useState(false);\r\n\r\n useEffect(() => {\r\nsetbounce(true)\r\n var intCampusID=props.CampusID;\r\n // UserValidated\r\n const getData = async () => {\r\n const url = apiEndpoint+'/GetTodaysMaxSpeed';\r\n try {\r\n const response = await fetch(url, \r\n { method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n });\r\n\r\n if(response.body!=null){\r\n const data = await response.json();\r\n //console.log(data)\r\n settodaysMaxSpeed(data.MaxSpeed);\r\n }\r\n \r\n // UserValidated\r\n const urlMonth = apiEndpoint+'/GetMonthlyMaxSpeed';\r\n \r\n const responseMonthly =await fetch(urlMonth, { \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n });\r\n if(responseMonthly.body!=null){\r\n const dataMonthly = await responseMonthly.json();\r\n //console.log(dataMonthly)\r\n setmonthlyMaxSpeed(dataMonthly.MaxSpeed);\r\n }\r\n\r\n // UserValidated\r\n const urlAvg = apiEndpoint+'/GetTodaysAvgSpeed';\r\n \r\n const responseAvg =await fetch(urlAvg, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n }) ;\r\n if(responseAvg.body!=null){\r\n const dataAvg = await responseAvg.json();\r\n //console.log(dataAvg)\r\n settodaysAvgSpeed(dataAvg.AvgSpeed);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n getData();\r\n }, [props.CampusID]);\r\n \r\n\r\n \r\nif(props.type==\"dailyMax\"){\r\n speedoMeterProps=[\r\n { value: todaysMaxSpeed, \r\n maxValue:100,\r\n width:138,\r\n height:92,\r\n divHeight:\"100%\",\r\n divWidth:\"100%\",\r\n title:\"Today's Highest Speed\" }]\r\n}\r\nelse if(props.type==\"monthlyMax\"){\r\n speedoMeterProps=[\r\n { value: monthlyMaxSpeed, \r\n maxValue:100,\r\n width:138,\r\n height:92,\r\n divHeight:\"100%\",\r\n divWidth:\"100%\",\r\n title:\"Monthly Highest Speed\" }]\r\n}\r\nelse if(props.type==\"dailyAvg\"){\r\n speedoMeterProps=[\r\n { value: todaysAvgSpeed, \r\n maxValue:100,\r\n width:256,\r\n height:175,\r\n divHeight:\"100%\",\r\n divWidth:\"100%\",\r\n title:\"Today's Average Speed\" }]\r\n }\r\n return (\r\n \r\n {speedoMeterProps.map((param,key) => (\r\n
setbounce(false)}>\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n
{param.title}
\r\n \r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\nexport default Speedometer\r\n","import React, { Component,useContext } from \"react\"\nimport { apiEndpoint } from \"helpers/url_helper\";\n\nimport {\n Carousel,\n CarouselItem,\n CarouselControl,\n CarouselIndicators,\n} from \"reactstrap\"\n\nimport InnerImageZoom from \"react-inner-image-zoom\";\nimport 'react-inner-image-zoom/lib/InnerImageZoom/styles.css';\n//import { ActiveImageContext } from './ViolationImageContext';\n\n\nclass Slidewithindicator extends Component {\n\n\n constructor(props) {\n //const {violationImageIndex, setViolationImageIndex} = useContext(ActiveImageContext);\n super(props)\n var violationImgArr;\n var Imageitems=[];\n //console.log(\"Default Image Index\"+props.ImageIndex(2));\n if(props.ImagePath!=null){\n if(props.ImagePath.ViolationImgBase64Img!=null){\n violationImgArr=props.ImagePath.ViolationImgBase64Img;\n if(violationImgArr.length>0){\n for(var i=0;i< violationImgArr.length;i++){\n Imageitems.push({ src: `data:image/png;base64,${violationImgArr[i]}`,\n altText: \"Slide \"+parseInt( i+1)+\"\",\n caption: \"Slide \"+ parseInt( i+1)+\"\",\n })\n }\n }\n }\n this.state = { \n activeIndex: 0 ,\n Imageitems:Imageitems\n }\n console.log(this.state.Imageitems)\n }\n\n \n this.next = this.next.bind(this)\n this.previous = this.previous.bind(this)\n this.goToIndex = this.goToIndex.bind(this)\n this.onExiting = this.onExiting.bind(this)\n this.onExited = this.onExited.bind(this)\n \n }\n \n\n\n onExiting() {\n this.animating = true\n }\n\n onExited() {\n this.animating = false\n }\n\n next() {\n if (this.animating) return\n const nextIndex =\n this.state.activeIndex === this.state.Imageitems.length - 1\n ? 0\n : this.state.activeIndex + 1\n this.setState({ activeIndex: nextIndex })\n console.log(this.state.activeIndex)\n\n let ImageIndextemp = nextIndex;\n console.log(this.props)\n this.props.ImageIndex(ImageIndextemp);\n // console.log(\"Default Image Index\"+props.ImageIndex(2));\n console.log(\"Next ImageIndex -------->\", ImageIndextemp);\n // console.log(\"Context ImageIndex -------->\", violationImageIndex);\n }\n\n previous() {\n if (this.animating) return\n const nextIndex =\n this.state.activeIndex === 0\n ? this.state.Imageitems.length - 1\n : this.state.activeIndex - 1\n this.setState({ activeIndex: nextIndex })\n \n let ImageIndextemp = nextIndex;\n console.log(this.props)\n this.props.ImageIndex(ImageIndextemp);\n\n }\n\n goToIndex(newIndex) {\n if (this.animating) return\n this.setState({ activeIndex: newIndex })\n }\n\n render() {\n let ImageActiveIndex = this.context;\n const { activeIndex } = this.state.activeIndex\n const Imageitemss = this.state.Imageitems\n const slides = Imageitemss.map(item => {\n return (\n \n\n \n {/* */}\n \n \n )\n })\n\n return (\n \n \n \n {slides}\n \n {this.state.Imageitems.length>1 && \n \n \n }\n {this.state.Imageitems.length>1 && \n \n \n }\n \n \n )\n }\n}\n\nexport default Slidewithindicator\n","import React, { useEffect, useState } from \"react\"\r\n// import Modal from 'react-modal';\r\nimport { Link } from \"react-router-dom\";\r\nimport Slidewithindicator from \"./slidewithindicator\"\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n} from \"reactstrap\"\r\n\r\n\r\nconst ViewImageModalComponent = (props)=> {\r\n const [violationImageIndex, setViolationImageIndex] = useState(0);\r\n useEffect(() => {\r\n \r\n // UserValidated\r\n fetch(apiEndpoint+\"//GetViolationLogImages\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"strImagePath\": props.ImgPath,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined || result != \"\") {\r\n //console.log(result);\r\n if (result.Message == \"File not found!\") {\r\n console.log(\"No Image found!!\");\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else {\r\n setImageData(result);\r\n }\r\n\r\n }\r\n else {\r\n console.log(\"No Image found!!\");\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [props.ImgPath])\r\n\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [imgData, setImageData] = useState();\r\n const [alertmsg, setAlert] = useState();\r\n const toggle = () => {\r\n \r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n return (\r\n <>\r\n {/* */}\r\n \r\n {modalIsOpen==true && alertmsg}\r\n{imgData!=undefined &&\r\n \r\n\r\n {/* \"\" */}\r\n \r\n {/* {imgName} */}\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 ViewImageModalComponent;","import { useEffect, useState } from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport Select from \"react-select\";\r\nconst CampusList = props => {\r\n const [error, setError] = useState(null);\r\n //const [isLoaded, setIsLoaded] = useState(false);\r\n const [items, setItems] = useState([]);\r\n const [selectedCampusval, setSelected] = useState('');\r\n\r\n const handleCampusChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n //console.log(event.target.value);\r\n setSelected(event.target.value);\r\n props.setCampusValue(event.target.value);\r\n // LocationList(event.target.value);\r\n const element = ;\r\n };\r\n \r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n //useEffect(() => {\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \r\n })\r\n }) .then(res => res.json())\r\n .then(\r\n (result) => {\r\n // setIsLoaded(true);\r\n //console.log(result);\r\n //console.log(JSON.parse(result.Locations));\r\n setItems(JSON.parse(result.CampusList));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n // setIsLoaded(true);\r\n setError(error);\r\n }\r\n )\r\n //}, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } //else if (!isLoaded) {\r\n // return
Loading...
;\r\n //} \r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst LocationList = props => {\r\n const [error, setError] = useState(null);\r\n const [items, setItems] = useState([]);\r\n const [selectedLocval, setSelected] = useState('');\r\n\r\n const handleLocChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n //console.log(event.target.value);\r\n setSelected(event.target.value);\r\n props.setLocValue(event.target.value);\r\n\r\n };\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n\r\n console.log(props.campusid);\r\n var intCampusID = props.campusid;\r\n // UserValidated\r\n fetch(apiEndpoint+\"//GetLocationList\", { \r\n method: 'POST', \r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n //console.log(result);\r\n\r\n setItems(JSON.parse(result.Locations));\r\n //console.log(JSON.parse(items[0][\"LocationID\"]));\r\n //props.setLocValue(JSON.parse(items[0][\"LocationID\"]));\r\n // setSelected(JSON.parse(items[0][\"LocationID\"]));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst ReportType = (props) => {\r\n const ReportTypeitems = [\r\n {\r\n value: 1,\r\n label: \"Daily\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Monthly\"\r\n },\r\n {\r\n value: 3,\r\n label: \"Custom\"\r\n }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [SelectedReportTypeitem, setSelectedReportTypeItem] = useState({ value: 1, label: \"Daily\" });\r\n\r\n const handleReportTypeChange = event => {\r\n debugger;\r\n //console.log('Label 👉️', event.label);\r\n console.log(event);\r\n setSelectedReportTypeItem(event);\r\n props.setReportType(event.value);\r\n if(event.value == 2)\r\n {\r\n const boxes = document.getElementsByClassName('monthlyrt');\r\n for (const box of boxes) {\r\n box.style.display = \"block\";\r\n } }\r\n else{\r\n const boxes = document.getElementsByClassName('monthlyrt');\r\n \r\n for (const box of boxes) {\r\n box.style.display = \"none\";\r\n } \r\n }\r\n if (event.value == 3) {\r\n const boxes = document.getElementsByClassName('customdttm');\r\n for (const box of boxes) {\r\n box.style.display = \"block\";\r\n }\r\n }\r\n else {\r\n const boxes = document.getElementsByClassName('customdttm');\r\n for (const box of boxes) {\r\n box.style.display = \"none\";\r\n }\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst ViolationType = (props) => {\r\n const ViolationTypeitems = [\r\n {\r\n value: 0,\r\n label: \"All\"\r\n },\r\n {\r\n value: 1,\r\n label: \"Overspeed\"\r\n },\r\n {\r\n value: 2,\r\n label: \"No Helmet\"\r\n }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [ViolationTypeitem, setSelectedViolationTypeitem] = useState({ value: 0, label: \"All\" });\r\n\r\n const handleViolationTypeChange = event => {\r\n console.log(event);\r\n setSelectedViolationTypeitem(event);\r\n props.setViolationType(event.value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\n\r\nconst SpeedType = (props) => {\r\n const SpeedTypeitems = [\r\n {\r\n value: 1,\r\n label: \"Default\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Custom\"\r\n }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [SelectedSpeedTypeitem, setSelectedSpeedTypeItem] = useState({ value: 1, label: \"Default\" });\r\n\r\n const handleSpeedTypeChange = event => {\r\n //console.log('Label 👉️', event.label);\r\n console.log(event);\r\n setSelectedSpeedTypeItem(event);\r\n props.setSpeedType(event.value);\r\n if (event.value == '2') {\r\n const boxes = document.getElementsByClassName('customspeed');\r\n for (const box of boxes) {\r\n box.style.display = \"block\";\r\n }\r\n }\r\n else {\r\n const boxes = document.getElementsByClassName('customspeed');\r\n for (const box of boxes) {\r\n box.style.display = \"none\";\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n\r\n );\r\n};\r\n\r\nconst SearchData = (props) => {\r\n const [error, setError] = useState(null);\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampus,// 1,\r\n \"intLocationID\": selectedLoc,//1,\r\n \"intReportType\": selectedReportType,//1,\r\n \"intSpeedType\": selectedSpeedType,//1,\r\n \"boolOnlyANPR\": true,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n //setViolations(JSON.parse(result.Violations));\r\n props.setViolations(JSON.parse(result.Violations));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n}\r\nexport { CampusList, LocationList, ReportType, SpeedType, SearchData,ViolationType }\r\n","import React, { useEffect, useState,useRef } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n Container,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Dropdown,\r\n DropdownMenu,\r\n DropdownItem,\r\n DropdownToggle,\r\n ButtonDropdown,\r\n CardTitle,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\nimport ReactToPrint from \"react-to-print\";\r\nconst { SearchBar } = Search;\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport ModalInFunctionalComponent from '../ViolationLogs/ViewImageModal';\r\nimport { ReportType, SpeedType } from '../ViolationLogs/ViolationLogsComponents';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n\r\n//Style\r\nconst btnstylesObj = {\r\n \"margin-top\": '2rem',\r\n };\r\n\r\n // This is custom csv export component\r\nconst ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n };\r\n\r\nconst ViolationTables = (props) => {\r\n //Print function\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState(1);\r\n\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n\r\n const [FromSpeed, setFrmSpeed] = useState(20);\r\n const [ToSpeed, setToSpeed] = useState(100);\r\n const [BoolANPR, setANPR] = useState(true);\r\n\r\n const columns = [\r\n \r\n {\r\n dataField: \"LocationName\",\r\n text: \"Location \",\r\n sort: false,\r\n width:\"40px\"\r\n \r\n },\r\n \r\n {\r\n dataField: \"IncidentTime\",\r\n text: \"Incident Time\",\r\n sort: false\r\n },\r\n {\r\n dataField: \"TypeOfViolation\",\r\n text: \"Event \",\r\n sort: true,\r\n \r\n \r\n },\r\n {\r\n dataField: \"RegistrationNumber\",\r\n text: \"Reg Number\",\r\n sort: false,\r\n \r\n },\r\n // {\r\n // dataField: \"LaneNumber\",\r\n // text: \"Lane Number\",\r\n // sort: true\r\n // },\r\n {\r\n dataField: \"VehicleSpeed\",\r\n text: \"Speed \",\r\n sort: false\r\n },\r\n // {\r\n // dataField: \"SpeedLimit\",\r\n // text: \"Speed Limit\",\r\n // sort: false\r\n // },\r\n {\r\n dataField: \"ImagePath\",\r\n text: \"View\",\r\n csvExport: false,\r\n sort: false,\r\n formatter: (value, row) => (\r\n // \r\n // {value}\r\n // {row.SpeedLimit}\r\n // \r\n \r\n ),\r\n }\r\n ]\r\n\r\n\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n };\r\n\r\n const changeLocSelectHandler = (event) => {\r\n setSelectedLocItem(event);\r\n setLocSelected(event.value);\r\n };\r\n\r\n const changeFrmSpeedHandler= (value, ctx) => {\r\n if(value>parseInt(ToSpeed)){\r\n return \"Enter Valid From Speed Value!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToSpeedHandler = (value, ctx) => {\r\n if(value {\r\n // console.log(value);\r\n if(value>ToDtTm){\r\n return \"From date cannot be greater than To date!!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToDateHandler = (value, ctx) => {\r\n if(value {\r\n useEffect(() => {\r\n//console.log(props.CampusID+\"Violationcomponent\")\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLatestViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": props.CampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n //console.log(result)\r\n if(result.Violations!=undefined && result.Violations!=\"[null]\"){\r\n //console.log(JSON.parse(result.Locations));\r\n setViolations([]);\r\n setViolations(JSON.parse(result.Violations));\r\n }\r\n else{\r\n setViolations([]);\r\n } \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n //}, [selectedCampusVal])\r\n }, [props.CampusID]);\r\n // SearchViolations();\r\n\r\n // this function will copy to clipboard an entire table,\r\n // so you can paste it inside an excel or csv file\r\n const copyToClipboardAsTable = el => {\r\n var body = document.body,\r\n range,\r\n sel;\r\n if (document.createRange && window.getSelection) {\r\n range = document.createRange();\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n try {\r\n range.selectNodeContents(el);\r\n sel.addRange(range);\r\n } catch (e) {\r\n range.selectNode(el);\r\n sel.addRange(range);\r\n }\r\n document.execCommand(\"copy\");\r\n } else if (body.createTextRange) {\r\n range = body.createTextRange();\r\n range.moveToElementText(el);\r\n range.select();\r\n range.execCommand(\"Copy\");\r\n }\r\n\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Copied to clipboard!\r\n \r\n )\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 props => (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\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, { setBreadcrumbItems })(ViolationTables);","import React, { Component } from \"react\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { Map, HeatMap, GoogleApiWrapper } from \"google-maps-react\";\r\nimport isEmpty from 'lodash.isempty';\r\nconst mapStyles = {\r\n width: '100%',\r\n height: '95%',\r\n};\r\nconst gradient = [\r\n \"rgba(0, 255, 255, 0)\",\r\n \"rgba(0, 255, 255, 1)\",\r\n \"rgba(0, 191, 255, 1)\",\r\n \"rgba(0, 127, 255, 1)\",\r\n \"rgba(0, 63, 255, 1)\",\r\n \"rgba(0, 0, 255, 1)\",\r\n \"rgba(0, 0, 223, 1)\",\r\n \"rgba(0, 0, 191, 1)\",\r\n \"rgba(0, 0, 159, 1)\",\r\n \"rgba(0, 0, 127, 1)\",\r\n \"rgba(63, 0, 91, 1)\",\r\n \"rgba(127, 0, 63, 1)\",\r\n \"rgba(191, 0, 31, 1)\",\r\n \"rgba(255, 0, 0, 1)\"\r\n];\r\nconst google = window.google = window.google ? window.google : {}\r\nconst data = [\r\n\r\n { lat: 37.78763, lng: -122.394025 ,weight:0},\r\n { lat: 37.787767, lng: -122.39398699999998 ,weight:2},\r\n { lat: 37.787486, lng: -122.394452,weight:2 },\r\n\r\n];\r\nvar collection=[];\r\n\r\nclass MapContainer extends React.Component {\r\n \r\n constructor() {\r\n super()\r\n this.state = {\r\n collection: [], \r\n } \r\n }\r\nasync UNSAFE_componentWillReceiveProps(nextProps) {\r\n // You don't have to do this check first, but it can help prevent an unneeded render\r\n if (nextProps.CampusID !== this.props.CampusID) {\r\n\r\n if(google.maps.visualization !=undefined){\r\n // UserValidated\r\n const url = apiEndpoint+'/GetLocationListLatLng';\r\n try {\r\n const response = await fetch(url, { \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": nextProps.CampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n\r\n \r\n });\r\n if(response.body!=null){\r\n const data = await response.json();\r\n \r\n //console.log(JSON.parse(data.Locations) )\r\n \r\n this.setState({ collection: JSON.parse(data.Locations) })\r\n const result=JSON.parse(data.Locations);\r\n if(data.Locations!=null){\r\n this.setState({ centre:{lat:result[0].lat,lng:result[0].lng} })\r\n }\r\n }\r\n\r\n} catch (error) {\r\n console.log(error);\r\n}\r\n \r\n return true;\r\n }}\r\n \r\n}\r\n\r\nasync componentDidMount() {\r\n //console.log(google.maps.visualization);\r\n\r\nif(this.props.CampusID!=undefined){\r\n \r\n if(google.maps.visualization !=undefined){\r\n // UserValidated\r\n const url = apiEndpoint+'/GetLocationListLatLng';\r\n try {\r\n const response = await fetch(url, { \r\n method: 'POST', \r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": this.props.CampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n });\r\n if(response.body!=null){\r\n const data = await response.json();\r\n\r\n //console.log(JSON.parse(data.Locations) )\r\n \r\n this.setState({ collection: JSON.parse(data.Locations) })\r\n const result=JSON.parse(data.Locations);\r\n if(data.Locations!=null){\r\n this.setState({ centre:{lat:result[0].lat,lng:result[0].lng} })\r\n }\r\n }\r\n\r\n} catch (error) {\r\n console.log(error);\r\n}\r\n}}\r\n}\r\n render() {\r\n //console.log(this.state.collection)\r\n\r\n //console.log(this.state.centre)\r\n return (\r\n \r\n
\r\n \r\n {!isEmpty(this.state.collection) && (\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 GoogleApiWrapper({\r\n apiKey: \"AIzaSyA2nB278fvP2ZsDAYTYMGYRE751Vew6cIg\",\r\n libraries: [\"visualization\"]\r\n})(MapContainer);\r\n","import React, { useEffect } from \"react\"\nimport MetaTags from 'react-meta-tags';\nimport { connect } from \"react-redux\";\nimport Miniwidget from \"./Miniwidget\";\nimport { Card, CardBody, Row , Col} from \"reactstrap\"\nimport AreaChart from \"./areachart\";\nimport AreachartHour from \"./areachartHour\";\nimport Barchart from \"./barchart\";\nimport Campuslist from \"./Campuslist\";\nimport YearlySales from \"./yearly-sales\";\nimport Speedometer from \"./Speedometer\";\nimport ViolationTables from \"./ViolationTableComponent\";\nimport {\n CardImg,\n Button,\n CardText,\n CardHeader,\n CardImgOverlay,\n CardFooter,\n CardDeck,\n Dropdown,\n DropdownMenu,\n DropdownItem,\n DropdownToggle,\n ButtonDropdown,\n \n} from \"reactstrap\"\nimport {useState } from \"react\"\n//Import Action to copy breadcrumb items from local state to redux state\nimport { setBreadcrumbItems } from \"../../store/actions\";\nimport Heatmapcontainer from \"./Heatmapcontainer\";\nimport {CampusIdContext} from \"components/Common/PageDataContext\";\n\nconst Dashboard = (props) => {\n\n const [ selectedCampusval, setCampusValue ] = useState()\n const breadcrumbItems = [\n\n ]\n useEffect(() => {\n props.setBreadcrumbItems('Dashboard', breadcrumbItems);\n \n })\n const Contextvalue = { selectedCampusval, setCampusValue };\n\n\nreturn (\n \n \n Indus | Dashboard\n \n \n\n \n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n{/* \n \n \n\n\n \n \n \n \n\n \n \n \n \n \n */}\n \n\n\n \n\n

Latest Violations

\n\n \n\n
\n {/* */}\n \n
\n\n
\n
\n \n\n\n\n\n\n\n
\n
\n )\n}\n\nexport default connect(null, { setBreadcrumbItems })(Dashboard);","import React, { createContext, useState, useEffect } from 'react';\r\n\r\nexport const AuthContext = createContext();\r\n\r\nexport const AuthProvider = ({ children }) => {\r\n const [userPermissions, setUserPermissions] = useState([]);\r\n const [userFullName, setUserFullName] = useState('');\r\n const [isAuthenticated, setIsAuthenticated] = useState(false);\r\n\r\n // Optionally, add a function to check if the user is authenticated by checking for the presence of a token in cookies\r\n const checkAuth = () => {\r\n const token = document.cookie.split('; ').find(row => row.startsWith('token='));\r\n if (token) {\r\n setIsAuthenticated(true);\r\n } else {\r\n setIsAuthenticated(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n checkAuth();\r\n }, []);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/Ador_logo_cropped.e7370a83.png\";","import React, { useEffect, useState, useContext } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport Slidewithindicator from \"./slidewithindicator\"\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport {ViolationsContext} from \"components/Common/PageDataContext\";\r\nimport jsPDF from 'jspdf';\r\nimport img2 from \"../../assets/images/Ador_logo_cropped.png\"\r\nimport Select from \"react-select\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n//import { ActiveImageContext } from './ViolationImageContext';\r\n\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n UncontrolledTooltip,\r\n\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { func, string } from \"prop-types\";\r\nimport { eventChannel } from \"redux-saga\";\r\nimport { result, some } from \"lodash\";\r\n\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nconst EditViolationModalComponent = (props) => {\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [ANPRVal, setANPR] = useState();\r\n const [imgData, setImageData] = useState();\r\n const [alertmsg, setAlert] = useState();\r\n const { violations, setViolations } = useContext(ViolationsContext);\r\n const [violationImageIndex, setViolationImageIndex] = useState(0);\r\n var violationImage = '';\r\n const [showGenerateChallanButton, setshowGenerateChallanButton] = React.useState(false);\r\n const[ViolationRegNo, setViolationRegNo] = useState();\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [modal_small, setmodal_small] = useState(false);\r\n const [SelectedChallanType, setSelectedChallanType] = useState({ value: 1, label: \"Penalty\" });\r\n const [TotalViolationFreq, setTotalViolationFreq] = useState();\r\n const [EmailPDFCheck, setEmailPDFCheck] = useState(false);\r\n const [ showDeleteButton, setShowDeleteButton] = useState(false);\r\n\r\n\r\n\r\n let newdata = [];\r\n let updatedViolationData;\r\n\r\n const [CompanyName, setCompanyName] = useState();\r\n const [CompanyAddress1, setNewCompanyAddress1] = useState();\r\n const [CompanyAddress2, setNewCompanyAddress2] = useState();\r\n const [CityName, setCityName] = useState();\r\n const [StateName, setStateName] = useState();\r\n const [NewChallanAmount, setNewChallanAmount] = useState();\r\n const [ChallanDetailsResponse, setChallanDetailsResponse] = useState();\r\n const [ ChallanType, setChallanType] = useState(\"Penalty\");\r\n const [ChallanID, setChallanID] = useState();\r\n const [CompanyLogo, setCompanyLogo] = useState();\r\n const [SecondaryCompanyLogo, setSecondaryCompanyLogo] = useState();\r\n const[showEmailButton, setShowEmailButton] = useState(false);\r\n const[showSMSButton, setShowSMSButton] = useState(false);\r\n const [ DuplicateChallan, setDuplicateChallan]= useState(false);\r\nvar CompanyLocationName = '';\r\n //const ImgContextvalue = { violationImageIndex, setViolationImageIndex };\r\n \r\n\r\n const tog_small = () => {\r\n debugger;\r\n setmodal_small(!modal_small)\r\n document.body.classList.add(\"no_padding\")\r\n }\r\n\r\n\r\n\r\n const handleChangeChallanType = event => {\r\n \r\n setSelectedChallanType(event);\r\n setChallanType(event.label); \r\n console.log(\"Select Challan Type------>\",SelectedChallanType);\r\n console.log(\"Challan Type--->\", ChallanType);\r\n \r\n };\r\n\r\n// useEffect(() => {\r\n \r\n \r\n// if (props.ImgPath != null) {\r\n// debugger;\r\n// console.log(props.ImgPath)\r\n// fetch(apiEndpoint+\"/GetViolationLogImages?strImagePath=\" + props.ImgPath)\r\n// .then(res => res.json())\r\n// .then(\r\n// (result) => {\r\n \r\n// if (result != undefined || result != \"\") {\r\n// // console.log(result);\r\n// if (result.Message == \"File not found!\") {\r\n// console.log(\"No Image found!!\");\r\n// setAlert(\r\n// setAlert(null)}\r\n// onCancel={() => setAlert(null)}\r\n// confirmBtnBsStyle=\"warning\"\r\n// >\r\n// {result.Message}\r\n// \r\n// )\r\n// }\r\n// else {\r\n// setImageData(result);\r\n// }\r\n\r\n// }\r\n// else {\r\n// console.log(\"No Image found!!\");\r\n// }\r\n// },\r\n// // Note: it's important to handle errors here\r\n// // instead of a catch() block so that we don't swallow\r\n// // exceptions from actual bugs in components.\r\n// (error) => {\r\n// //console.log(error);\r\n// // /setError(error);\r\n// }\r\n// )\r\n// // }, [props.ImgPath])\r\n\r\n// }\r\n\r\n// },[props.ImgPath]);\r\n\r\n\r\n\r\nuseEffect(() => {\r\n debugger;\r\n \r\n if(props.ViolationData.CampusID != null)\r\n {\r\n const intCampusID = props.ViolationData.CampusID;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetEmailSMSStatus\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) =>{\r\n debugger;\r\n if(result != undefined || result != \"\")\r\n {\r\n if(result.EnableEmail == 1)\r\n {\r\n setShowEmailButton(true);\r\n }\r\n else{\r\n setShowEmailButton(false);\r\n }\r\n if(result.EnableSMS == 1)\r\n {\r\n setShowSMSButton(true);\r\n }\r\n else{\r\n setShowSMSButton(false);\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n},[props.ViolationData.CampusID]);\r\n\r\nconst ChallanTypeDropdown = [\r\n {\r\n value: 1,\r\n label: \"Penalty\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Warning\"\r\n }\r\n];\r\n\r\nconst GetChallanConfig = (violationData) =>{\r\n\r\n debugger;\r\n var intCampusID = violationData.CampusID;\r\n setTotalViolationFreq(violationData.TotalViolationFrequency);\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetChallanConfigDetails\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n // 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n\r\n if (data.ChallanConfigDetails != null) {\r\n setCompanyName(data.ChallanConfigDetails.CompanyName);\r\n setNewCompanyAddress1(data.ChallanConfigDetails.AddressLine1);\r\n setNewCompanyAddress2(data.ChallanConfigDetails.AddressLine2);\r\n setCityName(data.ChallanConfigDetails.City);\r\n setStateName(data.ChallanConfigDetails.State);\r\n setNewChallanAmount(data.ChallanConfigDetails.ChallanAmount);\r\n setCompanyLogo(data.base64Image);\r\n setSecondaryCompanyLogo(data.secondBase64Image);\r\n setDuplicateChallan(data.ChallanConfigDetails.DuplicateChallan);\r\n\r\n\r\n\r\n }\r\n else {\r\n setModalOpen(false);\r\n setAlert(\r\n window.location.href='/ChallanSettings'}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n cancelBtnBsStyle=\"secondary\"\r\n showCancel\r\n reverseButtons \r\n >\r\n {\"Challan Details Not Available\"}\r\n
\r\n {\"Can we Redirect you to Challan Settings Page ?\"}\r\n \r\n \r\n )\r\n setCompanyName('');\r\n setNewCompanyAddress1('');\r\n setNewCompanyAddress2('');\r\n setCityName('');\r\n setStateName('');\r\n setNewChallanAmount('');\r\n setDuplicateChallan(false);\r\n\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\n\r\nconst DownloadPDF = (violationData, NewANPRVal, ChallanID) =>{\r\ndebugger;\r\n\r\n\r\nlet VehicleOwner = ''\r\nif(violationData.VehicleOwnerName != null)\r\n{\r\n VehicleOwner = violationData.VehicleOwnerName;\r\n}\r\nelse{\r\n VehicleOwner = \"NA\";\r\n}\r\n\r\n\r\nlet Department = ''\r\nif(violationData.VehicleOwnerDept)\r\n{\r\n Department = violationData.VehicleOwnerDept;\r\n}\r\nelse{\r\n {\r\n Department = \"NA\";\r\n }\r\n \r\n}\r\nlet EICName = ''\r\nif(violationData.ManagerName)\r\n{\r\n EICName = violationData.ManagerName;\r\n}\r\nelse{\r\n EICName = \"NA\";\r\n\r\n}\r\n\r\n\r\n let RegistrationNumber = '';\r\nif(NewANPRVal != null)\r\n{\r\nRegistrationNumber = NewANPRVal;\r\n}\r\nelse\r\n{\r\nRegistrationNumber = violationData.RegistrationNumber;\r\n}\r\ndebugger;\r\nconsole.log(violationImageIndex)\r\nconsole.log(imgData)\r\n\r\nif(violationImageIndex == 0)\r\n{\r\nviolationImage = `data:image/png;base64,${imgData.ViolationImgBase64Img[0]}`;\r\nconsole.log(violationImage)\r\n}\r\nelse if(violationImageIndex == 1)\r\n{\r\nviolationImage = `data:image/png;base64,${imgData.ViolationImgBase64Img[1]}`; \r\n}\r\nelse if(violationImageIndex == 2)\r\n{\r\nviolationImage = `data:image/png;base64,${imgData.ViolationImgBase64Img[2]}`;\r\n}\r\n\r\nelse if(violationImageIndex == 3)\r\n{\r\nviolationImage = `data:image/png;base64,${imgData.ViolationImgBase64Img[3]}`;\r\n}\r\n\r\n\r\n console.log()\r\n//var img = new Image();\r\n// img.src = img2;\r\nvar img = '';\r\nvar secondaryImg = '';\r\n\r\ndebugger;\r\n\r\nimg = `data:image/png;base64,${CompanyLogo}`;\r\n\r\nvar CompanyAddress = \"\";\r\n\r\nif(CompanyAddress1 != \"\")\r\n{\r\n CompanyAddress = CompanyAddress1+\",\"+CompanyAddress2;\r\n\r\n}\r\nelse{\r\n CompanyAddress = CompanyAddress2;\r\n}\r\n\r\nvar CityAddress = \"\";\r\nif(CityName != \"\" && StateName == \"\") \r\n{\r\n CityAddress = CityName;\r\n}\r\nelse if(StateName != \"\" && CityName == \"\")\r\n{\r\n CityAddress = StateName;\r\n}\r\nelse{\r\n CityAddress = CityName+\",\"+StateName;\r\n}\r\nvar Speed = ''+violationData.VehicleSpeed+' Km/Hr';\r\nvar TotalViolationFrequency = ''+TotalViolationFreq;\r\nvar ChallanAmount = 'Rs.'+NewChallanAmount;\r\nvar UniqueChallanID = ''+ChallanID;\r\n\r\n\r\n\r\n\r\nif(DuplicateChallan == true)\r\n{\r\n var doc = new jsPDF('l', 'mm','a3');\r\ndoc.addFont('courier', 'Bold');\r\n doc.setFontSize(25);\r\n doc.text( \"Vehicle Over Speeding Challan \",105,10,\"center\");\r\n doc.text( \"Vehicle Over Speeding Challan \",305,10,\"center\");\r\n\r\n doc.setFontSize(20);\r\n doc.text(CompanyName, 100, 25, 'center');\r\n doc.text(CompanyName, 300, 25, 'center');\r\n doc.setFontSize(12); \r\n doc.text(CompanyAddress, 100, 30, 'center');\r\n doc.text(CompanyAddress, 300, 30, 'center');\r\n\r\n doc.setFontSize(12); \r\n doc.text(CityAddress, 100, 35, 'center');\r\n doc.text(CityAddress, 300, 35, 'center');\r\n\r\n doc.setFontSize(9);\r\n doc.text(17,50,\"Dear Sir/Madam,\");\r\n doc.text(217,50,\"Dear Sir/Madam,\");\r\n\r\n doc.text(17,55,\"Your vehicle has violated prescribed speed limit inside \" + violationData.LocationName + \" as mentioned below:\")\r\n doc.text(217,55,\"Your vehicle has violated prescribed speed limit inside \" + violationData.LocationName + \" as mentioned below:\")\r\n\r\n\r\n \r\n doc.rect(15, 60, 180, 110);\r\n doc.rect(215, 60, 180, 222);\r\n\r\n doc.setFontSize(12);\r\n doc.text(17, 67, \"Challan ID\");\r\n doc.text(217, 67, \"Challan ID\");\r\n\r\n doc.text(17, 77, \"Violation Date Time\");\r\n doc.text(217, 77, \"Violation Date Time\");\r\n\r\n doc.text(17, 87, \"Violation Speed\");\r\n doc.text(217, 87, \"Violation Speed\");\r\n\r\n doc.text(17, 97, \"Vehicle Owner\");\r\n doc.text(217, 97, \"Vehicle Owner\");\r\n\r\n doc.text(17, 107, \"Regitration Number\");\r\n doc.text(217, 107, \"Regitration Number\");\r\n\r\n doc.text(17, 117,\"Challan Type\");\r\n doc.text(217, 117,\"Challan Type\");\r\n\r\n doc.text(17, 127, \"Challan Amount\");\r\n doc.text(217, 127, \"Challan Amount\");\r\n\r\n doc.text(17,137,\"Violation Frequency\");\r\n doc.text(217,137,\"Violation Frequency\");\r\n\r\n doc.text(17,147,\"Location Name\");\r\n doc.text(217,147,\"Location Name\");\r\n\r\n doc.text(17,157,\"Department\");\r\n doc.text(217,157,\"Department\");\r\n\r\n doc.text(17,167,\"EIC / HOD Name\");\r\n doc.text(217,167,\"EIC / HOD Name\");\r\n\r\n\r\n\r\n doc.addImage(img, 'png', 150, 10, 50, 40)\r\n doc.addImage(img, 'png', 350, 10, 50, 40)\r\n\r\n\r\nif(SecondaryCompanyLogo != \"\")\r\n{\r\n secondaryImg = `data:image/png;base64,${SecondaryCompanyLogo}`;\r\n doc.addImage(secondaryImg,'png', 20,15,25,25);\r\n doc.addImage(secondaryImg,'png', 220,15,25,25);\r\n\r\n}\r\n \r\n // doc.rect(15, 63, 180, 75);\r\n doc.line(100,60,100,170);\r\n doc.line(300,60,300,170);\r\n\r\n doc.line(15, 70, 195, 70);\r\n doc.line(215, 70, 395, 70);\r\n\r\n doc.line(15, 80, 195, 80);\r\n doc.line(215, 80, 395, 80);\r\n\r\n doc.line(15, 90, 195, 90);\r\n doc.line(215, 90, 395, 90);\r\n\r\n doc.line(15, 100, 195, 100);\r\n doc.line(215, 100, 395, 100);\r\n\r\n doc.line(15, 110, 195, 110);\r\n doc.line(215, 110, 395, 110);\r\n\r\n doc.line(15, 120, 195, 120);\r\n doc.line(215, 120, 395, 120);\r\n\r\n doc.line(15, 130, 195, 130);\r\n doc.line(215, 130, 395, 130);\r\n\r\n doc.line(15, 140, 195, 140);\r\n doc.line(215, 140, 395, 140);\r\n\r\n doc.line(15,150, 195, 150 );\r\n doc.line(215,150, 395, 150 );\r\n\r\n doc.line(15,160, 195, 160 );\r\n doc.line(215,160, 395, 160 );\r\n\r\n \r\n doc.rect(15, 170, 180, 112); \r\n doc.rect(215, 170, 180, 112); \r\n\r\n doc.addImage(violationImage, 'png', 17, 172, 176, 108);\r\n doc.addImage(violationImage, 'png', 217, 172, 176, 108); \r\n \r\n\r\n doc.text(UniqueChallanID, 102, 67);\r\n doc.text(UniqueChallanID, 302, 67);\r\n\r\n doc.text(violationData.IncidentTime,102, 77);\r\n doc.text(violationData.IncidentTime,302, 77);\r\n\r\n doc.text(RegistrationNumber,102, 107);\r\n doc.text(RegistrationNumber,302, 107);\r\n\r\n doc.text(Speed,102, 87);\r\n doc.text(Speed,302, 87);\r\n\r\n doc.text(VehicleOwner,102,97);\r\n doc.text(VehicleOwner,302,97);\r\n\r\n doc.text(ChallanType,102,117);\r\n doc.text(ChallanType,302,117);\r\n\r\n doc.text(TotalViolationFrequency, 102,137)\r\n doc.text(TotalViolationFrequency, 302,137)\r\n\r\n doc.text(violationData.LocationName, 102,147);\r\n doc.text(violationData.LocationName, 302,147);\r\n\r\n doc.text(Department, 102,157);\r\n doc.text(Department, 302,157);\r\n\r\n doc.text(EICName,102,167);\r\n doc.text(EICName,302,167);\r\n\r\n if(ChallanType == \"Warning\")\r\n {\r\n doc.text(\"-\", 102, 117)\r\n doc.text(\"-\", 302, 117)\r\n\r\n\r\n }\r\n else{\r\n doc.text(ChallanAmount, 102, 127);\r\n doc.text(ChallanAmount, 302, 127);\r\n\r\n\r\n }\r\n \r\n // const pdfData = doc.output();\r\n // const pdfBlob = new Blob([pdfData], { type: 'application/pdf' });\r\n // savePDFToServer(pdfBlob);\r\n if(EmailPDFCheck != true)\r\n {\r\n doc.save('Challan'+RegistrationNumber+'.pdf')\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n }\r\n\r\n console.log(\"No need of duplicte challan\");\r\n}\r\nelse{\r\n\r\n\r\n\r\nvar doc = new jsPDF('p', 'mm','a4');\r\ndoc.addFont('courier', 'Bold');\r\n doc.setFontSize(25);\r\n doc.text( \"Vehicle Over Speeding Challan \",105,10,\"center\");\r\n doc.setFontSize(20);\r\n doc.text(CompanyName, 100, 25, 'center');\r\n doc.setFontSize(12); \r\n doc.text(CompanyAddress, 100, 30, 'center');\r\n doc.setFontSize(12); \r\n doc.text(CityAddress, 100, 35, 'center');\r\n\r\n doc.setFontSize(9);\r\n doc.text(17,50,\"Dear Sir/Madam,\");\r\n doc.text(17,55,\"Your vehicle has violated prescribed speed limit inside \" + violationData.LocationName + \" as mentioned below:\")\r\n\r\n\r\n \r\n doc.rect(15, 60, 180, 110);\r\n doc.setFontSize(12);\r\n doc.text(17, 67, \"Challan ID\");\r\n doc.text(17, 77, \"Violation Date Time\");\r\n doc.text(17, 87, \"Violation Speed\");\r\n doc.text(17, 97, \"Vehicle Owner\");\r\n doc.text(17, 107, \"Regitration Number\");\r\n doc.text(17, 117,\"Challan Type\");\r\n doc.text(17, 127, \"Challan Amount\");\r\n doc.text(17,137,\"Violation Frequency\");\r\n doc.text(17,147,\"Location Name\");\r\n doc.text(17,157,\"Department\");\r\n doc.text(17,167,\"EIC / HOD Name\");\r\n\r\n\r\n doc.addImage(img, 'png', 150, 10, 50, 40)\r\n\r\nif(SecondaryCompanyLogo != \"\")\r\n{\r\n secondaryImg = `data:image/png;base64,${SecondaryCompanyLogo}`;\r\n doc.addImage(secondaryImg,'png', 20,15,25,25);\r\n}\r\n \r\n // doc.rect(15, 63, 180, 75);\r\n doc.line(100,60,100,170)\r\n doc.line(15, 70, 195, 70);\r\n doc.line(15, 80, 195, 80);\r\n doc.line(15, 90, 195, 90);\r\n doc.line(15, 100, 195, 100);\r\n doc.line(15, 110, 195, 110);\r\n doc.line(15, 120, 195, 120);\r\n doc.line(15, 130, 195, 130);\r\n doc.line(15, 140, 195, 140);\r\n doc.line(15,150, 195, 150 );\r\n doc.line(15,160, 195, 160 );\r\n \r\n doc.rect(15, 170, 180, 112); \r\n doc.addImage(violationImage, 'png', 17, 172, 176, 108) \r\n\r\n doc.text(UniqueChallanID, 102, 67)\r\n doc.text(violationData.IncidentTime,102, 77);\r\n doc.text(RegistrationNumber,102, 107);\r\n doc.text(Speed,102, 87);\r\n doc.text(VehicleOwner,102,97);\r\n doc.text(ChallanType,102,117);\r\n doc.text(TotalViolationFrequency, 102,137)\r\n doc.text(violationData.LocationName, 102,147);\r\n doc.text(Department, 102,157);\r\n doc.text(EICName,102,167);\r\n if(ChallanType == \"Warning\")\r\n {\r\n doc.text(\"-\", 102, 117)\r\n\r\n }\r\n else{\r\n doc.text(ChallanAmount, 102, 127);\r\n\r\n }\r\n \r\n // const pdfData = doc.output();\r\n // const pdfBlob = new Blob([pdfData], { type: 'application/pdf' });\r\n // savePDFToServer(pdfBlob);\r\n if(EmailPDFCheck != true)\r\n {\r\n doc.save('Challan'+RegistrationNumber+'.pdf')\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n }\r\n}\r\n\r\n debugger;\r\nif(EmailPDFCheck == true && violationData.VehicleOwnerEmailAddress != null)\r\n{\r\n const pdfData = doc.output('datauristring');\r\n EmailChallanToVehicleOwner(pdfData, violationData)\r\n}\r\n}\r\n\r\nconst GetViolationImage = (strImagePath) => {\r\n if (strImagePath != null) {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetViolationLogImages\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"strImagePath\": strImagePath,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n \r\n if (result != undefined || result != \"\") {\r\n // console.log(result);\r\n if (result.Message == \"File not found!\") {\r\n console.log(\"No Image found!!\");\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else {\r\n setImageData(result);\r\n }\r\n\r\n }\r\n else {\r\n console.log(\"No Image found!!\");\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n // }, [props.ImgPath])\r\n\r\n }\r\n\r\n};\r\n\r\n\r\nconst DownloadChallan = (violationData, NewANPRVal) => \r\n{\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SaveChallanGenerationLogs\",\r\n {\r\n mode: \"cors\",\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"RecordID\": violationData.RecordID,\r\n \"CampusID\": violationData.CampusID,\r\n \"LocationID\": violationData.LocationID,\r\n \"IncidentTime\": violationData.IncidentTime,\r\n \"ChallanAmount\": NewChallanAmount,\r\n \"ChallanType\": ChallanType,\r\n \"VehicleSpeed\": violationData.VehicleSpeed,\r\n \"RegistrationNumber\": NewANPRVal,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n }) \r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n\r\n if (data.ChallanID != null) {\r\n debugger;\r\n DownloadPDF(violationData,NewANPRVal,data.ChallanID);\r\n\r\n }\r\n else {\r\n \r\n }\r\n\r\n });\r\n}\r\n\r\nconst EmailChallanToVehicleOwner = (pdfData, violationData) =>{\r\n debugger;\r\n // const pdf = new jsPDF();\r\n // pdf.text('Hello, World!', 10, 10);\r\n // const pdfData = pdf.output('datauristring');\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetChallanPDF\",\r\n {\r\n mode: \"cors\",\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({ pdfData: pdfData,\r\n VehicleOwnerName: violationData.VehicleOwnerName,\r\n VehicleOwnerEmail: violationData.VehicleOwnerEmailAddress,\r\n IncidentTime: violationData.IncidentTime,\r\n CampusName: violationData.CampusName,\r\n LocationName: violationData.LocationName,\r\n RegistrationNumber: violationData.RegistrationNumber,\r\n CampusID: violationData.CampusID,\r\n strToken: sessionStorage.getItem(\"Clear_AuthUser\")\r\n }) \r\n \r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n console.log(data);\r\n setModalOpen(false);\r\n if(data.Message == \"success\")\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nconst toggle = () => {\r\n\r\n setModalIsOpen(!modalIsOpen)\r\n \r\n }\r\n\r\nconst SaveViolation = (violationData, NewANPRVal) => {\r\n debugger;\r\n \r\n setTotalViolationFreq(violationData.TotalViolationFrequency);\r\n // UserValidated\r\n fetch(apiEndpoint+\"/UpdateViolationANPRLog\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"RecordID\": violationData.RecordID,\r\n //\"IncidentTime\": violationData.IncidentTime,\r\n \"RegistrationNumber\": NewANPRVal,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n\r\n // const updatedData = await response.json();\r\n // return updatedData;\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n console.log(result);\r\n if (result.Violations != undefined) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n \r\n )\r\n debugger;\r\n var recdID = JSON.parse(result.Violations).RecordID;\r\n newdata = violations.slice();\r\n // newdata.find(someobject => someobject.RecordID == recdID).ViolationData = JSON.parse(result.Violations) ;\r\n newdata.find((someobject) => {\r\n if(someobject.RecordID === recdID){\r\n someobject.RegistrationNumber = NewANPRVal;\r\n someobject.VehicleOwnerName = JSON.parse(result.Violations).VehicleOwnerName;\r\n someobject.VehicleOwnerDept = JSON.parse(result.Violations).VehicleOwnerDept;\r\n someobject.ManagerName = JSON.parse(result.Violations).ManagerName;\r\n someobject.VehicleOwnerContact = JSON.parse(result.Violations).VehicleOwnerContact;\r\n someobject.VehicleOwnerEmailAddress = JSON.parse(result.Violations).VehicleOwnerEmailAddress;\r\n someobject.EditDeleteStatus = JSON.parse(result.Violations).EditDeleteStatus;\r\n\r\n \r\n\r\n\r\n }} );\r\n\r\n // CompanyLocationName = newdata.find(log => log.RecordID == recdID).LocationName;\r\n setTotalViolationFreq(JSON.parse(result.Violations).TotalViolationFrequency);\r\n setViolations(newdata);\r\n console.log(\"Save Data--->\", newdata);\r\n\r\n\r\n setshowGenerateChallanButton(true);\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n )\r\n }\r\n\r\n const handleEmailPDFCheck = () => {\r\n debugger;\r\n setEmailPDFCheck(true);\r\n\r\n };\r\n\r\n const handleEmailAction = (violationData, NewANPRVal) => {\r\n debugger;\r\n const emailPromise = new Promise((resolve, reject) => {\r\n debugger;\r\n \r\n resolve();\r\n });\r\n \r\n emailPromise.then(() => {\r\n handleEmailPDFCheck();\r\n }).catch((error) => {\r\n // Handle error if any Promise in the chain encounters an issue\r\n });\r\n };\r\n\r\n const SendEmailToVehicleOwner = (violationData, NewANPRVal) =>{\r\n debugger;\r\n\r\n if(violationData.VehicleOwnerEmailAddress != null)\r\n {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SendEmailToRegisteredVehicleOwner\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"RecordID\": violationData.RecordID,\r\n //\"IncidentTime\": violationData.IncidentTime,\r\n \"RegistrationNumber\": NewANPRVal,\r\n \"LocationName\": violationData.LocationName,\r\n \"CampusName\": violationData.CampusName,\r\n \"CampusID\": violationData.CampusID,\r\n \"LocationID\": violationData.LocationID,\r\n \"VehicleOwnerName\": violationData.VehicleOwnerName,\r\n \"VehicleOwnerContact\": violationData.VehicleOwnerContact,\r\n \"VehicleOwnerEmailAddress\": violationData.VehicleOwnerEmailAddress,\r\n \"ManagerName\": violationData.ManagerName,\r\n \"VehicleOwnerDept\": violationData.VehicleOwnerDept,\r\n \"IncidentDateTime\": violationData.IncidentTime,\r\n \"VehicleSpeed\": violationData.VehicleSpeed,\r\n \"DailyViolationFrequency\": violationData.TotalViolationFrequency,\r\n \r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n \r\n \r\n if(data.responseType == \"success\")\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n \r\n \r\n )\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n \r\n \r\n })\r\n }\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n \r\n\r\n\r\n };\r\n\r\n const SendSMSToVehicleOwner = (violationData, NewANPRVal) =>{\r\n debugger;\r\n\r\n if(violationData.VehicleOwnerContact != null)\r\n {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SendSMSToRegisteredVehicleOwnerContact\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"RecordID\": violationData.RecordID,\r\n //\"IncidentTime\": violationData.IncidentTime,\r\n \"RegistrationNumber\": NewANPRVal,\r\n \"LocationName\": violationData.LocationName,\r\n \"VehicleOwnerName\": violationData.VehicleOwnerName,\r\n \"VehicleOwnerContact\": violationData.VehicleOwnerContact,\r\n \"VehicleOwnerEmailAddress\": violationData.VehicleOwnerEmailAddress,\r\n \"IncidentDateTime\": violationData.IncidentTime,\r\n \"VehicleSpeed\": violationData.VehicleSpeed, \r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n \r\n \r\n if(data.responseType == \"success\")\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n \r\n \r\n )\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n \r\n \r\n })\r\n }\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n \r\n\r\n\r\n };\r\n\r\n useEffect(() => {\r\n if (EmailPDFCheck) {\r\n debugger;\r\n DownloadChallan(props.ViolationData, ANPRVal);\r\n setEmailPDFCheck(false);\r\n \r\n }\r\n }, [EmailPDFCheck]);\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n const DeleteViolation = (violationData) => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/DeleteViolationANPRLog\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"RecordID\": violationData.RecordID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //console.log(result);\r\n if (result.Violations != undefined) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n\r\n var recdID = JSON.parse(result.Violations).RecordID;\r\n let newdata = violations.slice();\r\n var elindex=newdata.findIndex(someobject => someobject.RecordID == recdID);\r\n //delete newdata[elindex];\r\n newdata.splice(elindex, 1);\r\n setViolations(newdata);\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n GetViolationImage(props.ImgPath);\r\n setShowDeleteButton(UserPermissions.DeleteViolations);\r\n \r\n setANPR(props.ViolationData.RegistrationNumber);\r\n \r\n if(props.ViolationData.EditDeleteStatus == \"01\")\r\n {\r\n setshowGenerateChallanButton(true);\r\n\r\n }\r\n else{\r\n setshowGenerateChallanButton(false);\r\n }\r\n toggle();\r\n \r\n }}\r\n >\r\n \r\n {modalIsOpen==true && alertmsg}\r\n {props.ViolationData != undefined && imgData!=undefined &&\r\n \r\n\r\n \r\n \r\n \r\n \r\n {/* {props.ViolationData.RegistrationNumber} */}\r\n \r\n {/* */}\r\n \r\n {/* */}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n setANPR(event.target.value)}\r\n />\r\n \r\n \r\n {showDeleteButton &&\r\n \r\n\r\n }\r\n \r\n \r\n \r\n\r\n { showGenerateChallanButton &&\r\n \r\n }\r\n\r\n { showGenerateChallanButton && showEmailButton &&\r\n \r\n\r\n\r\n }\r\n\r\n { showGenerateChallanButton && showSMSButton &&\r\n \r\n\r\n \r\n }\r\n {showDeleteButton && \r\n Delete\r\n \r\n}\r\n {showSMSButton && showGenerateChallanButton &&\r\n \r\n Text Message\r\n \r\n } \r\n\r\n\r\n Save\r\n \r\n{ showGenerateChallanButton && \r\n \r\n Challan\r\n }\r\n{ showGenerateChallanButton && showEmailButton &&\r\n \r\n E-Mail\r\n}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n }\r\n {modalOpen ?\r\n {\r\n // tog_small()\r\n\r\n // }}\r\n\r\n >\r\n {\r\n tog_small()\r\n\r\n }} tag=\"h1\">\r\n \r\n \r\n\r\n \r\n \r\n Challan Type\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Violation Frequency\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n {/* */}\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\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 EditViolationModalComponent;","export function getCurrentDate(separator=''){\r\n\r\nlet newDate = new Date()\r\nlet date = newDate.getDate();\r\nlet month = newDate.getMonth() + 1;\r\nlet year = newDate.getFullYear();\r\n\r\nreturn `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date<10?`0${date}`:`${date}`}`\r\n}\r\n\r\nexport default getCurrentDate","import React, { useEffect, useState,useRef,useContext } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport JSZip, { file } from \"jszip\";\r\n//import Picker from 'react-month-picker'\r\nimport AuthContext from \"store/auth/authContext\";\r\nimport FileSaver from \"file-saver\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n ButtonGroup,\r\n UncontrolledTooltip,Spinner\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\n// import 'assets/scss/custom/pages/common.scss';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.css';\r\nimport 'react-bootstrap-table2-paginator/dist/react-bootstrap-table2-paginator.min.css';\r\n\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\n//import ReactToPrint from \"react-to-print\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n//import overlayFactory from 'react-bootstrap-table2-overlay';\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\n\r\nimport ViewImageModalComponent from './ViewImageModal';\r\nimport EditViolationModalComponent from './EditViolationModal'\r\nimport { ReportType, SearchData, SpeedType } from './ViolationLogsComponents';\r\n\r\nimport {ViolationsContext} from \"components/Common/PageDataContext\";\r\n\r\nimport getCurrentDate from \"components/Common/Utility\"\r\nimport { forEach, size } from \"lodash\";\r\n\r\nimport jwt from \"jsonwebtoken\";\r\n\r\n//Style\r\nconst btnstylesObj = {\r\n \"margin-top\": '2rem',\r\n };\r\n\r\n\r\n\r\n \r\n\r\n \r\n // This is custom csv export component\r\nconst ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n };\r\n\r\nconst ViolationTables = (props) => {\r\n const { SearchBar } = Search;\r\n\r\n //Print function\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n\r\n const [Monthlyrt, setMonthlyrt] = useState(moment().format(\"YYYY-MM\"));\r\n\r\n const [FromSpeed, setFrmSpeed] = useState(20);\r\n const [ToSpeed, setToSpeed] = useState(100);\r\n const [BoolANPR, setANPR] = useState(true);\r\n\r\n const [selectedReportTypeVal, setReportType] = useState(1);\r\n const [selectedSpeedTypeVal, setSpeedType] = useState(1);\r\n\r\n const[ selectonLoadLocVal, setselectonLoadLocVal] = useState();\r\n\r\n const [editviolations, seteditviolations] = useState();\r\n\r\n var today = new Date();\r\n var datefilename = getCurrentDate()+ '_Logs.csv';\r\n\r\n const[selectedSizePage, setSelectedSizePage] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const [isDownloadingImage, setIsDownloadingImage] = useState(false);\r\n\r\n\r\n const SearchViolations = () => {\r\n // useEffect(() => {\r\n setViolations([]);\r\n debugger;\r\n setIsLoading(true);\r\n\r\nif(ToSpeed >=1 && FromSpeed >=1)\r\n{\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,// 1,\r\n \"intLocationID\": selectedLocVal,//1,\r\n \"intReportType\": selectedReportTypeVal,//1,\r\n \"FromDtTm\": FromDtTm,\r\n \"ToDtTm\": ToDtTm,\r\n \"MonthlyRt\": Monthlyrt,\r\n \"intSpeedType\": selectedSpeedTypeVal,//1,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed,\r\n \"boolOnlyANPR\": BoolANPR,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n debugger;\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n if(JSON.parse(result.Violations).length>0){\r\n setViolations(JSON.parse(result.Violations));\r\n setSlicedViolation(JSON.parse(result.Violations).slice(0,10));\r\n\r\n }\r\n else\r\n setViolations([]);\r\n }\r\n setIsLoading(false);\r\n\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n\r\n}\r\n \r\n \r\n // }, [violations])\r\n\r\n\r\n}\r\n\r\nconst DownloadImage = (slice) => {\r\n debugger;\r\nvar slicedData = slice.current.table.props.data.map(obj =>{\r\n var tempData = {};\r\n const mapping = ['RecordID', 'ImagePath'];\r\n tempData[\"RecordID\"] = obj.RecordID;\r\n tempData[\"ImagePath\"] = obj.ImagePath;\r\n return tempData;\r\n});\r\n console.log(\"DownloadImage------Slice---->\", slicedViolation);\r\nif(slicedData.length <= 100)\r\n{\r\n setIsDownloadingImage(true);\r\n\r\n const currDate = new Date().toLocaleDateString();\r\n //const currTime = new Date().toLocaleTimeString();\r\n\r\n console.log(currDate);\r\n currDate.replace(\"/\",\"_\");\r\n currDate.replace(\"/\",\"_\");\r\n const FileName = \"AdorIndusImages\"+currDate+\".zip\";\r\n console.log(FileName);\r\n\r\n // can't change\r\n fetch(apiEndpoint+\"/GetDownloadedImages\",\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n \r\n },\r\n body: JSON.stringify(slicedData)\r\n })\r\n .then(response => response.blob())\r\n .then(blob => {\r\n debugger;\r\n saveAs(blob, FileName);\r\n // const url = window.URL.createObjectURL(blob);\r\n // const a = document.createElement('a');\r\n // a.href = url;\r\n // a.download = FileName;\r\n // a.click();\r\n setIsDownloadingImage(false);\r\n });\r\n\r\n\r\n}\r\nelse{\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Download Failed\r\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 exportPDF = () => {\r\n const unit = \"pt\";\r\n const size = \"A3\"; // Use A1, A2, A3 or A4\r\n const orientation = \"portrait\"; // portrait or landscape\r\n\r\n const marginLeft = 40;\r\n const doc = new jsPDF(orientation, unit, size);\r\n\r\n doc.setFontSize(15);\r\n // doc.autoTable({headStyles :{fillColor : [124, 95, 240]}, alternateRowStyles: {fillColor : [231, 215, 252]} }); \r\n const title = \"Violation Logs\";\r\n const headers = [[\"Campus Name\", \"Location Name\",\"Incident Time\",\"Type Of Violation\",\"Registration Number\",\"Speed of Offence\",\"Speed Limit\"]];\r\n\r\n const data = violations.map(log=> [log.CampusName,log.LocationName,log.IncidentTime,log.TypeOfViolation,log.RegistrationNumber,log.VehicleSpeed,log.SpeedLimit]);\r\n console.log(\"PDF Records------->\",data);\r\n let content = {\r\n startY: 50,\r\n head: headers,\r\n body: data\r\n };\r\n\r\n doc.text(title, marginLeft, 40);\r\n doc.autoTable(content);\r\n doc.save(getCurrentDate()+ '_Logs.pdf')\r\n}\r\n\r\nconst DisablePrintCol = () =>\r\n{\r\n debugger;\r\n const DisblePrintColumn = document.getElementById('DisbalePrint');\r\n if(DisblePrintCol)\r\n {\r\n DisablePrintColumn.style.display = \"none\";\r\n }\r\n\r\n}\r\n const breadcrumbItems = [\r\n \r\n // { title: \"Violation Logs\", link: \"/ViolationLogs\" },\r\n ]\r\n const [violations, setViolations] = useState([]);\r\n const Contextvalue = { violations, setViolations };\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const[slicedViolation, setSlicedViolation] = useState([]);\r\n\r\n const DateTimeFormatter = (data,row) =>{\r\n return<>\r\n {data.replace('T',' ')}\r\n \r\n }\r\n const RegistrationNumberFormatter = (data, row)=>{\r\n \r\n if(data.includes(\"Unknown\"))\r\n {\r\n \r\n return<>\r\n {data.replace('Unknown', '-')}\r\n \r\n }\r\n else{\r\n return<>\r\n {data}\r\n \r\n }\r\n\r\n\r\n }\r\n\r\n const columns = [\r\n {\r\n dataField: \"RecordID\",\r\n text: \"RecordID\",\r\n hidden: true,\r\n csvExport :false\r\n },\r\n {\r\n dataField: \"CampusName\",\r\n text: \"Campus Name\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n \r\n return { width: '150px', textAlign: 'center', backgroundColor: '#5b626b', color:'white', position:'sticky' };\r\n }\r\n\r\n \r\n },\r\n \r\n {\r\n dataField: \"LocationName\",\r\n text: \"Location Name\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '150px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n \r\n {\r\n dataField: \"IncidentTime\",\r\n text: \"Incident Datetime\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '170px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n \r\n formatter:(cell) => cell.replace('T',' ')\r\n },\r\n {\r\n dataField: \"TypeOfViolation\",\r\n text: \"Event Type\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '150px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n \r\n \r\n },\r\n {\r\n dataField: \"RegistrationNumber\",\r\n text: \"Reg Number\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n formatter:(cell) => cell.replace('Unknown','-')\r\n\r\n },\r\n // {\r\n // dataField: \"LaneNumber\",\r\n // text: \"Lane Number\",\r\n // sort: true\r\n // },\r\n {\r\n dataField: \"VehicleSpeed\",\r\n text: \"Speed of Offence\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"SpeedLimit\",\r\n text: \"Speed Limit\",\r\n hiddenWhenPrint: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '110px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n \r\n },\r\n {\r\n dataField: \"ImagePath\",\r\n text: \"View\",\r\n csvExport: false,\r\n id: \"DisbalePrint\",\r\n sort: false,\r\n formatter: (value, row) => (\r\n // \r\n // {value}\r\n // {row.SpeedLimit}\r\n // \r\n \r\n ),\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '60px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n \r\n dataField: \"ImagePath\",\r\n text: \"Edit\",\r\n csvExport: false,\r\n id: \"DisbalePrint\",\r\n sort: false,\r\n formatter: (value, row) => (\r\n \r\n \r\n \r\n ),\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '60px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n hidden:!editviolations\r\n }\r\n ]\r\n\r\n \r\n \r\n const custompagination = paginationFactory({\r\n page: 1,\r\n sizePerPage: 10,\r\n lastPageText: '>>',\r\n firstPageText: '<<',\r\n nextPageText: '>',\r\n prePageText: '<',\r\n showTotal: true,\r\n alwaysShowAllBtns: true,\r\n //all option for pagination\r\n paginationSize: 3,\r\n sizePerPageList: [ {\r\n text: '10', value: 10\r\n }, \r\n {\r\n text: '50', value: 50\r\n },\r\n {\r\n text: '100', value: 100\r\n }, {\r\n text: 'All', value: violations.length\r\n } ],\r\n \r\n onPageChange: function (page, sizePerPage) {\r\n debugger;\r\n console.log('page', page);\r\n console.log('sizePerPage', sizePerPage);\r\n const startIndex = sizePerPage * page;\r\n const endIndex = sizePerPage * (page - 1) ;\r\n handleSliceData(endIndex,startIndex);\r\n \r\n\r\n\r\n\r\n\r\n \r\n },\r\n onSizePerPageChange: function (page, sizePerPage) {\r\n debugger;\r\n console.log('Display Data page', page);\r\n console.log('Display Data sizePerPage', sizePerPage);\r\n const startIndex = sizePerPage * page;\r\n const endIndex = (sizePerPage * page) - page ;\r\n handleSliceData(endIndex,startIndex);\r\n \r\n }\r\n });\r\n const defaultSorted = [{\r\n dataField: 'IncidentTime',\r\n order: 'desc'\r\n\r\n }];\r\n\r\n\r\n const handleTableChange = (type,{ sortField, sortOrder }) => {\r\n debugger;\r\n // console.log(\"handleChange->\",sortOrder);\r\n // console.log(\"handleChange->\",sortField);\r\n\r\n custompagination.sizePerPage=10; \r\n \r\n }\r\n\r\n const handleDateTimeChange = e =>\r\n {\r\n debugger;\r\n const searchInput = e.target.value.toLowerCase();\r\n console.log(\"searchInput -->\", searchInput);\r\n const filteredData = data.filter((item) => { \r\n const formattedIncidentTime = item.IncidentTime.replace(' ', 'T').toLowerCase();\r\n return formattedIncidentTime.includes(searchInput);\r\n });\r\n \r\n props.searchProps.onChange(e);\r\n };\r\n\r\n \r\n\r\n // const handleDataChange = (type, {data}) =>{\r\n // custompagination.sizePerPage=10;\r\n // console.log(\"handleChange->\",data);\r\n // debugger;\r\n // if (type === 'SearchTable') {\r\n // const currentData = componentRef.current.getCurrentData();\r\n // console.log(currentData);\r\n // // Here, you can access the row data from the 'currentData' array and perform your desired actions.\r\n \r\n // }\r\n // }\r\n \r\n const handleSliceData = (endIndex, startIndex) =>{\r\n debugger;\r\n \r\n\r\n var data = violations.map(obj =>{\r\n var tempData = {};\r\n const mapping = ['RecordID', 'ImagePath'];\r\n tempData[\"RecordID\"] = obj.RecordID;\r\n tempData[\"ImagePath\"] = obj.ImagePath;\r\n return tempData;\r\n })\r\n //data = violations.map(log=> [log.RecordID,log.ImagePath]);\r\n console.log(\"sliced Data--->\", data);\r\n\r\n setSlicedViolation(data.slice(endIndex,startIndex));\r\n // const filteredData = data.slice(endIndex, startIndex);\r\n //console.log(\"sliced Data----->\", filteredData);\r\n }\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n\r\nconst ViolationLogsOnPageLoad = (LocValue) =>{\r\n setIsLoading(true);\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,// 1,\r\n \"intLocationID\": LocValue,//1,\r\n \"intReportType\": selectedReportTypeVal,//1,\r\n \"FromDtTm\": FromDtTm,\r\n \"ToDtTm\": ToDtTm,\r\n \"intSpeedType\": selectedSpeedTypeVal,//1,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed,\r\n \"boolOnlyANPR\": BoolANPR,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n debugger;\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n if(JSON.parse(result.Violations).length>0){\r\n setViolations(JSON.parse(result.Violations));\r\n \r\n\r\n setSlicedViolation(JSON.parse(result.Violations).slice(0,10));\r\n console.log(\"ViolationOnPageLoad-->\", JSON.parse(result.Violations));\r\n \r\n\r\n }\r\n else\r\n setViolations([]);\r\n }\r\n setIsLoading(false);\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n\r\n\r\n}\r\n\r\n useEffect(() => {\r\n\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n seteditviolations(UserPermissions.EditViolations)\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n //console.log(JSON.parse(result.CampusList));\r\n if (result.CampusList != undefined) {\r\n setCampusItems(JSON.parse(result.CampusList));\r\n var campuslst = JSON.parse(result.CampusList);\r\n setSelectedCampusItem(campuslst[0]);\r\n setCampusSelected(campuslst[0].value);\r\n changeCampusSelectHandler(campuslst[0])\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n \r\n }, [])\r\n \r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState();\r\n\r\n\r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogLocationList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"intCampusID\": selectedCampusVal\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.Locations != undefined) {\r\n var locArr = JSON.parse(result.Locations);\r\n if (Array.isArray(locArr)) {\r\n locArr.unshift({ \"value\": 0, \"label\": \"All\" });\r\n\r\n }\r\n if (locArr && locArr.length > 0) {\r\n setLocItems(locArr);\r\n\r\n var loclst =locArr;\r\n setSelectedLocItem(loclst[0]);\r\n setLocSelected(loclst[0].value);\r\n setselectonLoadLocVal(loclst[0].value);\r\n ViolationLogsOnPageLoad(loclst[0].value);\r\n }\r\n // locArr.push({ \"value\": 0, \"label\": \"All\" })\r\n \r\n \r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [selectedCampusVal])\r\n\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n \r\n };\r\n\r\n const changeLocSelectHandler = (event) => {\r\n setSelectedLocItem(event);\r\n setLocSelected(event.value);\r\n\r\n \r\n \r\n };\r\n\r\n const changeReportTypeHandle = () =>{\r\n debugger;\r\n \r\n\r\n }\r\n\r\n const changeFrmSpeedHandler= (value, ctx) => {\r\n if(value>parseInt(ToSpeed)){\r\n return \"Enter Valid From Speed Value!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToSpeedHandler = (value, ctx) => {\r\n if(value {\r\n // console.log(value);\r\n if(value>ToDtTm){\r\n return \"From date cannot be greater than To date!!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeMonthHandler = (value, ctx) =>{\r\n debugger;\r\n let Year = value.split('-');\r\n if(Year[0] < 2020)\r\n {\r\n return \"No Data Available\";\r\n }\r\n console.log(value);\r\n return true; \r\n\r\n }\r\n\r\n const changeToDateHandler = (value, ctx) => {\r\n if(value {\r\n var body = document.body,\r\n range,\r\n sel;\r\n if (document.createRange && window.getSelection) {\r\n range = document.createRange();\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n try {\r\n range.selectNodeContents(el);\r\n sel.addRange(range);\r\n } catch (e) {\r\n range.selectNode(el);\r\n sel.addRange(range);\r\n }\r\n document.execCommand(\"copy\");\r\n } else if (body.createTextRange) {\r\n range = body.createTextRange();\r\n range.moveToElementText(el);\r\n range.select();\r\n range.execCommand(\"Copy\");\r\n }\r\n\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Copied to clipboard!\r\n \r\n )\r\n}\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Violation Logs', breadcrumbItems);\r\n // SearchViolations();\r\n })\r\n\r\n \r\n return (\r\n \r\n\r\n\r\n \r\n Indus | Violation Logs\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setANPR(event.target.checked)}\r\n />\r\n \r\n ANPR\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n changeReportTypeHandle}\r\n \r\n >\r\n \r\n \r\n \r\n setMonthlyrt(event.target.value)}\r\n\r\n />\r\n \r\n \r\n \r\n \r\n setFrmDttm(event.target.value)}\r\n />\r\n {/* setFrmDttm(event.target.value)} /> */}\r\n \r\n \r\n\r\n \r\n setToDttm(event.target.value)}\r\n />\r\n {/* setToDttm(event.target.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 setFrmSpeed(event.target.value)} \r\n />\r\n \r\n \r\n \r\n setToSpeed(event.target.value)}\r\n />\r\n \r\n \r\n\r\n Search\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {alertmsg\r\n }\r\n\r\n \r\n\r\n \r\n \r\n \r\n {\r\n props => (\r\n
\r\n \r\n \r\n \r\n \r\n   \r\n \r\n   \r\n \r\n copyToClipboardAsTable(\r\n document.getElementById(\"react-bs-table\")\r\n )\r\n }\r\n >\r\n Copy\r\n \r\n  \r\n {/* (\r\n \r\n Print \r\n \r\n \r\n )}\r\n content={() => componentRef.current}\r\n documentTitle=\"ViolationLog\"\r\n \r\n \r\n /> */}\r\n {/*   */}\r\n \r\n\r\n DownloadImage(componentRef)\r\n }\r\n >\r\n Download Images\r\n \r\n\r\n \r\n\r\n \r\n \r\n {/* \r\n This will open a print page with the visible rows of the\r\n table.\r\n */}\r\n \r\n This will copy to your clipboard the visible rows of the\r\n table.\r\n \r\n \r\n This will download table data in csv file.\r\n \r\n \r\n This will download table data in pdf file.\r\n \r\n \r\n This will download table data Images in zip file.\r\n Please download images for maximum 100 records at a time.\r\n \r\n \r\n \r\n {isLoading ? (\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n

Loading Data Please Wait....

\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n):(
\r\n
)}\r\n\r\n{isDownloadingImage ? (\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
Downloading Images Please Wait....
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n):(
\r\n
)}\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n )\r\n }\r\n \r\n \r\n \r\n\r\n \r\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, { setBreadcrumbItems })(ViolationTables);\r\n","import React, { Component } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { InfoWindow } from \"google-maps-react\";\r\n\r\nexport default class InfoWindowEx extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.infoWindowRef = React.createRef();\r\n this.contentElement = document.createElement(`div`);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.children !== prevProps.children) {\r\n ReactDOM.render(\r\n React.Children.only(this.props.children),\r\n this.contentElement\r\n );\r\n if(this.infoWindowRef.current.infowindow!=undefined){\r\n this.infoWindowRef.current.infowindow.setContent(this.contentElement);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import { Map, GoogleApiWrapper, Marker, InfoWindow } from 'google-maps-react';\r\nimport React, { Component } from 'react';\r\nimport InfoWindowEx from \"./InfoWindowEx\";\r\n//import ReactTooltip from \"react-tooltip\";\r\n\r\nimport { Table } from 'reactstrap';\r\nimport { Badge } from 'reactstrap';\r\nimport Blink from 'react-blink-text';\r\nimport { Popup } from 'react-leaflet';\r\nconst mapStyles = {\r\n width: '100%',\r\n height: '100%',\r\n};\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nconst google = window.google = window.google ? window.google : {}\r\n\r\nvar collection = [];\r\nclass MapContainer extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n collection: [],\r\n value: 0, \r\n centre: {lat:20.5937,lng:78.9629},\r\n showingInfoWindow: false,\r\n showInfoWindow: false,\r\n show: false\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n //this.setState({ centre:{lat:\"20.5937\",lng:\"78.9629\"} })\r\n if (prevProps.CampusID !== this.props.CampusID) {\r\n // UserValidated\r\n const url = apiEndpoint + '/GetLocationList';\r\n fetch(url, { \r\n method: 'POST', \r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": this.props.CampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n }).then(res => res.json()).then((result) => {\r\n console.log(result)\r\n\r\n this.setState({ collection: JSON.parse(result.Locations) })\r\n this.setState({ showingInfoWindow: false })\r\n console.log(this.state.collection)\r\n collection = this.state.collection;\r\n this.setState({ centre: { lat: collection[0].Latitude, lng: collection[0].Longitude } })\r\n }\r\n ).catch((error) => console.log(error));\r\n }\r\n }\r\n\r\n\r\n componentDidMount() {\r\n // this.setState({ centre:{lat:\"20.5937\",lng:\"78.9629\"} })\r\n var intCampusID = this.props.CampusID;\r\n console.log(intCampusID)\r\n\r\nif(intCampusID!=undefined){\r\n // UserValidated\r\n const url = apiEndpoint + '/GetLocationList';\r\n fetch(url, { \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n }).then(res => res.json()).then((result) => {\r\n \r\n this.setState({ collection: JSON.parse(result.Locations) })\r\n\r\n collection = this.state.collection;\r\n this.setState({ centre: { lat: collection[0].Latitude, lng: collection[0].Longitude } })\r\n \r\n }\r\n\r\n ).catch((error) => console.log(error));\r\n }\r\n }\r\n\r\n onMarkerClick = (props, marker) => {\r\n this.setState({\r\n activeMarker: marker,\r\n showingInfoWindow: true\r\n });\r\n\r\n // UserValidated\r\n const url = apiEndpoint + '/GetLocationData';\r\n console.log(url)\r\n fetch(url,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intLocationID\": props.value,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json()).then((result) => {\r\n result = JSON.parse(result.LocationDetails)\r\n console.log(result);\r\n var tdStatus;\r\n if (result != null) {\r\n if (result.status == \"Online\") {\r\n tdStatus = ;\r\n }\r\n else {\r\n tdStatus = ;\r\n }\r\n this.setState({\r\n selectedPlace: result.LocationName,\r\n // dailyViolations: result.dailyViolationCount,\r\n // weeklyViolations: result.weeklyViolationCount,\r\n // monthlyViolations: result.monthlyViolationCount,\r\n // dailyVC: result.dailyVehicleCount,\r\n // weeklyVC: result.weeklyVehicleCount,\r\n // monthlyVC: result.monthlyVehicleCount,\r\n cpuTemp: result.CPUTemperature + \"°C\",\r\n cpuUsage: result.CPUUsage + \"%\",\r\n RamPer: result.RamPerc + \"%\",\r\n UsagePer: result.DiskUsagePerc + \"%\",\r\n LastUpadtedTime: new Date(result.TimeStamp).toLocaleString(undefined, { timeZone: 'Asia/Kolkata' }),\r\n status: tdStatus\r\n })\r\n }\r\n })\r\n\r\n };\r\n\r\n render() {\r\n \r\n const showInfoWindow = this.state.showInfoWindow;\r\n return (\r\n \r\n\r\n {this.state.collection.map((marker, i) => {\r\n var url;\r\n var size;\r\n var tooltip;\r\n console.log(marker)\r\n tooltip = marker.LocationName;\r\n // tooltip = marker.LocationName + \" Violations:\" + marker.ViolationCount + \" Vehicle Count:\" + marker.VehicleCount\r\n \r\n\r\n if (marker.Status == \"Offline\") {\r\n url = 'https://media.giphy.com/media/4mML4cVNOKVakSy649/giphy.gif'\r\n size = new google.maps.Size(25, 20)\r\n }\r\n else if (marker.Status == \"Online\") {\r\n // url='https://media.tenor.com/ABv_t5WXNSMAAAAi/camera-icon.gif'\r\n url = \"https://www.pngplay.com/wp-content/uploads/5/Video-Chat-Camera-Green-Icon-PNG.png\"\r\n size = new google.maps.Size(30, 20)\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 \r\n\r\n \r\n \r\n \r\n\r\n
{this.state.selectedPlace}\r\n \r\n {this.state.status}\r\n Last Updated: {this.state.LastUpadtedTime}
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n
Daily Weekly Monthly
Violations Count{this.state.dailyViolations}{this.state.weeklyViolations}{this.state.monthlyViolations}
Vehicle Count{this.state.dailyVC}{this.state.weeklyVC}{this.state.monthlyVC}
*/}\r\n\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n
Hardware Details
CPU TempCPU UsageRAM UsedDisk Usage
{this.state.cpuTemp} {this.state.cpuUsage}{this.state.RamPer}{this.state.UsagePer}
\r\n
\r\n
\r\n\r\n \r\n );\r\n }\r\n}\r\nexport default GoogleApiWrapper({\r\n apiKey: 'AIzaSyA2nB278fvP2ZsDAYTYMGYRE751Vew6cIg'\r\n})(MapContainer);\r\n","import { CampusIdContext } from 'components/Common/PageDataContext';\r\nimport {useEffect,useState} from 'react';\r\nimport { useContext } from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nconst CampusList = props => {\r\n const [error, setError] = useState(null);\r\n //const [isLoaded, setIsLoaded] = useState(false);\r\n const [items, setItems] = useState([]);\r\n //const [vehicleCountNo, setvehicleCountNo] = useState([]);\r\n //const [selectedCampusval, setSelected] = useState('');\r\n const { selectedCampusval, setCampusValue } = useContext(CampusIdContext);\r\n const handleCampusChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n console.log(event.target.value);\r\n setCampusValue(event.target.value);\r\n props.setCampusValue(event.target.value);\r\n//console.log(selectedCampusval)\r\n//console.log(event.target.value)\r\n\r\n };\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n // setIsLoaded(true);\r\n //console.log(result);\r\n //console.log(JSON.parse(result.Locations));\r\n setItems(JSON.parse(result.CampusList));\r\n console.log(JSON.parse(result.CampusList)[0])\r\n setCampusValue(JSON.parse(result.CampusList)[0].CampusID)\r\n //props.setCampusValue(JSON.parse(result.CampusList)[0])\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n // setIsLoaded(true);\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } //else if (!isLoaded) {\r\n // return
Loading...
;\r\n //} \r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default CampusList\r\n","import React, { useEffect, useState,useRef } from \"react\"\r\nimport MetaTags from 'react-meta-tags';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n Container,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Dropdown,\r\n DropdownMenu,\r\n DropdownItem,\r\n DropdownToggle,\r\n ButtonDropdown,\r\n CardTitle,\r\n} from \"reactstrap\"\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport MapContainer from \"./MapContainer\";\r\nimport CampusList from \"./Campuslist\";\r\nimport { CampusIdContext } from \"components/Common/PageDataContext\";\r\nconst Maps = (props) => {\r\n const breadcrumbItems = [\r\n // { title: \"Lexa\", link: \"#\" },\r\n //{ title: \"Map\", link: \"#\" }\r\n ]\r\n const [ selectedCampusval, setCampusValue ] = useState()\r\n \r\n const Contextvalue = { selectedCampusval, setCampusValue };\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Map', breadcrumbItems)\r\n \r\n })\r\n return (\r\n \r\n \r\n Indus | Map\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, { setBreadcrumbItems })(Maps);\r\n","\r\nimport { useEffect, useState } from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nconst CampusList = props => {\r\n const [error, setError] = useState(null);\r\n //const [isLoaded, setIsLoaded] = useState(false);\r\n const [items, setItems] = useState([]);\r\n const [selectedCampusval, setSelected] = useState('');\r\n\r\n const handleCampusChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n //console.log(event.target.value);\r\n setSelected(event.target.value);\r\n props.setCampusValue(event.target.value);\r\n // LocationList(event.target.value);\r\n const element = ;\r\n };\r\n\r\n \r\n\r\n \r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n //useEffect(() => {\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n // setIsLoaded(true);\r\n //console.log(result);\r\n //console.log(JSON.parse(result.Locations));\r\n setItems(JSON.parse(result.CampusList));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n // setIsLoaded(true);\r\n setError(error);\r\n }\r\n )\r\n //}, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } //else if (!isLoaded) {\r\n // return
Loading...
;\r\n //} \r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst LocationList = props => {\r\n const [error, setError] = useState(null);\r\n const [items, setItems] = useState([]);\r\n const [selectedLocval, setSelected] = useState('');\r\n\r\n const handleLocChange = event => {\r\n //console.log('Label 👉️', event.target.selectedOptions[0].label);\r\n //console.log(event.target.value);\r\n setSelected(event.target.value);\r\n props.setLocValue(event.target.value);\r\n\r\n };\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n console.log(props.campusid);\r\n var intCampusID = props.campusid;\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLocationList\", { \r\n method: 'POST', \r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n //console.log(result);\r\n\r\n setItems(JSON.parse(result.Locations));\r\n //console.log(JSON.parse(items[0][\"LocationID\"]));\r\n //props.setLocValue(JSON.parse(items[0][\"LocationID\"]));\r\n // setSelected(JSON.parse(items[0][\"LocationID\"]));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n if (error) {\r\n return
Error: {error.message}
;\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst ReportType = (props) => {\r\n const ReportTypeitems = [\r\n {\r\n value: 1,\r\n label: \"Daily\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Weekly\"\r\n },\r\n {\r\n value: 3,\r\n label: \"Monthly\"\r\n },\r\n // {\r\n // value:4,\r\n // label:\"Custom\"\r\n // }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [SelectedReportTypeitem, setSelectedReportTypeItem] = useState({ value: 1, label: \"Daily\" });\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n const handleReportTypeChange = event => {\r\n //console.log('Label 👉️', event.label);\r\n console.log(event);\r\n setSelectedReportTypeItem(event);\r\n props.setReportType(event.value);\r\n const startTime = document.getElementById('from-datetime-local-input');\r\n const endTime = document.getElementById('to-datetime-local-input');\r\n var now = new Date();\r\n now.setMinutes(now.getMinutes() - now.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n switch(event.value){\r\n case 1: \r\n var d=new Date();\r\n \r\n d.setHours(0, 0, 0, 0)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n startTime.value=d.toISOString().slice(0,16)\r\n endTime.value = now.toISOString().slice(0,16); \r\n\r\n setFrmDttm(d.toISOString().slice(0,16))\r\n setToDttm(now.toISOString().slice(0,16))\r\n break;\r\n case 2:\r\n var d = new Date();\r\n \r\n d.setDate(d.getDate() - 7);\r\n // Zero the time component\r\n d.setHours(0, 0, 0, 0);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n var oneMonthAgo = d.toISOString();\r\n document.getElementById('from-datetime-local-input').value=oneMonthAgo.slice(0,16)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n setFrmDttm(oneMonthAgo.slice(0,16))\r\n setToDttm(now.toISOString().slice(0,16))\r\n break; \r\n case 3:\r\n var d = new Date();\r\n \r\n d.setMonth(d.getMonth() - 1);\r\n d.setHours(0, 0, 0, 0);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n var oneMonthAgo = d.toISOString();\r\n document.getElementById('from-datetime-local-input').value=oneMonthAgo.slice(0,16)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n\r\n setFrmDttm(oneMonthAgo.slice(0,16))\r\n setToDttm(now.toISOString().slice(0,16))\r\n break;\r\n case 4:\r\n break;\r\n }\r\n };\r\n const fromDateChange=(value)=>{\r\n setFrmDttm(value)\r\n console.log(SelectedReportTypeitem)\r\n}\r\nconst toDateChange=(value)=>{\r\nsetToDttm(value)\r\n}\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst SpeedType = (props) => {\r\n const SpeedTypeitems = [\r\n {\r\n value: 1,\r\n label: \"Default\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Custom\"\r\n }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [SelectedSpeedTypeitem, setSelectedSpeedTypeItem] = useState({ value: 1, label: \"Default\" });\r\n\r\n const handleSpeedTypeChange = event => {\r\n //console.log('Label 👉️', event.label);\r\n console.log(event);\r\n setSelectedSpeedTypeItem(event);\r\n props.setSpeedType(event.value);\r\n if (event.value == '2') {\r\n const boxes = document.getElementsByClassName('customspeed');\r\n for (const box of boxes) {\r\n box.style.display = \"block\";\r\n }\r\n }\r\n else {\r\n const boxes = document.getElementsByClassName('customspeed');\r\n for (const box of boxes) {\r\n box.style.display = \"none\";\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n\r\n );\r\n};\r\n\r\nconst SearchData = (props) => {\r\n const [error, setError] = useState(null);\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampus,// 1,\r\n \"intLocationID\": selectedLoc,//1,\r\n \"intReportType\": selectedReportType,//1,\r\n \"intSpeedType\": selectedSpeedType,//1,\r\n \"boolOnlyANPR\": true,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n //setViolations(JSON.parse(result.Violations));\r\n props.setViolations(JSON.parse(result.Violations));\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n}\r\n\r\nexport { CampusList, LocationList, ReportType, SpeedType, SearchData }\r\n","import React from \"react\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { render } from \"react-dom\";\r\n// Import Highcharts\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport Highcharts from 'highcharts/highstock';\r\nimport exportingModule from \"highcharts/modules/exporting\"\r\nexportingModule(Highcharts)\r\nrequire(\"highcharts/modules/export-data.js\")(Highcharts);\r\nclass MaxSpeedChart extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n maxSpeed: [],\r\n }\r\n \r\n this.afterChartCreated = this.afterChartCreated.bind(this);\r\n \r\n this.state = {\r\n chartOptions: {\r\n chart: {\r\n type: \"column\",\r\n },\r\n title: {\r\n text: \"\"\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n yAxis: {\r\n title: {\r\n text: \"Speed\"\r\n }\r\n },\r\n xAxis: {\r\n labels: {\r\n format: \"{value:%b %e}\" \r\n },\r\n type: \"datetime\",\r\n },\r\n \r\n rangeSelector: {\r\n selected: 6,\r\n \r\n },\r\n series: [\r\n { step: true,\r\n name: \"Maximum Speed\",\r\n data: this.state.maxSpeed, \r\n color: \"#6082B6\",\r\n borderRadius:5, \r\n dataGrouping: {\r\n enabled: false\r\n }\r\n },\r\n \r\n ],\r\n // exporting: {\r\n // showTable: false\r\n // },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: [\r\n \"viewFullscreen\",\r\n \"printChart\",\r\n \"separator\",\r\n \"downloadPNG\",\r\n \"downloadJPEG\",\r\n \"downloadPDF\",\r\n \"downloadSVG\",\r\n \"separator\",\r\n \"downloadCSV\",\r\n \"downloadXLS\",\r\n //\"viewData\",\r\n ]\r\n }\r\n }, \r\n filename:\"Maximum Speed_\"+new Date().toLocaleDateString(),\r\n \r\n },\r\n responsive: {\r\n rules: [\r\n {\r\n condition: {\r\n maxWidth: 2000\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n };\r\n }\r\n\r\n afterChartCreated(chart) {\r\n if (!chart.options.chart.forExport) {\r\n this.internalChart = chart;\r\n // this.internalChart.rangeSelector={\r\n // selected: 6\r\n // },\r\n this.forceUpdate();\r\n }\r\n \r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n if(prevProps.props!=this.props.props){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/VehicleCountGetMaxSpeedData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:this.props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.maxSpeed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n this.setState({maxSpeed:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n async UNSAFE_componentWillReceiveProps (props) {\r\n console.log(props.props)\r\n if(props.props!=undefined){\r\n console.log(props.props)\r\n console.log(this.props.props)\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/VehicleCountGetMaxSpeedData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response.body !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.maxSpeed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n\r\n this.setState({maxSpeed:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n\r\n }\r\n }\r\n \r\n render() {\r\n console.log(this.state.maxSpeed)\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default MaxSpeedChart;","import React, {useState,useEffect,useRef} from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n//import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\nimport HC_more from 'highcharts/highcharts-more'\r\nimport highcharts3d from 'highcharts/highcharts-3d'\r\n// import Drilldown from 'highcharts/drilldown'\r\nimport drilldown from 'highcharts/modules/drilldown.js';\r\n//import './PieChart.css'\r\n\r\nimport {series,drilldownSeries} from './BrowserData'\r\nimport _ from \"lodash\";\r\nvar tinycolor = require(\"tinycolor2\");\r\nconst Color = require('color');\r\nHC_more(Highcharts)\r\nhighcharts3d(Highcharts)\r\ndrilldown(Highcharts)\r\n\r\n\r\n\r\nfunction PieChart(props) {\r\nconsole.log(props.props)\r\n\tlet chart = null;\r\n\r\n \r\n var offset = 180;\r\n\r\n\r\n\r\n \r\n const [angle, setAngle] = useState(offset);\r\n const [level, setLevel] = useState(0);\r\n const [data,setData]=useState([]);\r\n //const [angle, setAngle] = useState(angleMap.IE);\r\n\r\n //testing:\r\n console.log(\"op\",series[0].options);\r\n //series[0].options = level;\r\n\r\n\r\n var exampleColors = [\"rgb(15,72,127)\", \"rgb(52,109,164)\", \"rgb(88,145,200)\", \"rgb(124,181,236)\", \"rgb(160,217,255)\", \"rgb(196,253,255)\", \"rgb(233,255,255)\", \"rgb(255,255,255)\", \"rgb(255,255,255)\", \"rgb(255,255,255)\"]\r\n var sample_options = {\r\n credits: {enabled: false},\r\n chart: {\r\n type: 'pie',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n //backgroundColor: 'black',\r\n margin: [0,0,0,15],\r\n spacingTop: 0,\r\n spacingBottom: 0,\r\n spacingLeft: 0,\r\n spacingRight: 0,\r\n options3d: {\r\n enabled: true,\r\n alpha: 75,\r\n beta: 0\r\n }\r\n },\r\n title: {text: undefined},\r\n credits: {\r\n enabled: false\r\n },\r\n\r\n accessibility: {\r\n point: {\r\n valueSuffix: '%'\r\n }\r\n },\r\n tooltip: {\r\n pointFormat: '{series.name}: {point.percentage:.1f}%'\r\n },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: false,\r\n slicedOffset: 40,\r\n\t\t\t// todo: don't think I'm seeing this shadow here\r\n\t\t\tshadow:true,\r\n startAngle:angle,\r\n cursor: 'pointer',\r\n depth: 55,\r\n size: '120%',\r\n colors:exampleColors,\r\n // testing: not available in 3d = edge (but doesn't extend down sides :/)\r\n //edgeColor:\"black\",\r\n //edgeWidth:.5,\r\n borderColor: '#000000',\r\n color: '#000000',\r\n innerSize:155,\r\n depth: 45,\r\n dataLabels: {\r\n enabled: true,\r\n color: 'black',\r\n fontSize:\"x-large\"\r\n },\r\n //note: must be here in order to show up even with legend enabled\r\n //showInLegend: true\r\n \r\n //note: lot of options here, don't understand this versus series dataLabels\r\n //dataLabels:''\r\n \r\n \r\n\t\t},\r\n\t\tseries: {\r\n //required to drilldown\r\n allowPointSelect: true,\r\n dataLabels: {\r\n enabled: false,\r\n //distance:-30,\r\n format: '{point.name}'\r\n },\r\n point: {\r\n events: {\r\n \r\n select: function(selected) {\r\n var points = this.series.points;\r\n console.log(\"selected\",selected.target);\r\n points.forEach(p =>{\r\n // console.log(p);\r\n p.category = p.color\r\n // p.id !== selected.target.id ? p.color = tinycolor(p.color).lighten(50).toString():{};\r\n p.id !== selected.target.id ? p.color = Color(p.color).lighten(.3).alpha(.3).toString():{};\r\n })\r\n // console.log(points);\r\n }, unselect: function(selected) {\r\n console.log(\"unselect\");\r\n var points = this.series.points;\r\n \r\n points.forEach(p =>{\r\n p.color = p.category;\r\n })\r\n //console.log(points);\r\n }\r\n }\r\n },\r\n }\r\n\t},\r\n\tseries: series,\r\n\tdrilldown: drilldownSeries\r\n}\r\n\r\n\tconst elementRef = useRef();\r\n\r\n\tuseEffect(() => {\r\nvar requestBody=props.props;\r\n// can't change\r\nconst response = fetch(apiEndpoint+\"/GetSpeedDistributionData\", \r\n{\r\n \r\nmethod: 'POST',\r\n// mode:'no-cors',\r\nheaders: {\r\n 'Content-Type': 'application/json', \r\n},\r\nbody:requestBody\r\n});\r\nconsole.log(response);\r\nif(response.body!=null && response !=undefined)\r\n{\r\nconst data = response.json();\r\nvar objToArr=JSON.parse( data.speed);\r\nconst newArrayOfObj = (objToArr).map(({\r\n\"Key\": name,\r\n\"Value\":y,\r\n...rest\r\n}) => ({\r\nname,y,\r\n...rest\r\n}));\r\n\r\nsetData(newArrayOfObj);\r\nthis.internalChart.series[0].setData(newArrayOfObj);\r\n\t\tlet angleMap = {\r\n\t\t\tFirefox:0 + offset,\r\n\t\t\tIE: .45 * 360 + offset\r\n\t\t }\r\n\t\tconsole.log(angleMap);\r\n \r\n\t\tsetTimeout(e =>{\r\n\t\tsetAngle(angleMap['IE'])\r\n\t\t},2000)\r\n }},props.props);\r\n \r\n\r\n const drillUp = () =>{\r\n\t\t//console.log(\"chart\",chart.chart.series[0]);\r\n\t\t//if (chart.chart.drilldownLevels.length > 0) {\r\n\t\t\t// chart.chart.drillUp();\r\n\t\t///}\r\n var locChart = elementRef.current.chart;\r\n\t\tconsole.log(locChart);\r\n // elementRef.current.chart.drillUp()\r\n setTimeout(function () {\r\n console.log(locChart.series[0].options);\r\n //nope\r\n //locChart.series[0].options._levelNumber = 1\r\n\r\n locChart.series[0].update({\r\n options:{_levelNumber:1}\r\n });\r\n console.log(locChart.series[0].options._levelNumber);\r\n }, 2000);\r\n }\r\n \r\n const [count, setCount] = useState(0); \r\n const selectRand = () =>{\r\n\r\n var locChart = elementRef.current.chart;\r\n //https://api.highcharts.com/highcharts/series.pie.data.sliced\r\n locChart.series[0].data[count].slice(true)\r\n //locChart.series[0].data[count].select()\r\n setCount(prev => prev +1)\r\n }\r\n\r\n\r\n\treturn(\r\n\t\t
\r\n
\r\n\t\t\t\t{/* \r\n\t\t\t
\r\n\r\n\t
)\r\n\r\n}\r\nexport default PieChart;","import React from \"react\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { render } from \"react-dom\";\r\n// Import Highcharts\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport Highcharts from \"highcharts\";\r\nimport exportingModule from \"highcharts/modules/exporting\"\r\nexportingModule(Highcharts)\r\nrequire(\"highcharts/modules/export-data.js\")(Highcharts);\r\nimport highcharts3d from \"highcharts/highcharts-3d\";\r\nhighcharts3d(Highcharts);\r\n\r\n var exampleColors = [\"rgb(15,72,127)\", \"rgb(52,109,164)\", \"rgb(88,145,200)\", \"rgb(124,181,236)\", \"rgb(160,217,255)\", \"rgb(196,253,255)\", \"rgb(233,255,255)\", \"rgb(255,255,255)\", \"rgb(255,255,255)\", \"rgb(255,255,255)\"]\r\n \r\nclass DiskChartBK extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n speedData: [],\r\n //datetime:[]\r\n }\r\n \r\n this.afterChartCreated = this.afterChartCreated.bind(this);\r\n this.state = {\r\n chartOptions: {\r\n chart: {\r\n type: 'pie',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n margin: [0,0,0,15],\r\n spacingTop: 0,\r\n spacingBottom: 0,\r\n spacingLeft: 0,\r\n spacingRight: 0,\r\n options3d: {\r\n enabled: true,\r\n alpha: 75,\r\n beta: 0\r\n }\r\n \r\n },\r\n title: {\r\n text: \"\"\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n accessibility: {\r\n point: {\r\n valueSuffix: '%'\r\n }\r\n },\r\n tooltip: {\r\n pointFormat: '{series.name}: {point.percentage:.1f}%'\r\n },\r\n\r\n \r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: false,\r\n slicedOffset: 40,\r\n shadow:true,\r\n startAngle:180,\r\n cursor: 'pointer',\r\n depth: 55,\r\n size: '120%',\r\n colors:exampleColors,\r\n borderColor: '#000000',\r\n color: '#000000',\r\n innerSize:155,\r\n depth: 45,\r\n dataLabels: {\r\n enabled: true,\r\n color: 'black',\r\n fontSize:\"x-large\"\r\n },\r\n },\r\n series: {\r\n //required to drilldown\r\n allowPointSelect: true,\r\n dataLabels: {\r\n enabled: false,\r\n format: '{point.name}'\r\n },\r\n point: {\r\n events: {\r\n \r\n select: function(selected) {\r\n var points = this.series.points;\r\n console.log(\"selected\",selected.target);\r\n points.forEach(p =>{\r\n p.category = p.color\r\n p.id !== selected.target.id ? p.color = Color(p.color).lighten(.3).alpha(.3).toString():{};\r\n })\r\n }, unselect: function(selected) {\r\n console.log(\"unselect\");\r\n var points = this.series.points;\r\n \r\n points.forEach(p =>{\r\n p.color = p.category;\r\n })\r\n }\r\n }\r\n },\r\n }\r\n },\r\n \r\n series: [\r\n { name: \"Speed Distribution\",\r\n colorByPoint: true,\r\n data:this.state.speedData\r\n },\r\n ],\r\n rangeSelector: {\r\n selected: 6\r\n },\r\n // exporting: {\r\n // showTable: false\r\n // },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: [\r\n \"viewFullscreen\",\r\n \"printChart\",\r\n \"separator\",\r\n \"downloadPNG\",\r\n \"downloadJPEG\",\r\n \"downloadPDF\",\r\n \"downloadSVG\",\r\n \"separator\",\r\n \"downloadCSV\",\r\n \"downloadXLS\",\r\n //\"viewData\",\r\n ]\r\n }\r\n }\r\n ,\r\n filename:\"Speed Distribution_\"+new Date().toLocaleDateString()\r\n },\r\n responsive: {\r\n rules: [\r\n {\r\n condition: {\r\n maxWidth: 2000\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n };\r\n }\r\n\r\n afterChartCreated(chart) {\r\n if (!chart.options.chart.forExport) {\r\n this.internalChart = chart;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n if(prevProps.props!=this.props.props){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/GetSpeedDistributionData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:this.props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.speed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Speed\": name,\r\n \"Count\":y,\r\n ...rest\r\n }) => ({\r\n name,y,\r\n ...rest\r\n }));\r\n var convertedArr = newArrayOfObj.map((o) => ({ name: o.name+\" to \" + parseInt(parseInt(o.name)+10), y:o.y}))\r\n this.setState({speedData:convertedArr})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(convertedArr);\r\n }\r\n }\r\n }\r\n //\r\n }\r\n\r\n async UNSAFE_componentWillReceiveProps (props) {\r\n console.log(props.props)\r\n if(props.props!=undefined){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/GetSpeedDistributionData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.speed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Speed\": name,\r\n \"Count\":y,\r\n ...rest\r\n }) => ({\r\n name,y,\r\n ...rest\r\n }));\r\n \r\n var convertedArr = newArrayOfObj.map((o) => ({ name: o.name+\" to \" + parseInt(parseInt(o.name)+10), y:o.y}))\r\n this.setState({speedData:convertedArr})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(convertedArr);\r\n }\r\n }\r\n }\r\n }\r\n \r\n render() {\r\n console.log(this.state.speedData)\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DiskChartBK;","import React from \"react\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { render } from \"react-dom\";\r\n// Import Highcharts\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport exportingModule from \"highcharts/modules/exporting\"\r\nexportingModule(Highcharts)\r\nrequire(\"highcharts/modules/export-data.js\")(Highcharts);\r\nimport Highcharts from 'highcharts/highstock';\r\n\r\nclass VehicleCount extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n VehicleCount: [],\r\n Violations: [],\r\n\r\n }\r\n \r\n this.afterChartCreated = this.afterChartCreated.bind(this);\r\n this.state = {\r\n chartOptions: {\r\n chart: {\r\n type: \"column\",\r\n },\r\n title: {\r\n text: \"\"\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n \r\n yAxis: {\r\n title: {\r\n text: \"Vehicle Count\"\r\n }\r\n },\r\n xAxis: {\r\n labels: {\r\n format: \"{value:%b %e}\"\r\n },\r\n type: \"datetime\",\r\n },\r\n plotOptions: {\r\n series: {\r\n },\r\n areaspline: {\r\n fillOpacity: 0.5\r\n }\r\n },\r\n \r\n rangeSelector: {\r\n selected: 6\r\n },\r\n series: [\r\n { \r\n name: \"Vehicle Count \",\r\n data: this.state.VehicleCount,\r\n \r\n color: '#695E93',\r\n\r\n borderRadius:5, \r\n dataGrouping: {\r\n enabled: false\r\n } \r\n },\r\n ],\r\n // exporting: {\r\n // showTable: false\r\n // },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: [\r\n \"viewFullscreen\",\r\n \"printChart\",\r\n \"separator\",\r\n \"downloadPNG\",\r\n \"downloadJPEG\",\r\n \"downloadPDF\",\r\n \"downloadSVG\",\r\n \"separator\",\r\n \"downloadCSV\",\r\n \"downloadXLS\",\r\n //\"viewData\",\r\n ]\r\n }\r\n },\r\n filename:\"Vehicle Count_\"+new Date().toLocaleDateString()\r\n },\r\n responsive: {\r\n rules: [\r\n {\r\n condition: {\r\n maxWidth: 2000\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n };\r\n }\r\n afterChartCreated(chart) {\r\n if (!chart.options.chart.forExport) {\r\n this.internalChart = chart;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n if(prevProps.props!=this.props.props){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/GetVehicleCountFromInterval\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:this.props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var VehicleCount=JSON.parse( data.VehicleCount);\r\n const newArrayOfObj = (VehicleCount).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n this.setState({VehicleCount:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n async UNSAFE_componentWillReceiveProps (props) {\r\n console.log(props.props)\r\n if(props.props!=undefined){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/GetVehicleCountFromInterval\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var VehicleCount=JSON.parse( data.VehicleCount);\r\n const newArrayOfObj = (VehicleCount).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n this.setState({VehicleCount:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n }\r\n }\r\n \r\n render() {\r\n console.log(this.state.VehicleCount)\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default VehicleCount;","import React from \"react\";\r\nimport { render } from \"react-dom\";\r\n// Import Highcharts\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport Highcharts from 'highcharts/highstock';\r\nimport exportingModule from \"highcharts/modules/exporting\"\r\nexportingModule(Highcharts)\r\nrequire(\"highcharts/modules/export-data.js\")(Highcharts);\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n\r\n\r\nclass AvgSpeedChart extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n avgSpeed: [],\r\n }\r\n\r\n this.afterChartCreated = this.afterChartCreated.bind(this);\r\n this.state = {\r\n chartOptions: {\r\n chart: {\r\n type: \"column\",\r\n },\r\n title: {\r\n text: \"\"\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n xAxis: {\r\n labels: {\r\n format: \"{value:%b %e}\"\r\n },\r\n \r\n type: \"datetime\",\r\n \r\n }, \r\n yAxis: {\r\n title: {\r\n text: \"Speed\"\r\n }\r\n }, \r\n rangeSelector: {\r\n selected: 6\r\n },\r\n series: [\r\n { step: true,\r\n name: \"Average Speed\",\r\n data: this.state.avgSpeed,\r\n \r\n color: \"#7FC9AA\",\r\n borderRadius:5, \r\n dataGrouping: {\r\n enabled: false\r\n }\r\n },\r\n ],\r\n // exporting: {\r\n // showTable: false\r\n // },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n menuItems: [\r\n \"viewFullscreen\",\r\n \"printChart\",\r\n \"separator\",\r\n \"downloadPNG\",\r\n \"downloadJPEG\",\r\n \"downloadPDF\",\r\n \"downloadSVG\",\r\n \"separator\",\r\n \"downloadCSV\",\r\n \"downloadXLS\",\r\n //\"viewData\",\r\n ]\r\n }\r\n },\r\n filename:\"Average Speed_\"+new Date().toLocaleDateString()\r\n },\r\n \r\n responsive: {\r\n rules: [\r\n {\r\n condition: {\r\n maxWidth: 2000\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n };\r\n }\r\n\r\n afterChartCreated(chart) {\r\n if (!chart.options.chart.forExport) {\r\n this.internalChart = chart;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n if(prevProps.props!=this.props.props){\r\n //can't change\r\n const response = await fetch(apiEndpoint+\"/GetAvgSpeedData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:this.props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.avgSpeed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n this.setState({avgSpeed:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n }\r\n \r\n }\r\n \r\n async UNSAFE_componentWillReceiveProps (props) {\r\n console.log(props.props)\r\n if(props.props!=undefined){\r\n // can't change\r\n const response = await fetch(apiEndpoint+\"/GetAvgSpeedData\", {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body:props.props\r\n });\r\n console.log(response);\r\n if(response.body!=null && response.body !=undefined)\r\n {\r\n const data = await response.json();\r\n var objToArr=JSON.parse( data.avgSpeed);\r\n const newArrayOfObj = (objToArr).map(({\r\n \"Key\": x,\r\n \"Value\":y,\r\n ...rest\r\n }) => ({\r\n x,y,\r\n ...rest\r\n }));\r\n console.log(newArrayOfObj)\r\n this.setState({avgSpeed:newArrayOfObj})\r\n if(this.internalChart.series!=undefined){\r\n this.internalChart.series[0].setData(newArrayOfObj);\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AvgSpeedChart;","import React, { useEffect, useState,useRef } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n Container,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Dropdown,\r\n DropdownMenu,\r\n DropdownItem,\r\n DropdownToggle,\r\n ButtonDropdown,\r\n CardTitle,\r\n CardHeader,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\nimport ReactToPrint from \"react-to-print\";\r\nconst { SearchBar } = Search;\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\nimport * as XLSX from 'xlsx';\r\n\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\n//import ModalInFunctionalComponent from '../../components/Logs/ViewImageModal';\r\nimport { SpeedType } from './VehicleCountComponents';\r\n// import { ReportType, SpeedType } from './VehicleCountComponents';\r\n\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport MaxSpeedChart from \"./MaxSpeedChart\";\r\nimport DiskChart from \"./DiskChartSpeedDistribution\";\r\nimport DiskChartBK from \"./DiskChartBkup\";\r\nimport VehicleCount from \"./VehicleCntAreachart\";\r\nimport AvgSpeedChart from \"./AvgSpeedChart.js\"\r\nimport AreaChart from \"./areachart.js\";\r\n//Style\r\nconst btnstylesObj = {\r\n \"margin-top\": '2rem',\r\n };\r\n\r\n // This is custom csv export component\r\nconst ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n };\r\n\r\n const ReportType = (props) => {\r\n const ReportTypeitems = [\r\n {\r\n value: 1,\r\n label: \"Daily\"\r\n },\r\n {\r\n value: 2,\r\n label: \"Weekly\"\r\n },\r\n {\r\n value: 3,\r\n label: \"Monthly\"\r\n },\r\n // {\r\n // value:4,\r\n // label:\"Custom\"\r\n // }\r\n ];\r\n // 👇️ initial value of empty string (first option)\r\n const [SelectedReportTypeitem, setSelectedReportTypeItem] = useState({ value: 1, label: \"Daily\" });\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n const handleReportTypeChange = event => {\r\n //console.log('Label 👉️', event.label);\r\n console.log(event);\r\n setSelectedReportTypeItem(event);\r\n props.setReportType(event.value);\r\n const startTime = document.getElementById('from-datetime-local-input');\r\n const endTime = document.getElementById('to-datetime-local-input');\r\n var now = new Date();\r\n now.setMinutes(now.getMinutes() - now.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n switch(event.value){\r\n case 1:\r\n var d=new Date();\r\n\r\n d.setHours(0, 0, 0, 0)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n startTime.value=d.toISOString().slice(0,16)\r\n endTime.value = now.toISOString().slice(0,16);\r\n\r\n fromDateChange(d.toISOString().slice(0,16))\r\n toDateChange(now.toISOString().slice(0,16))\r\n break;\r\n case 2:\r\n var d = new Date();\r\n\r\n d.setDate(d.getDate() - 7);\r\n // Zero the time component\r\n d.setHours(0, 0, 0, 0);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n var oneMonthAgo = d.toISOString();\r\n document.getElementById('from-datetime-local-input').value=oneMonthAgo.slice(0,16)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n fromDateChange(oneMonthAgo.slice(0,16))\r\n toDateChange(now.toISOString().slice(0,16))\r\n break;\r\n case 3:\r\n var d = new Date();\r\n\r\n d.setMonth(d.getMonth() - 1);\r\n d.setHours(0, 0, 0, 0);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n var oneMonthAgo = d.toISOString();\r\n document.getElementById('from-datetime-local-input').value=oneMonthAgo.slice(0,16)\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset());\r\n endTime.value = now.toISOString().slice(0,16);\r\n\r\n fromDateChange(oneMonthAgo.slice(0,16))\r\n toDateChange(now.toISOString().slice(0,16))\r\n break;\r\n case 4:\r\n break;\r\n }\r\n };\r\n const fromDateChange=(value)=>{\r\n setFrmDttm(value)\r\n console.log(SelectedReportTypeitem)\r\n }\r\n const toDateChange=(value)=>{\r\n setToDttm(value)\r\n }\r\n return (\r\n \r\n );\r\n };\r\n\r\n\r\nconst ViolationTables = (props) => {\r\n //Print function\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n\r\n const [FromSpeed, setFrmSpeed] = useState(20);\r\n const [ToSpeed, setToSpeed] = useState(100);\r\n const [BoolANPR, setANPR] = useState(true);\r\n\r\n\r\n\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken));\r\n //console.log(result);\r\n console.log(JSON.parse(result.CampusList));\r\n setCampusItems(JSON.parse(result.CampusList));\r\n var campuslst = JSON.parse(result.CampusList);\r\n setSelectedCampusItem(campuslst[0]);\r\n setCampusSelected(campuslst[0].value);\r\n changeCampusSelectHandler(campuslst[0]);\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState();\r\n\r\n\r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogLocationList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"intCampusID\": selectedCampusVal\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n debugger;\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if(result.Locations!=undefined){\r\n debugger;\r\n console.log(JSON.parse(result.Locations));\r\n setLocItems(JSON.parse(result.Locations));\r\n var loclst = JSON.parse(result.Locations);\r\n if(loclst != null){\r\n console.log(\"Location List on vehicle count\"+loclst);\r\n setSelectedLocItem(loclst[0]);\r\n setLocSelected(loclst[0].value);\r\n \r\n changeLocSelectHandler(loclst[0]);\r\n }\r\n \r\n\r\n \r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [selectedCampusVal])\r\n\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n };\r\n\r\n const changeLocSelectHandler = (event) => {\r\n debugger;\r\n setSelectedLocItem(event);\r\n setLocSelected(event.value);\r\n };\r\n\r\n const changeFrmSpeedHandler= (value, ctx) => {\r\n if(value>parseInt(ToSpeed)){\r\n return \"Enter Valid From Speed Value!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToSpeedHandler = (value, ctx) => {\r\n if(value {\r\n // console.log(value);\r\n if(value>ToDtTm){\r\n return \"From date cannot be greater than To date!!!\";\r\n }\r\n return true;\r\n\r\n }\r\n\r\nconst fromDateChange=(value)=>{\r\n setFrmDttm(value)\r\nswitch(selectedReportTypeVal){\r\n case 1:\r\n var d=new Date(value);\r\n d.setDate(d.getDate() + 1);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('to-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 2:\r\n var d=new Date(value);\r\n d.setDate(d.getDate() + 7);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('to-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 3:\r\n var d=new Date(value);\r\n d.setMonth(d.getMonth() + 1);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('to-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 4:\r\n break;\r\n}\r\n}\r\nconst toDateChange=(value)=>{\r\nsetToDttm(value)\r\nswitch(selectedReportTypeVal){\r\n case 1:\r\n var d=new Date(value);\r\n d.setDate(d.getDate() - 1);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('from-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 2:\r\n var d=new Date(value);\r\n d.setDate(d.getDate() - 7);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('from-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 3:\r\n var d=new Date(value);\r\n d.setMonth(d.getMonth() - 1);\r\n d.setMinutes(d.getMinutes() - d.getTimezoneOffset())\r\n document.getElementById('from-datetime-local-input').value=d.toISOString().slice(0,16)\r\n break;\r\n case 4:\r\n break;\r\n}\r\n}\r\n const changeToDateHandler = (value, ctx) => {\r\n if(value {\r\n\r\n var requestB=JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,\r\n \"intLocationID\": selectedLocVal,\r\n \"intReportType\": selectedReportTypeVal,\r\n \"FromDtTm\": document.getElementById('from-datetime-local-input').value,\r\n \"ToDtTm\": document.getElementById('to-datetime-local-input').value,\r\n \"intSpeedType\": selectedSpeedTypeVal,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed,\r\n})\r\n setrequestbody(requestB);\r\n\r\n }\r\n const Search = () => {\r\n\r\n if(\r\n document.getElementById('to-datetime-local-input').value < document.getElementById('from-datetime-local-input').value){\r\nalert(\"Start date can not be greater than end date!\")\r\n }\r\n else{\r\nSearchViolations()\r\n }}\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Vehicle Count', breadcrumbItems)\r\n SearchViolations()\r\n })\r\n\r\n const handleDownload = () => {\r\n debugger;\r\n // const fetchAvgSpeed = fetch(apiEndpoint + \"/GetAvgSpeedData\", {\r\n // method: 'POST',\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({\r\n // \"intCampusID\": selectedCampusVal,\r\n // \"intLocationID\": selectedLocVal,\r\n // \"intReportType\": selectedReportTypeVal,\r\n // \"FromDtTm\": document.getElementById('from-datetime-local-input').value,\r\n // \"ToDtTm\": document.getElementById('to-datetime-local-input').value,\r\n // \"intSpeedType\": selectedSpeedTypeVal,\r\n // \"FromSpeed\": FromSpeed,\r\n // \"ToSpeed\": ToSpeed\r\n // })\r\n // });\r\n\r\n // const fetchMaxSpeed = fetch(apiEndpoint + \"/VehicleCountGetMaxSpeedData\", {\r\n // method: 'POST',\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({\r\n // \"intCampusID\": selectedCampusVal,\r\n // \"intLocationID\": selectedLocVal,\r\n // \"intReportType\": selectedReportTypeVal,\r\n // \"FromDtTm\": document.getElementById('from-datetime-local-input').value,\r\n // \"ToDtTm\": document.getElementById('to-datetime-local-input').value,\r\n // \"intSpeedType\": selectedSpeedTypeVal,\r\n // \"FromSpeed\": FromSpeed,\r\n // \"ToSpeed\": ToSpeed\r\n // })\r\n // });\r\n \r\n // const fetchVehicleCount = fetch(apiEndpoint + \"/GetVehicleCountDetails\", {\r\n // method: 'POST',\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n // body: JSON.stringify({\r\n // \"intCampusID\": selectedCampusVal,\r\n // \"intLocationID\": selectedLocVal,\r\n // \"intReportType\": selectedReportTypeVal,\r\n // \"FromDtTm\": document.getElementById('from-datetime-local-input').value,\r\n // \"ToDtTm\": document.getElementById('to-datetime-local-input').value,\r\n // \"intSpeedType\": selectedSpeedTypeVal,\r\n // \"FromSpeed\": FromSpeed,\r\n // \"ToSpeed\": ToSpeed\r\n // })\r\n // });\r\n\r\n // Promise.all([fetchAvgSpeed, fetchMaxSpeed,fetchVehicleCount])\r\n // .then(responses => Promise.all(responses.map(response => response.json())))\r\n // .then(\r\n // ([avgSpeedResult, maxSpeedResult,vehicleCountResult]) => {\r\n // const parsedAvgSpeed = JSON.parse(avgSpeedResult.avgSpeed);\r\n // const parsedMaxSpeed = JSON.parse(maxSpeedResult.maxSpeed);\r\n // const parsedVehicleCount = JSON.parse(vehicleCountResult.VehicleCount);\r\n\r\n // console.log('parsedAvgSpeed', parsedAvgSpeed);\r\n // console.log('parsedMaxSpeed', parsedMaxSpeed);\r\n // console.log('parsedVehicleCount', parsedVehicleCount);\r\n \r\n // // Combine data from all three sources\r\n // const combinedData = parsedAvgSpeed.map(avgSpeedItem => {\r\n // const maxSpeedItem = parsedMaxSpeed.find(maxSpeedItem => maxSpeedItem.Key === avgSpeedItem.Key);\r\n // const vehicleCountItem = parsedVehicleCount.find(vehicleCountItem => vehicleCountItem.Key === avgSpeedItem.Key);\r\n \r\n // // Ensure that the Key property exists in avgSpeedItem\r\n // if (avgSpeedItem.Key) {\r\n // return {\r\n // incidentTime: avgSpeedItem.Key,\r\n // avgSpeed: avgSpeedItem.avgSpeed,\r\n // maxSpeed: maxSpeedItem ? maxSpeedItem.maxSpeed : null,\r\n // vehicleCount: vehicleCountItem ? vehicleCountItem.vehicleCount : null\r\n // };\r\n // } else {\r\n // console.error('Key property is missing in avgSpeedItem:', avgSpeedItem);\r\n // return null; // Handle the case where Key is missing\r\n // }\r\n // }).filter(item => item !== null); // Remove items with missing Key\r\n \r\n // // Console log for debugging combinedData\r\n\r\n // console.log(\"combinedData\", combinedData);\r\n\r\n // // Create a new workbook\r\n // const wb = XLSX.utils.book_new();\r\n\r\n // // Add the sheet with combined data\r\n // const wsCombinedData = XLSX.utils.json_to_sheet(combinedData);\r\n // XLSX.utils.book_append_sheet(wb, wsCombinedData, 'CombinedData');\r\n\r\n // // Save the workbook to a file\r\n // XLSX.writeFile(wb, 'data.xlsx');\r\n \r\n \r\n // },\r\n // // Handle errors here\r\n // (error) => {\r\n // console.error('Error fetching data:', error);\r\n // // Handle the error here\r\n // }\r\n // );\r\n\r\n // can't change\r\n fetch(apiEndpoint+\"/GetVehicleCountDetails\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,\r\n \"intLocationID\": selectedLocVal,\r\n \"intReportType\": selectedReportTypeVal,\r\n \"FromDtTm\": document.getElementById('from-datetime-local-input').value,\r\n \"ToDtTm\": document.getElementById('to-datetime-local-input').value,\r\n \"intSpeedType\": selectedSpeedTypeVal,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n debugger;\r\n const parsedData = JSON.parse(result.VehicleCount);\r\n console.log(\"parsedData\", parsedData);\r\n const formattedData = parsedData.map(item => ({\r\n ...item,\r\n IncidentTime: new Date(item.IncidentTime).toLocaleString().replace('T', ' '), // Replace 'T' with space\r\n AverageSpeed: item.AverageSpeed.toFixed(2)\r\n }));\r\n \r\n console.log(\"formattedData\", formattedData);\r\n\r\n const ws = XLSX.utils.json_to_sheet(formattedData);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'VehicleCountDetails');\r\n const fileName = 'VehicleCount'+new Date().toLocaleDateString()+'.xlsx';\r\n XLSX.writeFile(wb, fileName);\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n\r\n\r\n \r\n \r\n \r\n };\r\n\r\n\r\n console.log(requestBody)\r\n return (\r\n\r\n \r\n\r\n \r\n Indus | Vehicle Count\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* */}\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n fromDateChange(event.target.value)}\r\n />\r\n {/* setFrmDttm(event.target.value)} /> */}\r\n \r\n \r\n\r\n \r\n toDateChange(event.target.value)}\r\n />\r\n {/* setToDttm(event.target.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 setFrmSpeed(event.target.value)}\r\n />\r\n \r\n \r\n \r\n setToSpeed(event.target.value)}\r\n />\r\n \r\n \r\n Average Speed Report\r\n \r\n\r\n \r\n
\r\n

\r\n \r\n \r\n \r\n\r\n \r\n

Maximum Speed

\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n

Average Speed

\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n

Speed Distribution

\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n

Vehicle Count

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default connect(null, { setBreadcrumbItems })(ViolationTables);\r\n","import React, { useEffect, useState, useContext } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport {VehicleDataContext} from \"components/Common/PageDataContext\";\r\nimport {\r\n Col,\r\n Row,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\n\r\nconst EditVehicleDataModalComponent = (props) => {\r\n const {vehicledetails, setVehicleData } = useContext(VehicleDataContext);\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [VehicleEditedDetails, setVehicleDetailsInputs] = useState(props.VehicleCurrentRowData);\r\n const [alertmsg, setAlert] = useState();\r\n\r\n const handleEditChange = (event) => {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n setVehicleDetailsInputs(values => ({...values, [name]: value}))\r\n }\r\n\r\n const toggle = () => {\r\n\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n const SaveVehicleData = () => {\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/UpdateVehicleData\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"VehicleID\": VehicleEditedDetails.VehicleID,\r\n \"VehicleOwnerName\": VehicleEditedDetails.VehicleOwnerName,\r\n \"VehicleRegistrationNumber\": VehicleEditedDetails.VehicleRegistrationNumber,\r\n \"VehicleOwnerEmailAddress\": VehicleEditedDetails.VehicleOwnerEmailAddress,\r\n \"VehicleOwnerContact\": VehicleEditedDetails.VehicleOwnerContact,\r\n \"VehicleOwnerAddress\": VehicleEditedDetails.VehicleOwnerAddress,\r\n \"VehicleOwnerDept\": VehicleEditedDetails.VehicleOwnerDept,\r\n \"EmployeeID\": VehicleEditedDetails.EmployeeID,\r\n \"CampusList\": VehicleEditedDetails.CampusList,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n // body: JSON.stringify({VehicleEditedDetails})\r\n })\r\n\r\n // const updatedData = await response.json();\r\n // return updatedData;\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n console.log(result);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.VehicleDetail != undefined) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n\r\n var VehicleID = JSON.parse(result.VehicleDetail).VehicleID;\r\n let newdata = vehicledetails.slice();\r\n let dataindex= newdata.findIndex(someobject => someobject.VehicleID == VehicleID);\r\n newdata[dataindex].VehicleOwnerName = VehicleEditedDetails.VehicleOwnerName;\r\n newdata[dataindex].VehicleRegistrationNumber = VehicleEditedDetails.VehicleRegistrationNumber;\r\n newdata[dataindex].VehicleOwnerEmailAddress = VehicleEditedDetails.VehicleOwnerEmailAddress;\r\n newdata[dataindex].VehicleOwnerContact = VehicleEditedDetails.VehicleOwnerContact;\r\n newdata[dataindex].VehicleOwnerAddress = VehicleEditedDetails.VehicleOwnerAddress;\r\n newdata[dataindex].EmployeeID = VehicleEditedDetails.EmployeeID;\r\n newdata[dataindex].VehicleOwnerDept = VehicleEditedDetails.VehicleOwnerDept;\r\n setVehicleData(newdata);\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n )\r\n }\r\n\r\n const DeleteRegisteredVehicle = () => {\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/DeleteVehicleData\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"VehicleID\": VehicleEditedDetails.VehicleID,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //console.log(result);\r\n if (result.VehicleDetails != undefined) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n\r\n var recdID = JSON.parse(result.VehicleDetails).VehicleID;\r\n let newdata = vehicledetails.slice();\r\n var elindex=newdata.findIndex(someobject => someobject.VehicleID == recdID);\r\n \r\n newdata.splice(elindex, 1);\r\n setVehicleData(newdata);\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {modalIsOpen==true }\r\n {/* {modalIsOpen==true && alertmsg} */}\r\n\r\n {props.VehicleCurrentRowData != undefined &&\r\n \r\n\r\n \r\n Edit Vehicle Details\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n DeleteRegisteredVehicle();\r\n toggle();\r\n }}>Delete\r\n \r\n \r\n {\r\n SaveVehicleData();\r\n toggle();\r\n }} >Save\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n }\r\n {alertmsg }\r\n \r\n\r\n \r\n )\r\n\r\n}\r\n\r\n\r\nexport default EditVehicleDataModalComponent;","export default __webpack_public_path__ + \"static/media/VehicleDetailTemplate.93c6e202.csv\";","import React, { useEffect, useState, useContext } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { VehicleDataContext } from \"components/Common/PageDataContext\";\r\nimport {\r\n Col,\r\n Row,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n ModalFooter,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport VehicleDetailsTemplate from \"../../assets/templates/VehicleDetailTemplate.csv\"\r\nconst btnstylesObj = {\r\n \"margin-left\": '43%',\r\n };\r\n\r\nconst UploadVehicleDataModalComponent = (props) => {\r\n const [file, setFile] = useState();\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [alertmsg, setAlert] = useState();\r\n\r\n const toggle = () => {\r\n\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n\r\n const handleFileChange = (e) => {\r\n if (e.target.files) {\r\n setFile(e.target.files[0]);\r\n }\r\n };\r\n\r\n const handleVehicleDataUploadClick = () => {\r\n if (!file) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n return;\r\n }\r\n\r\n var formdata = new FormData();\r\n console.log(\"CampusSelected--->\",props.campus);\r\n formdata.append(\"VehicleDataFile\",file);\r\n formdata.append(\"CampusID\",props.campus.value);\r\n formdata.append(\"Token\",sessionStorage.getItem(\"Clear_AuthUser\"));\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n //alert(\"Uploaded\");\r\n // can't change\r\n fetch(apiEndpoint+'/UploadVehicleDataExcel', {\r\n method: 'POST',\r\n body: formdata,\r\n // body: file,\r\n // 👇 Set headers manually for single file upload\r\n // headers: {\r\n // 'content-type': file.type,\r\n // 'content-length': `${file.size}`, // 👈 Headers need to be a string\r\n // },\r\n })\r\n .then((res) => res.json())\r\n .then((result) => {\r\n if (result != undefined) {\r\n console.log(result);\r\n if (result.NoOfRowsAffected != undefined && result.NoOfRowsAffected != 0) {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n No of records Updated: {result.NoOfRowsAffected}\r\n \r\n )\r\n window.location.reload(false);\r\n }\r\n else if(result.NoOfRowsAffected== 0){\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n No of records Updated: {result.NoOfRowsAffected}\r\n \r\n )\r\n }\r\n\r\n else {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n const handleTemplateDownloadClick = () => {\r\n alert(\"Downloaded\");\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {modalIsOpen == true && alertmsg}\r\n \r\n\r\n \r\n Upload Vehicle Data\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*
{file && `${file.name} - ${file.type}`}
*/}\r\n \r\n \r\n {\r\n handleVehicleDataUploadClick();\r\n //toggle();\r\n }}>Upload\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Download Template\r\n \r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\n\r\nexport default UploadVehicleDataModalComponent;","import React, { useEffect, useState, useContext, Component } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport moment from \"moment\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport Select from \"react-select\";\r\nimport { default as ReactSelect } from \"react-select\";\r\nimport { components } from \"react-select\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n Dropdown,\r\n } from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { isEmpty, isUndefined } from \"lodash\";\r\n\r\nconst AddVehicleDataModalComponent = (props) => {\r\n\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [alertmsg, setAlert] = useState();\r\n\r\n const [VehicleOwnerName, setVehicleOwnerName] = useState(false);\r\n const [EmployeeID, setEmployeeID] = useState(false);\r\n const [VehicleRegistrationNumber, setVehicleRegistrationNumber] = useState(false);\r\n const [VehicleOwnerDept, setVehicleOwnerDept] = useState(false);\r\n const [VehicleOwnerEmailAddress, setVehicleOwnerEmailAddress] = useState(false);\r\n const [VehicleOwnerContact, setVehicleOwnerContact] = useState(false);\r\n const [VehicleOwnerAddress, setVehicleOwnerAddress] = useState(false);\r\n\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState({});\r\n\r\n const btnstylesObj = {\r\n \"marginRight\": '5%',\r\n \"marginLeft\": '44.5%'\r\n };\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n // get Campus List\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint + \"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n console.log(result)\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\", JSON.stringify(result.strNewToken))\r\n if (result.CampusList != undefined) {\r\n setCampusItems(JSON.parse(result.CampusList));\r\n // var campuslst = JSON.parse(result.CampusList);\r\n // setSelectedCampusItem(campuslst[0]);\r\n // setCampusSelected(campuslst[0].value);\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n\r\n }, [])\r\n\r\n // check first, last name\r\n const checkName = (name) => {\r\n const validRegExp = new RegExp(\r\n '^[A-Za-z ]+$'\r\n );\r\n if(validRegExp.test(name) && name.length >= 3 && name.length <= 30){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n // check first, last name\r\n const checkRegistrationNumber = (name) => {\r\n // const validRegExp = new RegExp(\r\n // '^[A-Za-z]+$'\r\n // );\r\n if(name.length == 10){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n const checkCampusList = (list) => {\r\n if(list.length > 0){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n const toggle = () => {\r\n setAlert(null)\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n\r\n const Option = (props) => {\r\n return (\r\n
\r\n \r\n null}\r\n />{\" \"}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n // Campus Change Event\r\n const changeCampusSelectHandler = (event) => {\r\n setCampusSelected(event);\r\n };\r\n\r\n const ToggleAndRefreshPage = () => {\r\n toggle();\r\n window.location.reload(false);\r\n }\r\n\r\n const saveButton = () => {\r\n // console.log(checkCampusList(selectedCampusVal))\r\n\r\n // console.log(checkName(VehicleOwnerName))\r\n // console.log(checkRegistrationNumber(VehicleRegistrationNumber))\r\n\r\n // console.log(''+EmployeeID)\r\n // console.log(''+VehicleOwnerDept)\r\n // console.log(''+VehicleOwnerEmailAddress)\r\n // console.log(''+VehicleOwnerContact)\r\n // console.log(''+VehicleOwnerAddress)\r\n if(checkCampusList(selectedCampusVal) && checkName(VehicleOwnerName) \r\n && checkRegistrationNumber(VehicleRegistrationNumber)){\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SaveVehicleDataFromApp\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"VehicleOwnerName\": VehicleOwnerName,\r\n \"VehicleRegistrationNumber\": VehicleRegistrationNumber,\r\n \"VehicleOwnerEmailAddress\": VehicleOwnerEmailAddress,\r\n \"VehicleOwnerContact\": VehicleOwnerContact,\r\n \"VehicleOwnerAddress\": VehicleOwnerAddress,\r\n \"EmployeeID\": EmployeeID,\r\n \"Department\": VehicleOwnerDept,\r\n \"CampusAccess\": selectedCampusVal,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setAlert (\r\n setAlert(null)}\r\n onConfirm={() => ToggleAndRefreshPage()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else{\r\n setAlert (\r\n toggle()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {modalIsOpen == true}\r\n\r\n \r\n \r\n Add Vehicle Details\r\n \r\n \r\n \r\n {alertmsg}\r\n \r\n\r\n \r\n \r\n {/* */}\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n setEmployeeID(event.target.value)}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setVehicleOwnerName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter vehicle owner name'},\r\n pattern: {value: '^[a-zA-Z ]*$', errorMessage: 'Vehicle owner name must be composed only with letters'},\r\n minLength: {value: 3, errorMessage: 'Vehicle owner name must be between 3 and 30 characters'},\r\n maxLength: {value: 30, errorMessage: 'Vehicle owner name must be between 3 and 30 characters'}\r\n }}\r\n required\r\n />\r\n \r\n \r\n \r\n \r\n setVehicleRegistrationNumber(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter registration number of vehicle'},\r\n pattern: {value: '^[a-zA-Z0-9_.-]*$', errorMessage: 'Registration number of vehicle must be composed only with letters & digits'},\r\n minLength: {value: 8, errorMessage: 'Registration number of vehicle must be min 8 characters'},\r\n maxLength: {value: 10, errorMessage: 'Registration number of vehicle must be 10 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setVehicleOwnerEmailAddress(event.target.value)}\r\n validate={{\r\n //required: {value: true, errorMessage: 'Please enter your email id'},\r\n //pattern: {value: '^[a-zA-Z0-9+_\\.-]+@[a-zA-Z0-9.-]+$', errorMessage: 'Invalid email id entered'}\r\n email:{value: '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$', errorMessage: 'Invalid email id entered'}\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n setVehicleOwnerContact(event.target.value)}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setVehicleOwnerDept(event.target.value)}\r\n />\r\n \r\n\r\n \r\n \r\n setVehicleOwnerAddress(event.target.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\n \r\n )\r\n\r\n}\r\n\r\nexport default AddVehicleDataModalComponent;","import React, { useEffect, useState, useRef, createContext } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\n//import ReactToPrint from \"react-to-print\";\r\nconst { SearchBar } = Search;\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport {VehicleDataContext} from \"components/Common/PageDataContext\";\r\nimport EditVehicleDataModalComponent from './EditVehicleDataModal';\r\nimport UploadVehicleDataModalComponent from './UploadVehicleDataExcel';\r\nimport AddVehicleDataModalComponent from \"./AddVehicleData\";\r\n\r\n\r\nconst VehicleDetailsTables = (props) => {\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([{color:\"\",theme:\"\"}]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n const [vehicledetails, setVehicleData] = useState([]);\r\n const Contextvalue = {vehicledetails, setVehicleData };\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const columns = [\r\n {\r\n dataField: \"VehicleID\",\r\n text: \"ID\",\r\n hidden: true\r\n },\r\n {\r\n dataField: \"EmployeeID\",\r\n text: \"Employee ID\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleOwnerName\",\r\n text: \"Owner Name\",\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleRegistrationNumber\",\r\n text: \"Registration Number\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '170px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleOwnerEmailAddress\",\r\n text: \"Email Id\",\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleOwnerContact\",\r\n text: \"Contact No\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleOwnerDept\",\r\n text: \"Department\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n {\r\n dataField: \"VehicleOwnerAddress\",\r\n text: \"Address\",\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '165px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n },\r\n\r\n {\r\n dataField: \"VehicleID\",\r\n text: \"Edit\",\r\n csvExport: false,\r\n sort: false,\r\n formatter: (value, row) => (\r\n \r\n \r\n \r\n ),\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '60px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n },\r\n }\r\n ]\r\n\r\n// This is custom csv export component\r\nconst ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n}\r\n\r\n\r\n// this function will copy to clipboard an entire table,\r\n// so you can paste it inside an excel or csv file\r\n//const copyToClipboardAsTable = el => {\r\n const copyToClipboardAsTable = (el) => {\r\n var body = document.body,\r\n range,\r\n sel;\r\n if (document.createRange && window.getSelection) {\r\n range = document.createRange();\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n try {\r\n range.selectNodeContents(el);\r\n sel.addRange(range);\r\n } catch (e) {\r\n range.selectNode(el);\r\n sel.addRange(range);\r\n }\r\n document.execCommand(\"copy\");\r\n } else if (body.createTextRange) {\r\n range = body.createTextRange();\r\n range.moveToElementText(el);\r\n range.select();\r\n range.execCommand(\"Copy\");\r\n }\r\n \r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Copied to clipboard!\r\n \r\n )\r\n }\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setCampusItems(JSON.parse(result.CampusList));\r\n var campuslst = JSON.parse(result.CampusList);\r\n setSelectedCampusItem(campuslst[0]);\r\n setCampusSelected(campuslst[0].value);\r\n GetVehicleDetails(campuslst[0].value);\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [])\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n GetVehicleDetails(event.value);\r\n };\r\n\r\n const GetVehicleDetails = (CampusID) => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetVehicleDetailsList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": CampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //console.log(result);\r\n if (result.VehicleDetailsList != undefined) {\r\n if (JSON.parse(result.VehicleDetailsList).length > 0)\r\n setVehicleData(JSON.parse(result.VehicleDetailsList));\r\n else\r\n setVehicleData([]);\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n // }, [violations])\r\n }\r\n\r\n const breadcrumbItems = [\r\n { title: \"Settings\", link: \"#\" },\r\n { title: \"Register Vehicle\", link: \"/RegisterVehicle\" },\r\n ];\r\n\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Register Vehicle', breadcrumbItems);\r\n })\r\n\r\n return (\r\n \r\n\r\n \r\n Indus | Register Vehicle\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {alertmsg}\r\n \r\n {\r\n props => (\r\n
\r\n \r\n \r\n \r\n \r\n   \r\n \r\n copyToClipboardAsTable(\r\n document.getElementById(\"react-bs-table\")\r\n )\r\n }\r\n >\r\n Copy\r\n \r\n {/*   \r\n (\r\n \r\n Print \r\n \r\n )}\r\n content={() => componentRef.current}\r\n /> */}\r\n \r\n {/* \r\n This will open a print page with the visible rows of the\r\n table.\r\n */}\r\n \r\n This will copy to your clipboard the visible rows of the\r\n table.\r\n \r\n \r\n This will download table data in csv file.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n\r\n}\r\n\r\n//export default VehicleDetailsTables;\r\nexport default connect(null, { setBreadcrumbItems })(VehicleDetailsTables);","import React, { useEffect } from \"react\"\r\nimport MetaTags from 'react-meta-tags';\r\nimport { connect } from \"react-redux\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport { Link } from \"react-router-dom\";\r\nimport logoLightPng from \"../../assets/images/Logo.png\"\r\n\r\n\r\n\r\n\r\n\r\n// Pages Components\r\n// import Miniwidget from \"./Miniwidget\"\r\n// import MonthlyEarnings from \"./montly-earnings\";\r\n// import EmailSent from \"./email-sent\";\r\n// import MonthlyEarnings2 from \"./montly-earnings2\";\r\n// import Inbox from \"./inbox\";\r\n// import RecentActivity from \"./recent-activity\";\r\n// import WidgetUser from \"./widget-user\";\r\n// import YearlySales from \"./yearly-sales\";\r\n// import LatestTransactions from \"./latest-transactions\";\r\n// import LatestOrders from \"./latest-orders\";\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\";\r\n\r\n\r\n\r\n\r\nimport {\r\n Table,\r\n Row,\r\n Col,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n ModalFooter,\r\n} from \"reactstrap\";\r\nimport { useState } from \"react\";\r\nimport { JsonWebTokenError } from \"jsonwebtoken\";\r\nimport { values } from \"lodash\";\r\nimport { func } from \"prop-types\";\r\nimport SweetAlert from \"react-bootstrap-sweetalert\";\r\n\r\n\r\nfunction DeviceList(props) {\r\n\r\n const [modal, setModal] = useState(false)\r\n const [LocationList, setLocationList] = useState([]);\r\n const [HardwareDetailsList, setHardwareDetailsList] = useState([]);\r\n\r\n const [FormValues, setFormValues] = useState({ CampusID: '', LocationID:'', CampusName: '', LocationName: '', ControllerIPAddress: '', CameraIPAddress: '', MacAddress: '' });\r\n const [modal_small, setmodal_small] = useState(false);\r\n const [basic, setbasic] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const[validateMsg, setvalidateMsg] = useState();\r\n\r\n\r\n function checkIfValidIP(str) {\r\n // Regular expression to check if string is a IP address\r\n const regexExp = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gi;\r\n \r\n if(!regexExp.test(str))\r\n {\r\n setvalidateMsg(\"Ip Address is Invalid\");\r\n console.log(validateMsg);\r\n }\r\n }\r\n\r\n\r\n\r\n \r\n\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/getLocationDetails\",\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n setLocationList(data.LocationDetails)\r\n });\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/getHardwareDetails\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n\r\n setHardwareDetailsList(data.HardwareDetails)\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n });\r\n \r\n\r\n },[]);\r\n\r\n\r\n const [EditedLocationName, setEditedLocationName] = useState();\r\n const [editLocationValues, seteditLocationValues] = useState();\r\n const [editControllerIP, seteditControllerIP] = useState();\r\n const [editCameraIP, seteditCameraIP] = useState();\r\n const [editRadarIP, seteditRadarIP] = useState();\r\n const [editMacAddress, seteditMacAddress] = useState();\r\n const [editLatitude, setditLatitude] = useState();\r\n const [editLongitude, seteditLongitude] = useState();\r\n\r\n\r\n const[EditResponseMessage, setEditResponseMessage] = useState();\r\n const[EditResponseMessageType, setEditResponseMessageType] = useState();\r\n \r\n\r\n const SaveEditLocDetails = () => {\r\n // UserValidated\r\n fetch(apiEndpoint+'/SaveEditedData',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body:JSON.stringify( {\r\n \"intLocationID\": FormValues.LocationID,\r\n \"strLocationName\":editLocationValues,\r\n \"strControllerIP\":editControllerIP,\r\n \"strCameraIP\":editCameraIP,\r\n \"strMacAddress\":editMacAddress,\r\n \"strLatitude\": editLatitude,\r\n \"strLongitude\": editLongitude,\r\n \"strRadarIP\": editRadarIP,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n\r\n\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) =>{\r\n setEditResponseMessage(data.ResponseMessage); \r\n setEditResponseMessageType(data.ResponseType); \r\n\r\n if(data.ResponseType == \"success\")\r\n {\r\n setbasic(true);\r\n setModalOpen(false);\r\n \r\n }\r\n })\r\n }\r\n\r\n const DeviceDetailsList = () =>{\r\n debugger;\r\n window.location.reload();\r\n // UserValidated\r\n fetch(apiEndpoint+'/getLocationDetails',\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n \r\n setLocationList(data.LocationDetails);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n });\r\n\r\n }\r\n\r\n const refreshPage = ()=>{\r\n window.location.reload();\r\n }\r\n\r\n function validateIpAddress(value) {\r\n const ipAddressRegex =/^(\\d+\\.\\d+\\.\\d+\\.){1}\\d+$/;\r\n if (!ipAddressRegex.test(value)) {\r\n return \"Invalid IP address\";\r\n }\r\n const ipAddressRegex1 = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n if (!ipAddressRegex1.test(value)) {\r\n return \"Invalid IP address\";\r\n }\r\n \r\n \r\n return true;\r\n }\r\n \r\n \r\n function isValidLatitude(value) {\r\n const latRegex = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$/;\r\n \r\n if(!latRegex.test(value))\r\n {\r\n return \"Invalid Latitude Value\";\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n \r\n function isValidLongitude(value) {\r\n const lonRegex = /^[-+]?([1-9]?\\d(\\.\\d+)?|1[0-7]\\d(\\.\\d+)?|180(\\.0+)?)$/;\r\n if(!lonRegex.test(value))\r\n {\r\n return \"Invalide Longitude Value\"\r\n }\r\n return true;\r\n }\r\n\r\n const getColor = (LocationStatus) => {\r\n debugger;\r\n if (LocationStatus === \"Online\") return 'green';\r\n if (LocationStatus === \"Offline\") return 'red';\r\n \r\n };\r\n\r\n return (\r\n \r\n\r\n{basic ? (\r\n {\r\n {DeviceDetailsList}\r\n setbasic(false)\r\n setModal(!modal)\r\n \r\n console.log(EditResponseMessageType)\r\n }}\r\n />\r\n ) : null}\r\n setModal(!modal)}\r\n style={{width:\"500px\", height: \"500px\"}}\r\n >\r\n setModal(!modal)}\r\n\r\n >\r\n Edit Device\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Location\r\n \r\n
\r\n {\r\n seteditLocationValues(event.target.value);\r\n\r\n }}\r\n\r\n />\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n Controller IP\r\n \r\n
\r\n {\r\n seteditControllerIP(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n Camera IP\r\n \r\n
\r\n {\r\n seteditCameraIP(event.target.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 Radar IP\r\n \r\n
\r\n {\r\n seteditR(event.target.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 MAC Address\r\n \r\n
\r\n {\r\n seteditMacAddress(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n Latitude\r\n \r\n
\r\n {\r\n setditLatitude(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n Longitude\r\n \r\n
\r\n {\r\n seteditLongitude(event.target.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\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {LocationList.map(i =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n )}\r\n\r\n\r\n \r\n
Device IDCampusLocationController IPCamera IPRadar IPMac AddressActions
{i.LocationID}{i.CampusName}{i.LocationName}{i.ControllerIPAddress}{i.CameraIPAddress}{i.RadarIPAddress}{i.MacAddress} {\r\n setModal(true)\r\n setFormValues(i);\r\n \r\n }}\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n
\r\n {/* \r\n

Hardware Details

\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {HardwareDetailsList.map(i =>\r\n \r\n \r\n \r\n \r\n \r\n \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 IDLocation CPU TempratureCPU UsageTotal RAMTotal Disk UsageLast Updated Time
{i.StatusID}{i.LocationName}{i.CpuTemp}{i.CpuUsage}{i.TotalRAM}{i.TotalDiskUsage}{i.TimeStamp}
\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, { setBreadcrumbItems })(DeviceList);","import React from 'react';\r\n\r\nexport const LatLongData = {\r\n LatContext: 18.54,\r\n LongContext: 85.65\r\n}\r\nexport const LatitudeContext = React.createContext(LatLongData);\r\n\r\n\r\n","import { Map, GoogleApiWrapper, Marker } from 'google-maps-react';\r\nimport React, { Component } from 'react';\r\nimport { InputGroup } from 'reactstrap';\r\nimport {LatitudeContext} from './MapContext';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\nconst mapStyles = {\r\n width: '140%',\r\n height: '100%',\r\n };\r\n const position={\r\n lat: 60,\r\n lng: -132.434\r\n }\r\n var collection=[];\r\nclass DeviceMapContainer extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n collection: [],\r\n value: 0,\r\n centre:{},\r\n position:{}\r\n }\r\n \r\n }\r\n \r\nrender() {\r\n const positionNew={\r\n lat: this.context.NewLatitudeValue,\r\n lng: this.context.NewLongitudeValue,\r\n }\r\n //this.setState({position:positionNew});\r\n\r\n console.log(\"Latitude:------> \",this.context.NewLatitudeValue);\r\n debugger;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n export default GoogleApiWrapper({\r\n apiKey: 'AIzaSyDw4M0s-wdhkjGK1L5BkWzyilxKp15QnGY'\r\n })(DeviceMapContainer);\r\n\r\n DeviceMapContainer.contextType = LatitudeContext;\r\n\r\n\r\n ","import React from 'react';\r\n// import { Map, InfoWindow, Marker, GoogleApiWrapper } from \"google-maps-react\"\r\nimport { Data, GoogleMap, InfoWindow, LoadScript, MapContext, Marker } from \"@react-google-maps/api\";\r\n\r\n\r\nimport DeviceList from './deviceList';\r\nimport {\r\n Card,\r\n CardBody,\r\n Col,\r\n Row,\r\n CardTitle,\r\n FormGroup,\r\n Form,\r\n Button,\r\n UncontrolledTooltip,\r\n CardSubtitle,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n ModalFooter,\r\n Alert\r\n\r\n} from \"reactstrap\"\r\n\r\nimport { connect } from \"react-redux\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport MapComponent from './AddDeviceMaps';\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport { useEffect } from 'react';\r\nimport { useState, createContext } from 'react';\r\n\r\nimport { LatitudeContext } from './MapContext';\r\nimport DeviceMapContainer from \"./DeviceMapContainer\";\r\n\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n//import apiURL from 'urlConfig';\r\n\r\n//export const LatLongContext = createContext(\"67\");\r\n\r\n\r\nfunction AddDevice(props) {\r\n\r\n var EncodedCampus = '';\r\n var CampusImagePath = '';\r\n const [toggleSwitch, settoggleSwitch] = useState(true);\r\n const [toggleSwitchSize, settoggleSwitchSize] = useState(true);\r\n const [values, setValues] = useState([]);\r\n const [FormValues, setFormValues] = useState({ CampusID: '', CampusName: '', LocationName: '', ControllerIPAddress: '', CameraIPAddress: '', MacAddress: '' });\r\n const [modal_small, setmodal_small] = useState(false);\r\n\r\n\r\n const [NewLocationValue, setNewLocationValue] = useState();\r\n const [NewControllerIPValue, setNewControllerIPValue] = useState();\r\n const [NewRadarIPValue, setNewRadarIPValue] = useState();\r\n\r\n const [NewCameraIPValue, setNewCameraIPValue] = useState();\r\n const [NewMacAddressValue, setNewMacAddressValue] = useState();\r\n const [NewLatitudeValue, setNewLatitudeValue] = useState(18.6483);\r\n const [NewLongitudeValue, setNewLongitudeValue] = useState(73.7990);\r\n const [NewCampusID, setNewCampusID] = useState(2);\r\n const [CampusImageFile, setCampusImageFile] = useState();\r\n const [EncodedCampusImage, setEncodedCampusImage] = useState(' ');\r\n const [AddCampusResponse, setAddCampusResponse] = useState(null);\r\n const [AddCampusResponseType,setAddCampusResponseType]= useState(null);\r\n const [basic, setbasic] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [CampsuList, setCampusList] = useState([]);\r\n const [SelectedCampusValue, setSelectedCampusValue] = useState(1);\r\n\r\n const [AddNewCampusValue, setAddNewCampusValue] = useState();\r\n const [LatLong, setLatLong] = useState([NewLatitudeValue, NewLongitudeValue]);\r\n //const LatContextValue = {NewLatitudeValue, setNewLatitudeValue}; \r\n\r\n const [hasError, setHasError] = useState(false);\r\n\r\n\r\n const containerStyle = {\r\n width: \"150%\",\r\n height: \"100%\",\r\n}\r\nvar center = {\r\n lat:NewLatitudeValue,\r\n lng:NewLongitudeValue,\r\n}\r\nconst mapClicked = (event) => {\r\n debugger;\r\n center = {lat: event.latLng.lat(), lng:event.latLng.lng()};\r\n\r\n // console.log(NewLatitudeValue);\r\n //setNewLatitudeValue(event.latLng.lat().toFixed(4));\r\n //setNewLongitudeValue(event.latLng.lng().toFixed(4));\r\n setNewLatitudeValue(event.latLng.lat());\r\n setNewLongitudeValue(event.latLng.lng());\r\n \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n const tog_small = () => {\r\n debugger;\r\n setmodal_small(!modal_small)\r\n document.body.classList.add(\"no_padding\")\r\n }\r\n\r\n\r\n useEffect(() => {\r\n\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/CampusList\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n setCampusList(data.CampusList);\r\n setNewCampusID(data.CampusList[0].CampusID);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n\r\n\r\n\r\n\r\n });\r\n\r\n \r\n \r\n\r\n }, []);\r\n\r\n const getCampusLiist = () =>\r\n {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/CampusList\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n setCampusList(data.CampusList);\r\n setNewCampusID(data.CampusList[0].CampusID);\r\n\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n\r\n });\r\n }\r\n\r\n\r\n const handleCampusChange = event => {\r\n debugger;\r\n\r\n\r\n setSelectedCampusValue(event.target.value);\r\n setNewCampusID(event.target.value);\r\n\r\n\r\n\r\n };\r\n \r\n const SubmitNewDeviceDetails = () => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewDevice',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": NewCampusID,\r\n \"strLocationName\": NewLocationValue,\r\n \"strControllerIP\": NewControllerIPValue,\r\n \"strCameraIP\": NewCameraIPValue,\r\n \"strMacAddress\": NewMacAddressValue,\r\n \"strLatitude\": NewLatitudeValue,\r\n \"strLongitude\": NewLongitudeValue,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n\r\n })\r\n\r\n\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n setAddCampusResponse(data.ResponseMessage);\r\n setAddCampusResponseType(data.ResponseType)\r\n if (data.ResponseType !=\"error\") {\r\n setbasic(true);\r\n setModalOpen(false);\r\n setAddNewCampusValue(null);\r\n window.location.reload();\r\n\r\n\r\n }\r\n else {\r\n setbasic(true);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n const AddNewCampus = () => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewcampus',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strCampusName\": AddNewCampusValue,\r\n \"strBase64CampusImage\": EncodedCampus,\r\n \"strCampusImagePath\": CampusImagePath,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n\r\n })\r\n\r\n\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n setAddCampusResponse(data.ResponseMessage);\r\n setAddCampusResponseType(data.ResponseType)\r\n console.log(AddCampusResponseType)\r\n if (data.ResponseType !=\"error\") {\r\n \r\n setbasic(true);\r\n setModalOpen(false);\r\n setAddNewCampusValue(null);\r\n \r\n\r\n }\r\n else {\r\n setbasic(true);\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n function validateIpAddress(value) {\r\n const ipAddressRegex =/^(\\d+\\.\\d+\\.\\d+\\.){1}\\d+$/;\r\n if (!ipAddressRegex.test(value)) {\r\n return \"Invalid IP address\";\r\n }\r\n const ipAddressRegex1 = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n if (!ipAddressRegex1.test(value)) {\r\n return \"Invalid IP address\";\r\n }\r\n\r\n\r\n return true;\r\n }\r\n\r\n \r\nfunction isValidLatitude(value) {\r\n const latRegex = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$/;\r\n\r\n if(!latRegex.test(value))\r\n {\r\n return \"Invalid Latitude Value\";\r\n }\r\n else{\r\n return true;\r\n }\r\n}\r\n\r\nfunction isValidLongitude(value) {\r\n const lonRegex = /^[-+]?([1-9]?\\d(\\.\\d+)?|1[0-7]\\d(\\.\\d+)?|180(\\.0+)?)$/;\r\n if(!lonRegex.test(value))\r\n {\r\n return \"Invalide Longitude Value\"\r\n }\r\n return true;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n return (\r\n\r\n\r\n \r\n\r\n\r\n {modalOpen ?\r\n {\r\n tog_small()\r\n\r\n }}\r\n\r\n > \r\n \r\n \r\n Add New Campus\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Campus Name\r\n \r\n
\r\n {\r\n setAddNewCampusValue(event.target.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\n\r\n
\r\n \r\n
\r\n \r\n : \"\"}\r\n\r\n {basic ? (\r\n\r\n\r\n {\r\n \r\n setbasic(false);\r\n getCampusLiist();\r\n console.log(AddCampusResponseType)\r\n }}\r\n confirmBtnBsStyle=\"info\"\r\n > \r\n \r\n\r\n ) : null}\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Campus\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n {\r\n tog_small();\r\n setAddNewCampusValue(null);\r\n setModalOpen(true);\r\n EncodedCampus = null;\r\n }}\r\n >\r\n \r\n \r\n \r\n Click Here to Add New Campus\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n Location\r\n \r\n
\r\n {\r\n setNewLocationValue(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Controller IP\r\n \r\n
\r\n {\r\n setNewControllerIPValue(event.target.value);\r\n }}\r\n\r\n />\r\n
\r\n
\r\n \r\n \r\n Camera IP\r\n \r\n
\r\n {\r\n setNewCameraIPValue(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Radar IP\r\n \r\n
\r\n {\r\n setNewRadarIPValue(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n MAC Address\r\n \r\n
\r\n {\r\n setNewMacAddressValue(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Latitude\r\n \r\n
\r\n {\r\n setNewLatitudeValue(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Longitude\r\n \r\n
\r\n {\r\n setNewLongitudeValue(event.target.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\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\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 AddDevice;","import React from 'react';\r\nimport DeviceList from './deviceList';\r\nimport {\r\n Card,\r\n CardBody,\r\n Col,\r\n Row,\r\n CardTitle,\r\n FormGroup,\r\n Form\r\n } from \"reactstrap\"\r\n \r\n import { connect } from \"react-redux\";\r\n \r\n //Import Action to copy breadcrumb items from local state to redux state\r\n import { setBreadcrumbItems } from \"../../store/actions\";\r\n import { useEffect } from 'react';\r\n import { useState } from 'react';\r\n import Select from \"react-select\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\";\r\nimport SweetAlert from \"react-bootstrap-sweetalert\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n\r\nfunction FirmwareConfig(props) {\r\n\r\nconst [SelectedCampusValue, setSelectedCampusValue] = useState(1);\r\nconst [toggleSwitch, settoggleSwitch] = useState(true)\r\nconst [toggleSwitchSize, settoggleSwitchSize] = useState(true)\r\nconst [SpeedLimit, setSpeedLimit] = useState('');\r\nconst [GreenDisplayMsg, setGreenDisplayMsg] = useState('');\r\nconst [AmberDisplayMsg, setAmberDisplayMsg] = useState();\r\nconst [RedDisplayMsg, setRedDisplayMsg] = useState();\r\nconst [LightThreshold, setLightThreshold] = useState();\r\nconst [CampsuList, setCampusList] = useState([]);\r\nconst [LocationList, setLocationList] = useState([]);\r\nconst [SelectedLocationValue, setSelectedLocationValue] = useState(1);\r\nconst [ FirmwareDetails, setFirmwareDetails] = useState(['']);\r\nconst [ AddMessageResponse, setAddMessageResponse] = useState('');\r\nconst [ AddMessageResponseType, setAddMessageResponseType] = useState('');\r\n\r\n\r\nconst [basic, setbasic] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n\r\n\r\n \r\n \r\n \r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/CampusList\",\r\n {\r\n mode: \"cors\",\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n})\r\n.then(res => res.json())\r\n.then((data) => {\r\n debugger;\r\n setCampusList(data.CampusList);\r\n \r\n GetLocationList(data.CampusList[0].CampusID);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n});\r\n\r\n},[]);\r\n\r\nconst handleCampusChange = event => {\r\n debugger;\r\n \r\n \r\n setSelectedCampusValue(event.target.value);\r\n GetLocationList(event.target.value);\r\n\r\n\r\n \r\n};\r\n\r\nconst handleLocationChange = event => {\r\n debugger;\r\n\r\n \r\n \r\n setSelectedLocationValue(event.target.value);\r\n \r\n GetFirmwareList(event.target.value);\r\n \r\n \r\n\r\n\r\n \r\n};\r\n\r\n\r\nconst GetFirmwareList = (LocationId) => {\r\n \r\n debugger;\r\n \r\n var intLocationID = LocationId;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetFirmwareDetails\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intLocationID\": intLocationID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n})\r\n.then(res => res.json())\r\n.then((data) => {\r\n debugger;\r\n \r\n if(data.FirmwareDetails.SpeedLimit != null){\r\n setFirmwareDetails(data.FirmwareDetails);\r\n setSpeedLimit(data.FirmwareDetails.SpeedLimit);\r\n setGreenDisplayMsg(data.FirmwareDetails.GreenDisplayMessage);\r\n setAmberDisplayMsg(data.FirmwareDetails.AmberDisplayMessage);\r\n setRedDisplayMsg(data.FirmwareDetails.RedDisplayMessage);\r\n\r\n\r\n \r\n \r\n }\r\n else{\r\n setSpeedLimit('');\r\n setGreenDisplayMsg('');\r\n setAmberDisplayMsg('');\r\n setRedDisplayMsg(''); \r\n console.log(SpeedLimit);\r\n setFirmwareDetails();\r\n }\r\n \r\n});\r\n\r\n};\r\n\r\n\r\nconst GetLocationList = (CampusID) => {\r\n debugger;\r\n \r\n var intCampusID = CampusID;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SelectedLocationList\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n})\r\n.then(res => res.json())\r\n.then((data) => {\r\n debugger;\r\n console.log(\"Locaton List\",data);\r\n if(data.LocationDetails != null)\r\n {\r\n setLocationList(data.LocationDetails);\r\n GetFirmwareList(data.LocationDetails[0].LocationID);\r\n setSelectedLocationValue(data.LocationDetails[0].LocationID);\r\n }\r\n else{\r\n setGreenDisplayMsg('');\r\n setRedDisplayMsg('');\r\n setAmberDisplayMsg('');\r\n setSpeedLimit('');\r\n setLocationList([\r\n {\"LocationID\" : 0,\r\n \"LocationName\": \"\"}\r\n ]);\r\n }\r\n\r\n \r\n});\r\n\r\n};\r\n\r\nconst SubmitNewFirmwareDetails = () => {\r\n \r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewFirmwareDetails',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": SelectedCampusValue,\r\n \"intLocationID\": SelectedLocationValue,\r\n \"strGreenMessage\": GreenDisplayMsg,\r\n \"strAmberMessage\": AmberDisplayMsg,\r\n \"strRedMessage\": RedDisplayMsg,\r\n \"strSpeedLimit\": SpeedLimit,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n\r\n\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n setAddMessageResponse(data.ResponseMessage);\r\n setAddMessageResponseType(data.ResponseType)\r\n if (data.ResponseType != \"error\") {\r\n\r\n debugger;\r\n setbasic(true);\r\n setModalOpen(false);\r\n\r\n }\r\n else {\r\n setbasic(true);\r\n }\r\n });\r\n}\r\n\r\nfunction isValidSpeedLimit(value){\r\n const Regex = /^([1-9]|[1-9][0-9]|1[0-9][0-9])$/;\r\n if(!Regex.test(value))\r\n {\r\n return \"Invalid Speed Limit\"\r\n }\r\n return true;\r\n}\r\n\r\n \r\n return (\r\n \r\n \r\n\r\n {basic ? (\r\n {\r\n setbasic(false)\r\n }}\r\n />\r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Campus\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n Location\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Speed Limit\r\n \r\n
\r\n {\r\n setSpeedLimit(event.target.value);\r\n \r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Green Display Message \r\n \r\n
\r\n {\r\n setGreenDisplayMsg(event.target.value);\r\n console.log(GreenDisplayMsg);\r\n }}\r\n \r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n Amber Display Messgae \r\n \r\n
\r\n {\r\n setAmberDisplayMsg(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Red Display Messgae \r\n \r\n
\r\n {\r\n setRedDisplayMsg(event.target.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\n
\r\n )\r\n}\r\n\r\n\r\nexport default FirmwareConfig;","import React, { useEffect, Component } from \"react\"\r\nimport MetaTags from 'react-meta-tags';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n Col,\r\n Collapse,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n Row,\r\n TabContent,\r\n TabPane,\r\n} from \"reactstrap\"\r\n\r\nimport { Link } from \"react-router-dom\"\r\n\r\nimport { connect } from \"react-redux\";\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport DeviceList from \"./deviceList\";\r\nimport AddDevice from \"./addDevice\";\r\nimport FirmwareConfig from \"./firmwareConfig\";\r\n\r\nimport classnames from \"classnames\"\r\n\r\nclass DeviceManagementTabs extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n locationListData : [],\r\n breadcrumbItems: [\r\n { title: \"Settings\", link: \"#\" },\r\n { title: \"Register Device\", link: \"/DeviceManagementTabs\" },\r\n ],\r\n\r\n activeTab: \"1\",\r\n activeTab1: \"5\",\r\n activeTab2: \"9\",\r\n activeTab3: \"13\",\r\n verticalActiveTab: \"1\",\r\n customActiveTab: \"1\",\r\n activeTabJustify: \"5\",\r\n col1: true,\r\n col2: false,\r\n col3: false,\r\n col5: true,\r\n col6: true,\r\n col7: true,\r\n col8: true,\r\n col9: true,\r\n col10: false,\r\n col11: false,\r\n }\r\n this.toggle = this.toggle.bind(this)\r\n this.toggle1 = this.toggle1.bind(this)\r\n\r\n this.t_col1 = this.t_col1.bind(this)\r\n this.t_col2 = this.t_col2.bind(this)\r\n this.t_col3 = this.t_col3.bind(this)\r\n this.t_col5 = this.t_col5.bind(this)\r\n this.t_col6 = this.t_col6.bind(this)\r\n this.t_col7 = this.t_col7.bind(this)\r\n this.t_col8 = this.t_col8.bind(this)\r\n this.t_col9 = this.t_col9.bind(this)\r\n this.t_col10 = this.t_col10.bind(this)\r\n this.t_col11 = this.t_col11.bind(this)\r\n\r\n this.toggle2 = this.toggle2.bind(this)\r\n this.toggle3 = this.toggle3.bind(this)\r\n\r\n this.toggleVertical = this.toggleVertical.bind(this)\r\n this.toggleCustom = this.toggleCustom.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n this.props.setBreadcrumbItems(\"Register Device\", this.state.breadcrumbItems);\r\n //this._locationList();\r\n }\r\n\r\n _locationList() {\r\n debugger;\r\n fetch(\r\n // UserValidated\r\n apiEndpoint+\"/getLocationDetails\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": 1,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n }\r\n )\r\n .then(res => res.json())\r\n .then(response =>\r\n this.setState({ locationListData: response.items })\r\n \r\n )\r\n .catch(error => console.log(error));\r\n }\r\n\r\n t_col1() {\r\n this.setState({ col1: !this.state.col1 })\r\n }\r\n\r\n t_col2() {\r\n this.setState({ col2: !this.state.col2 })\r\n }\r\n\r\n t_col3() {\r\n this.setState({ col3: !this.state.col3 })\r\n }\r\n\r\n t_col5() {\r\n this.setState({ col5: !this.state.col5 })\r\n }\r\n\r\n t_col6() {\r\n this.setState({ col6: !this.state.col6 })\r\n }\r\n\r\n t_col7() {\r\n this.setState({ col7: !this.state.col7 })\r\n }\r\n\r\n t_col8() {\r\n this.setState({\r\n col6: !this.state.col6,\r\n col7: !this.state.col7\r\n })\r\n }\r\n\r\n t_col9() {\r\n this.setState({ col9: !this.state.col9 })\r\n }\r\n\r\n t_col10() {\r\n this.setState({ col10: !this.state.col10 })\r\n }\r\n\r\n t_col11() {\r\n this.setState({ col11: !this.state.col11 })\r\n }\r\n\r\n toggle(tab) {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n })\r\n }\r\n }\r\n\r\n toggle1(tab) {\r\n if (this.state.activeTab1 !== tab) {\r\n this.setState({\r\n activeTab1: tab,\r\n })\r\n }\r\n }\r\n\r\n toggle2(tab) {\r\n if (this.state.activeTab2 !== tab) {\r\n this.setState({\r\n activeTab2: tab,\r\n })\r\n }\r\n }\r\n\r\n toggle3(tab) {\r\n if (this.state.activeTab3 !== tab) {\r\n this.setState({\r\n activeTab3: tab,\r\n })\r\n }\r\n }\r\n\r\n toggleVertical(tab) {\r\n if (this.state.verticalActiveTab !== tab) {\r\n this.setState({\r\n verticalActiveTab: tab,\r\n })\r\n }\r\n }\r\n\r\n toggleCustom(tab) {\r\n if (this.state.customActiveTab !== tab) {\r\n this.setState({\r\n customActiveTab: tab,\r\n })\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Indus | Device 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
\r\n\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default connect(null, { setBreadcrumbItems })(DeviceManagementTabs);","export default __webpack_public_path__ + \"static/media/challanpreview.f39faa47.jpg\";","export default __webpack_public_path__ + \"static/media/violationImage.3e01edf1.png\";","export default __webpack_public_path__ + \"static/media/ZoneConfigImage.3e01edf1.jpg\";","import React from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport MetaTags from 'react-meta-tags';\r\n// import { Map, InfoWindow, Marker, GoogleApiWrapper } from \"google-maps-react\"\r\n\r\nimport Switch from \"react-switch\"\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n Col,\r\n Row,\r\n CardTitle,\r\n FormGroup,\r\n Form,\r\n Button,\r\n UncontrolledTooltip,\r\n CardSubtitle,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n ModalFooter,\r\n Alert,\r\n CardImg,\r\n\r\n\r\n} from \"reactstrap\"\r\n//import { Page, Text, View, Document, StyleSheet } from '@react-pdf/renderer';\r\n//import ReactPDF from '@react-pdf/renderer';\r\nimport ReactDOM from 'react-dom';\r\nimport jsPDF from 'jspdf';\r\nimport { connect } from \"react-redux\";\r\nimport SweetAlert from \"react-bootstrap-sweetalert\";\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\";\r\n\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport { useEffect } from 'react';\r\nimport { useState, createContext } from 'react';\r\nimport img2 from \"../../assets/images/Ador_logo_cropped.png\"\r\nimport violationImage from \"../../assets/images/violationImage.png\"\r\nimport challanpreview from \"../../assets/images/challanpreview.jpg\"\r\nimport { constrainPoint } from '@fullcalendar/react';\r\nimport ZoneConfigImage from \"../../assets/images/ZoneConfigImage.jpg\"\r\n\r\n\r\n\r\n\r\n\r\n\r\n//export const LatLongContext = createContext(\"67\");\r\n\r\n\r\nfunction AddChallanConfigDetails(props) {\r\n const breadcrumbItems = [\r\n { title: \"Settings\", link: \"#\" },\r\n { title: \"Challan\", link: \"/ChallanSettings\" },\r\n ];\r\n\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Challan', breadcrumbItems);\r\n })\r\n var EncodedLogo = '';\r\n var CompanyLogoPath = '';\r\n\r\n const [SelectedCampusValue, setSelectedCampusValue] = useState(1);\r\n const [CampsuList, setCampusList] = useState([]);\r\n const [modal_small, setmodal_small] = useState(false);\r\n\r\n const [CompanyName, setCompanyName] = useState();\r\n const [CompanyAddress1, setNewCompanyAddress1] = useState();\r\n const [CompanyAddress2, setNewCompanyAddress2] = useState();\r\n const [CityName, setCityName] = useState();\r\n const [StateName, setStateName] = useState();\r\n const [NewChallanAmount, setNewChallanAmount] = useState();\r\n const [ChallanDetailsResponse, setChallanDetailsResponse] = useState();\r\n const [basic, setbasic] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [Base64CompanyLogo, setBase64CompanyLogo] = useState();\r\n const [showChallanPreview, setShowChallanPreview] = useState(false);\r\n const [ ValidateCompanyLogo, setValidateCompanyLogo] = useState(false);\r\n const [showZoneConfigImage, setShowZoneConfigImage] = useState(false);\r\n const [coordinates, setCoordinates] = useState({ x: 0, y: 0 });\r\n const [startCoordinates, setStartCoordinates] = useState(null);\r\n const [textBoxValue, setTextBoxValue] = useState('');\r\n const [polyCoordinates, setPolyCoordinates] = useState([]);\r\n const [points, setPoints] =useState('');\r\n const [circleCoordinates, setCircleCoordinates] = useState([]);\r\n const [DuplicateChallan, setDuplicateChallan] = useState(false);\r\n\r\n const Offsymbol = (props) => {\r\n return (\r\n \r\n {\" \"}\r\n No\r\n \r\n )\r\n }\r\n \r\n const OnSymbol = () => {\r\n return (\r\n \r\n {\" \"}\r\n Yes\r\n \r\n )\r\n }\r\n\r\n\r\n const PolyCoordinates = [\r\n { x: 100, y: 10 },\r\n { x: 170, y: 100 },\r\n { x: 40, y: 90 },\r\n {x:190, y:56}\r\n ];\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n const [AddNewCampusValue, setAddNewCampusValue] = useState();\r\n\r\n const [DataValues, setDataValues] = useState({ NewLatitudeValue: 18.5204, NewLongitudeValue: 73.2341 });\r\n\r\n\r\n //const LatContextValue = {NewLatitudeValue, setNewLatitudeValue}; \r\n\r\n\r\n\r\n // const styles = StyleSheet.create({\r\n // page: {\r\n // flexDirection: 'row',\r\n // backgroundColor: '#E4E4E4'\r\n // },\r\n // section: {\r\n // margin: 10,\r\n // padding: 10,\r\n // flexGrow: 1\r\n // }\r\n // });\r\n\r\n const myDownload = () => {\r\n debugger;\r\n var doc = new jsPDF('p', 'mm','a4');\r\n \r\n\r\n var img = new Image();\r\n img.src = \"data:image/jpg;base64\" +Base64CompanyLogo;\r\n console.log(\"Image source--->\"+img.src);\r\n console.log(doc.getFontList());\r\n const CompanyAddress = CompanyAddress1+\",\"+CompanyAddress2;\r\n const CityAddress = CityName+\",\"+StateName;\r\n doc.addFont('courier', 'Bold');\r\n doc.setFontSize(25);\r\n doc.text( \"Challan Ticket\",100,10,\"center\");\r\n doc.setFontSize(20);\r\n doc.text('Ador Powertron Ltd', 140, 30, 'right');\r\n doc.setFontSize(12); \r\n doc.text(CompanyAddress, 140, 35, 'right');\r\n doc.setFontSize(12); \r\n doc.text(CityAddress, 140, 40, 'right');\r\n\r\n \r\n doc.rect(15, 60, 180, 60);\r\n doc.setFontSize(12);\r\n doc.text(17, 67, \"Challan ID\");\r\n doc.text(17, 77, \"Violation Date Time\");\r\n doc.text(17, 87, \"Violation Speed\");\r\n doc.text(17, 97, \"Vehicle Owner\");\r\n doc.text(17, 107, \"Regitration Number\");\r\n doc.text(17, 117,\"Challan Type\");\r\n doc.text(17, 127, \"Challan Amount\");\r\n doc.addImage(img, 'png', 150, 20, 50, 30);\r\n // doc.rect(15, 63, 180, 75);\r\n doc.line(100,60,100,120)\r\n doc.line(15, 70, 195, 70);\r\n doc.line(15, 80, 195, 80);\r\n doc.line(15, 90, 195, 90);\r\n doc.line(15, 100, 195, 100);\r\n doc.line(15, 110, 195, 110);\r\n doc.line(15,120,195,120)\r\n // doc.line(15, 120, 195, 120);\r\n \r\n \r\n doc.rect(15, 130, 180, 100); \r\n doc.addImage(img, 'png', 17, 132, 175, 98) \r\n \r\n \r\n doc.save('demo.pdf')\r\n\r\n }\r\n\r\n const handleInput = (e) => {\r\n const { LocationName, value } = e.target;\r\n\r\n setFormValues({ ...FormValues, [LocationName]: value });\r\n console.log(FormValues);\r\n }\r\n function ValidateCompanyLog(value) {\r\n debugger;\r\n const allowedTypes = ['jpeg', 'png','jpg', 'JPEG', 'PNG', 'JPG'];\r\n if(value != \"\")\r\n {\r\n \r\n const fileExtension = value.split('.').pop();\r\n \r\n if (!allowedTypes.includes(fileExtension)) {\r\n // Invalid file type\r\n // Set an error message or take appropriate action\r\n return \"Please choose Image File\";\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n \r\n \r\n\r\n const SelectCompanyLogo = (e) => {\r\n debugger;\r\n const allowedTypes = ['jpeg', 'png','jpg', 'JPEG', 'PNG', 'JPG'];\r\n let fileType = e.target.files[0].name.split('.');\r\n if(allowedTypes.includes(fileType[1]))\r\n {\r\n let files = e.target.files;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(files[0]);\r\n reader.onload = (e) => {\r\n console.log('image data: ', e.target.result);\r\n EncodedLogo = e.target.result;\r\n\r\n }\r\n };\r\n // setValidateCompanyLogo(false);\r\n // \r\n\r\n // let files = e.target.files;\r\n // let fileType = e.target.files[0].name.split('.');\r\n // if(allowedTypes.includes(fileType[1]))\r\n // {\r\n // let reader = new FileReader();\r\n // reader.readAsDataURL(files[0]);\r\n // reader.onload = (e) => {\r\n // console.log('image data: ', e.target.result);\r\n // EncodedLogo = e.target.result;\r\n\r\n // };\r\n // console.log(EncodedLogo);\r\n\r\n // CompanyLogoPath = e.target.value;\r\n // GetChallanDetails(SelectedCampusValue);\r\n // return true; \r\n // }\r\n // else{\r\n // //setChallanDetailsResponse('Please Add Image File');\r\n // // setbasic(true);\r\n // //setValidateCompanyLogo(false);\r\n // return \"Invalid File Type\"\r\n // }\r\n \r\n\r\n\r\n }\r\n\r\n const tog_small = () => {\r\n debugger;\r\n setmodal_small(!modal_small)\r\n document.body.classList.add(\"no_padding\")\r\n }\r\n\r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/CampusList\",\r\n {\r\n method:\"POST\",\r\n\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n setCampusList(data.CampusList);\r\n GetChallanDetails(data.CampusList[0].CampusID);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n\r\n });\r\n\r\n }, []);\r\n\r\n const handleCampusChange = event => {\r\n debugger;\r\n\r\n\r\n setSelectedCampusValue(event.target.value);\r\n GetChallanDetails(event.target.value);\r\n \r\n\r\n\r\n\r\n };\r\n\r\n\r\n const GetChallanDetails = (CampusID) => {\r\n setShowChallanPreview(false);\r\n setCompanyName('');\r\n setNewCompanyAddress1('');\r\n setNewCompanyAddress2('');\r\n setCityName('');\r\n setStateName('');\r\n setNewChallanAmount('');\r\n setBase64CompanyLogo('');\r\n EncodedLogo = '';\r\n\r\n debugger;\r\nsetSelectedCampusValue(CampusID);\r\n var intCampusID = CampusID;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetChallanConfigDetails\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n // 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n if(data.base64Image != null)\r\n {\r\n setBase64CompanyLogo(data.base64Image);\r\n }\r\n\r\n if (data.ChallanConfigDetails != null) {\r\n if(data.ChallanConfigDetails.CompanyName != null && data.ChallanConfigDetails.CompanyName != \"\")\r\n {\r\n setShowChallanPreview(true);\r\n }\r\n else{\r\n setShowChallanPreview(false);\r\n }\r\n console.log(\"data---->\", data);\r\n setCompanyName(data.ChallanConfigDetails.CompanyName);\r\n setNewCompanyAddress1(data.ChallanConfigDetails.AddressLine1);\r\n setNewCompanyAddress2(data.ChallanConfigDetails.AddressLine2);\r\n setCityName(data.ChallanConfigDetails.City);\r\n setStateName(data.ChallanConfigDetails.State);\r\n setNewChallanAmount(data.ChallanConfigDetails.ChallanAmount);\r\n setDuplicateChallan(data.ChallanConfigDetails.DuplicateChallan);\r\n }\r\n else {\r\n setShowChallanPreview(false);\r\n setCompanyName('');\r\n setNewCompanyAddress1('');\r\n setNewCompanyAddress2('');\r\n setCityName('');\r\n setStateName('');\r\n setNewChallanAmount('');\r\n\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n\r\n\r\n const SubmitChallanDetails = () => {\r\n debugger;\r\n if(EncodedLogo == null || EncodedLogo == \"\")\r\n {\r\n EncodedLogo = Base64CompanyLogo;\r\n }\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewChallanConfig',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \r\n \"intCampusID\": SelectedCampusValue,\r\n \"intChallanAmount\": NewChallanAmount,\r\n \"strCompanyName\": CompanyName,\r\n \"strAddressLine1\": CompanyAddress1,\r\n \"strAddressLine2\": CompanyAddress2,\r\n \"strCity\": CityName,\r\n \"strState\": StateName,\r\n \"strBase64LogoImage\": EncodedLogo,\r\n \"boolDuplicateChallan\": DuplicateChallan,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n\r\n\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n \r\n if (data.ResponseType == \"success\") {\r\n debugger;\r\n setChallanDetailsResponse(data.ResponseMessage); \r\n setbasic(true);\r\n setModalOpen(false);\r\n\r\n }\r\n else if (data.ResponseType == \"error\") {\r\n setChallanDetailsResponse(data.ResponseMessage); \r\n setbasic(true);\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n const handlCoordinatesClick = (event) => {\r\n \r\n if (polyCoordinates.length >= 5) {\r\n setPoints(' ');\r\n setPolyCoordinates([]);\r\n setTextBoxValue(' ');\r\n setCircleCoordinates([]);\r\n return; \r\n }\r\n debugger;\r\n const rect = event.target.getBoundingClientRect();\r\n const x = (event.clientX - rect.left);\r\n const y = (event.clientY - rect.top);\r\n let newCoordinates = [...polyCoordinates, { x: x, y: y }];\r\n setPolyCoordinates(newCoordinates);\r\n if (newCoordinates.length > 5) {\r\n newCoordinates = newCoordinates.slice(newCoordinates.length - 5); // Keep the last 5 coordinates\r\n }\r\n const pointString = newCoordinates.map(coord => `${coord.x},${coord.y}`).join(' ');\r\n //setTextBoxValue(`X: ${x*2}, Y: ${y*2}`);\r\n setTextBoxValue(pointString);\r\n\r\n setPoints(pointString);\r\n const newCircleCoordinates = [...circleCoordinates, { x, y }];\r\n setCircleCoordinates(newCircleCoordinates);\r\n };\r\n\r\n \r\n\r\n const handleTextBoxChange = (event) => {\r\n setTextBoxValue(event.target.value);\r\n };\r\n\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n Indus | Challan Settings\r\n \r\n \r\n\r\n \r\n \r\n \r\n {basic ? (\r\n {\r\n debugger;\r\n setbasic(false)\r\n }}\r\n />\r\n ) : null}\r\n\r\n\r\n\r\n\r\n\r\n {modalOpen ?\r\n {\r\n tog_small()\r\n\r\n }}\r\n size=\"lg\"\r\n \r\n\r\n >\r\n \r\n

Challan Ticket

\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n

{CompanyName}

\r\n
\r\n
\r\n
{CompanyAddress1}, {CompanyAddress2}
\r\n
\r\n\r\n
\r\n
{CityName}, {StateName}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Challan ID23
Violation Date Time2023-17-03 10:08:23
Violation Speed 21Km/Hr
Registration Number MH46BQ0269
Challan Type Penalty
Challan Amount {NewChallanAmount}
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n \r\n {/*
\r\n \r\n
*/}\r\n\r\n
\r\n\r\n \r\n\r\n\r\n : \"\"}\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n Campus\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n \r\n \r\n Challan Amount\r\n \r\n
\r\n {\r\n setNewChallanAmount(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n DuplicateChallan\r\n \r\n
\r\n \r\n }\r\n checkedIcon={}\r\n onColor=\"#626ed4\"\r\n onChange={() => {\r\n setDuplicateChallan(!DuplicateChallan)\r\n }}\r\n checked={DuplicateChallan}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n Company Logo\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n Company Name\r\n \r\n
\r\n {\r\n setCompanyName(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n Company Address\r\n \r\n \r\n \r\n \r\n Line 1\r\n \r\n
\r\n {\r\n setNewCompanyAddress1(event.target.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 Line 2\r\n \r\n
\r\n {\r\n setNewCompanyAddress2(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n City\r\n \r\n
\r\n {\r\n setCityName(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n State\r\n \r\n
\r\n {\r\n setStateName(event.target.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{showChallanPreview &&\r\n }\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n )\r\n\r\n}\r\n\r\n//export default AddChallanConfigDetails;\r\nexport default connect(null, { setBreadcrumbItems })(AddChallanConfigDetails);","import React from 'react';\r\n// import { Map, InfoWindow, Marker, GoogleApiWrapper } from \"google-maps-react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n Col,\r\n Row,\r\n CardTitle,\r\n FormGroup,\r\n Form,\r\n Button,\r\n UncontrolledTooltip,\r\n CardSubtitle,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n ModalFooter,\r\n Alert,\r\n\r\n} from \"reactstrap\"\r\n\r\nimport Switch from \"react-switch\"\r\n\r\nimport { connect } from \"react-redux\";\r\nimport SweetAlert from \"react-bootstrap-sweetalert\";\r\n\r\nimport { useEffect } from 'react';\r\nimport { useState, createContext } from 'react';\r\nimport { setRef } from '@fullcalendar/react';\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\n\r\n\r\n\r\n\r\n//export const LatLongContext = createContext(\"67\");\r\n\r\n\r\nfunction AddSmtpConfiguration(props) {\r\n\r\n var EncodedCampus = '';\r\n var CampusImagePath = '';\r\n const [toggleSwitch, settoggleSwitch] = useState(true);\r\n const [toggleSwitchSize, settoggleSwitchSize] = useState(true);\r\n const [values, setValues] = useState([]);\r\n const selectedPlace = {}\r\n const [FormValues, setFormValues] = useState({ CampusID: '', CampusName: '', LocationName: '', ControllerIPAddress: '', CameraIPAddress: '', MacAddress: '' });\r\n const [modal_small, setmodal_small] = useState(false);\r\n const handleInput = (e) => {\r\n const { LocationName, value } = e.target;\r\n\r\n setFormValues({ ...FormValues, [LocationName]: value });\r\n console.log(FormValues);\r\n }\r\n\r\n const [NewSMTPHost, setNewSMTPHost] = useState();\r\n const [NewSMTPPort, setNewSMTPPort] = useState();\r\n const [NewSMTPEnableSSL, setNewSMTPEnableSSL] = useState();\r\n const [NewMailFrom, setMailFrom] = useState();\r\n const [NewPassword, setNewPassword]= useState();\r\n const [SelectedCampusValue, setSelectedCampusValue] = useState(1);\r\n const [EnableSSLSwitch, setEnableSSLSwitch] = useState(true);\r\n const [EnableEmailAlerts, setEnableEmailAlerts] = useState(true);\r\n const [EnableSMSAlerts, setEnableSMSAlerts] = useState(true);\r\n\r\n const [CampsuList, setCampusList] = useState([]);\r\n\r\n const [AddMessageResponse, setAddMessageResponse] = useState(); \r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [basic, setbasic] = useState(false);\r\n\r\n\r\n\r\n\r\n //const LatContextValue = {NewLatitudeValue, setNewLatitudeValue}; \r\n\r\n useEffect(()=>{\r\n props.setBreadcrumbItems('Email and SMS', breadcrumbItems);\r\n\r\n });\r\n\r\n const breadcrumbItems = [\r\n { title: \"Settings\", link: \"#\" },\r\n { title: \"Email and SMS\", link: \"/addSmtpConfig\" },\r\n]\r\n\r\n const tog_small = () => {\r\n debugger;\r\n setmodal_small(!modal_small)\r\n document.body.classList.add(\"no_padding\")\r\n }\r\n\r\n\r\n const Offsymbol = (props) => {\r\n return (\r\n \r\n {\" \"}\r\n No\r\n \r\n )\r\n }\r\n \r\n const OnSymbol = () => {\r\n return (\r\n \r\n {\" \"}\r\n Yes\r\n \r\n )\r\n }\r\n\r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/CampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n setCampusList(data.CampusList);\r\n GetSmtpDetails(data.CampusList[0].CampusID);\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(data.strNewToken))\r\n \r\n });\r\n \r\n },[]);\r\n \r\n const handleCampusChange = event => {\r\n debugger;\r\n \r\n \r\n setSelectedCampusValue(event.target.value);\r\n GetSmtpDetails(event.target.value);\r\n \r\n \r\n \r\n };\r\n\r\n const GetSmtpDetails = (CampusID) => {\r\n \r\n debugger;\r\n \r\n var intCampusID = CampusID;\r\n setSelectedCampusValue(intCampusID);\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetSmtpConfigDetails\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": intCampusID,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n \r\n if(data.SmtpConfigDetails != null){\r\n console.log(\"data---->\", data);\r\n setNewSMTPHost(data.SmtpConfigDetails.HostName);\r\n setMailFrom(data.SmtpConfigDetails.MailFrom);\r\n setNewPassword(data.SmtpConfigDetails.Password);\r\n setNewSMTPPort(data.SmtpConfigDetails.PortNumber);\r\n setEnableEmailAlerts(data.SmtpConfigDetails.EnableEmail);\r\n setEnableSMSAlerts(data.SmtpConfigDetails.EnableSMS);\r\n \r\n \r\n }\r\n else{\r\n setNewSMTPHost(\"\");\r\n setMailFrom(\"\");\r\n setNewPassword(\"\");\r\n setNewSMTPPort();\r\n setEnableEmailAlerts(false);\r\n setEnableSMSAlerts(false);\r\n\r\n \r\n }\r\n \r\n });\r\n \r\n };\r\n\r\n\r\n const SubmitNewSmtpDetails = () => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewSmtpConfig',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": SelectedCampusValue,\r\n \"strHostName\": NewSMTPHost,\r\n \"intPortNumber\": NewSMTPPort,\r\n \"boolEnableSSL\": EnableSSLSwitch,\r\n \"strMailFrom\": NewMailFrom,\r\n \"strPassword\": NewPassword,\r\n \"boolEnableSMS\": EnableSMSAlerts,\r\n \"boolEnableEmail\": EnableEmailAlerts,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n \r\n \r\n\r\n\r\n }\r\n \r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n console.log(\"Response Message:->\", data);\r\n if(data.ResponseType == \"Success\")\r\n {\r\n setbasic(true);\r\n setAddMessageResponse(data.ResponseMessage);\r\n }\r\n })\r\n }\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n\r\n return (\r\n \r\n \r\n\r\n {basic ? (\r\n {\r\n setbasic(false);\r\n }}\r\n />\r\n ) : null}\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Campus\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n
\r\n { EnableEmailAlerts && \r\n \r\n \r\n SMTP Host Name\r\n \r\n
\r\n {\r\n setNewSMTPHost(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n SMTP Port Number \r\n \r\n
\r\n {\r\n setNewSMTPPort(event.target.value);\r\n }}\r\n\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n EMail From\r\n \r\n
\r\n {\r\n setMailFrom(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n Password\r\n \r\n
\r\n {\r\n setNewPassword(event.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Enable SSL\r\n \r\n
\r\n }\r\n checkedIcon={}\r\n onColor=\"#626ed4\"\r\n onChange={() => {\r\n setEnableSSLSwitch(!EnableSSLSwitch)\r\n }}\r\n checked={EnableSSLSwitch}\r\n />\r\n
\r\n
\r\n
\r\n \r\n } \r\n \r\n\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Enable Email Alert\r\n \r\n \r\n }\r\n checkedIcon={}\r\n onColor=\"#626ed4\"\r\n onChange={() => {\r\n setEnableEmailAlerts(!EnableEmailAlerts)\r\n }}\r\n checked={EnableEmailAlerts}\r\n />\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n \r\n Enable SMS Alert\r\n \r\n \r\n }\r\n checkedIcon={}\r\n onColor=\"#626ed4\"\r\n onChange={() => {\r\n setEnableSMSAlerts(!EnableSMSAlerts)\r\n }}\r\n checked={EnableSMSAlerts}\r\n />\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\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, { setBreadcrumbItems }) (AddSmtpConfiguration) ; ","import React, { useEffect, useState,useRef } from \"react\"\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport {Modal} from \"reactstrap\";\r\nimport {ModalBody,ModalHeader} from \"reactstrap\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n Container,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Dropdown,\r\n DropdownMenu,\r\n DropdownItem,\r\n DropdownToggle,\r\n ButtonDropdown,\r\n CardTitle,\r\n CardHeader,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nconst { SearchBar } = Search;\r\nimport { connect } from \"react-redux\";\r\nimport { Search } from \"react-bootstrap-table2-toolkit\";\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n//import AddUserComponent from \"./AddUserComponent\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nconst btnstylesObj = {\r\n \"margin-top\": '6rem',\r\n};\r\nconst bsAlertStyle={\r\n \"zIndex\":10000,\r\n \r\n}\r\nconst checkName = (name) => {\r\n const validRegExp = new RegExp(\r\n '^[A-Za-z]+$'\r\n );\r\n if(validRegExp.test(name) && name.length >= 3 && name.length <= 16){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\nconst UserRoles = (props) => {\r\n\r\n\r\n const [Userroleitems, setUserroleItems] = useState([]);\r\n const [SelectedUserroleitem, setSelectedUserroleItem] = useState([]);\r\n const [selectedUserroleVal, setUserroleSelected] = useState();\r\n const [editviolationlogs, seteditviolationlogs] = useState(false);\r\n const [deleteviolationlogs, setDeleteViolationLogs] = useState(false);\r\n const [vehiclecount, setvehiclecount] = useState(false);\r\n const [registerdevice, setregisterdevice] = useState(false);\r\n const [registervehicle, setregistervehicle] = useState(false);\r\n const [smtp, setsmtp] = useState(false);\r\n const [challan, setchallan] = useState(false);\r\n const [usermanagement, setusermanagement] = useState(false);\r\n const [rolemanagement, setrolemanagement] = useState(false);\r\n const [adduser, setadduser] = useState(false);\r\n const [editdeleteuser, seteditdeleteuser] = useState(false);\r\n const [addrole, setaddrole] = useState(false);\r\n const [editdeleterole, seteditdeleterole] = useState(false);\r\n const [changepassword, setchangepassword] = useState(false);\r\n const [alertmsg, setAlert] = useState([]);\r\n const [alertModal, setAlertModal] = useState([]);\r\n const [basic, setbasic] = useState(false);\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n const [addroleaccess, setaddroleaccess] = useState();\r\n const [editdeleteroleaccess, seteditdeleteroleaccess] = useState();\r\n\r\n\r\n useEffect(() => {\r\n\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n setaddroleaccess(UserPermissions.AddRole)\r\n seteditdeleteroleaccess(UserPermissions.EditDeleteRole)\r\n \r\n // UserValidated\r\n const url = apiEndpoint+'/GetUserRoles';\r\n fetch(url,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n \r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.UserRoleList != undefined) {\r\n setUserroleItems(JSON.parse(result.UserRoleList));\r\n var UserRoleList = JSON.parse(result.UserRoleList);\r\n if(UserRoleList[0]!=null){\r\n setSelectedUserroleItem(UserRoleList[0]);\r\n setUserroleSelected(UserRoleList[0].value);\r\n }\r\n }\r\n }\r\n },\r\n\r\n (error) => {\r\n console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n}, [])\r\n\r\n\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n }\r\n },\r\n (error) => {\r\n }\r\n )\r\n }, [])\r\n\r\n const setModalIsOpenToTrue =()=>{\r\n setModalIsOpen(true)\r\n }\r\n const setModalIsOpenToFalse =()=>{\r\n setModalIsOpen(false)\r\n }\r\n const toggle = () => {\r\n setModalIsOpen(!modalIsOpen) \r\n }\r\n \r\n \r\n // User Role Change Event\r\n const changeUserroleSelectHandler = (event) => {\r\n setSelectedUserroleItem(event);\r\n setUserroleSelected(event.value);\r\n console.log(event.value)\r\n };\r\n useEffect(() => {\r\n console.log(selectedUserroleVal)\r\n if(selectedUserroleVal!=undefined){\r\n const getData = async () => {\r\n // user validation not required\r\n fetch(apiEndpoint+\"/GetSelectedRolePermissions\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n // 'Access,-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"intUserRoleID\": selectedUserroleVal,\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n console.log(result)\r\n if (result != undefined) {\r\n \r\n console.log(result.UserRolePermissions.EditViolations)\r\n seteditviolationlogs(result.UserRolePermissions.EditViolations)\r\n setvehiclecount(result.UserRolePermissions.VehicleCount)\r\n setregisterdevice(result.UserRolePermissions.RegisterDevice)\r\n setregistervehicle(result.UserRolePermissions.RegisterVehicle)\r\n setsmtp(result.UserRolePermissions.SMTP)\r\n setchallan(result.UserRolePermissions.Challan)\r\n setusermanagement(result.UserRolePermissions.UserManagement)\r\n setrolemanagement(result.UserRolePermissions.RoleManagement)\r\n setadduser(result.UserRolePermissions.AddUser)\r\n seteditdeleteuser(result.UserRolePermissions.EditDeleteUser)\r\n setaddrole(result.UserRolePermissions.AddRole)\r\n seteditdeleterole(result.UserRolePermissions.EditDeleteRole)\r\n setchangepassword(result.UserRolePermissions.ChangePassword)\r\n setDeleteViolationLogs(result.UserRolePermissions.DeleteViolations)\r\n \r\n\r\n }\r\n },\r\n (error) => {\r\n //console.log(error);\r\n \r\n }\r\n )}\r\n \r\n getData()\r\n }\r\n },\r\n \r\n [selectedUserroleVal])\r\n\r\n\r\n const SaveRolePermissions = () => {\r\n // useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SaveRolePermissions\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserRoleID\": selectedUserroleVal,\r\n \"IsRoleDeleted\": false,\r\n \"EditViolations\": editviolationlogs,\r\n \"VehicleCount\": vehiclecount,\r\n \"RegisterDevice\": registerdevice,\r\n \"RegisterVehicle\": registervehicle,\r\n \"SMTP\": smtp,\r\n \"Challan\": challan,\r\n \"UserManagement\": usermanagement,\r\n \"RoleManagement\": rolemanagement,\r\n \"AddUser\": adduser,\r\n \"AddRole\": addrole,\r\n \"EditDeleteUser\": editdeleteuser,\r\n \"EditDeleteRole\": editdeleterole,\r\n \"ChangePassword\": changepassword,\r\n \"DeleteViolations\": deleteviolationlogs,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\") \r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n console.log(result.RowsAffected)\r\n if(result.RowsAffected > 0)\r\n {\r\n console.log(result)\r\n setAlert (\r\n setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n > \r\n \r\n )\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if(result.UserRolePermissions != undefined)\r\n {\r\n debugger;\r\n //sessionStorage.setItem(\"UserRolePermissions\",JSON.stringify(result.UserRolePermissions))\r\n window.location.reload(false);\r\n }\r\n }\r\n else{\r\n setAlert (\r\n setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n Unable to save changes..\r\n \r\n )\r\n }\r\n }\r\n },\r\n (error) => {\r\n \r\n }\r\n )\r\n \r\n }\r\n const DeleteRole = () => {\r\n setAlert (\r\n setAlert(null)}\r\n title=\"Do you want to delete this role?\"\r\n onConfirm={() => funDelete()}\r\n confirmBtnBsStyle=\"warning\"\r\n cancelBtnText=\"cancel\"\r\n cancelBtnBsStyle=\"info\"\r\n > \r\n \r\n )\r\n\r\n const funDelete=()=>{\r\n setAlert(null);\r\n // UserValidated\r\n fetch(apiEndpoint+\"/DeleteUserRole\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intUserRoleID\": selectedUserroleVal,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n console.log(result.RowsAffected)\r\n if(result.RowsAffected > 0)\r\n {\r\n setAlert (\r\n setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n > \r\n \r\n )\r\n\r\n // UserValidated\r\n const url = apiEndpoint+'/GetUserRoles';\r\n fetch(url,\r\n {\r\n \r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n }) \r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.UserRoleList != undefined) {\r\n setUserroleItems(JSON.parse(result.UserRoleList));\r\n var UserRoleList = JSON.parse(result.UserRoleList);\r\n if(UserRoleList[0]!=null){\r\n setSelectedUserroleItem(UserRoleList[0]);\r\n setUserroleSelected(UserRoleList[0].value);\r\n }\r\n }\r\n }\r\n },\r\n\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n else{\r\n setAlert (\r\n setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n Unable to delete this role..\r\n \r\n )\r\n }\r\n }\r\n }\r\n \r\n \r\n )\r\n }\r\n }\r\n const AddNewRole=()=>{\r\nvar roleName=document.getElementById(\"roleName\").value;\r\nif(checkName(roleName)){\r\n // UserValidated\r\nfetch(apiEndpoint+\"/AddNewUserRole\",\r\n{\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserRoleName\": roleName,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n})\r\n.then(res => res.json())\r\n.then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n console.log(result.RowsAffected)\r\n if(result.RowsAffected > 0)\r\n {\r\n setModalIsOpen(false)\r\n setbasic(true); \r\n // UserValidated \r\n const url = apiEndpoint+'/GetUserRoles';\r\n fetch(url,\r\n \r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n \r\n \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.UserRoleList != undefined) {\r\n setUserroleItems(JSON.parse(result.UserRoleList));\r\n var UserRoleList = JSON.parse(result.UserRoleList);\r\n if(UserRoleList[0]!=null){\r\n setSelectedUserroleItem(UserRoleList[0]);\r\n setUserroleSelected(UserRoleList[0].value);\r\n }\r\n }\r\n }\r\n },\r\n \r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n setAlertModal(null)\r\n }\r\n else{\r\n setAlertModal (\r\n setAlertModal(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n Unable to add user role..\r\n \r\n )\r\n }\r\n }\r\n },\r\n (error) => {\r\n }\r\n)\r\n}\r\n\r\n }\r\n const breadcrumbItems = [\r\n ]\r\n\r\n \r\n \r\n useEffect(() => {\r\n props.setBreadcrumbItems('User Roles', breadcrumbItems)\r\n \r\n })\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n Indus | User Roles\r\n \r\n

\r\n
Select Role
\r\n \r\n {alertmsg }\r\n {alertModal} \r\n \r\n \r\n {addroleaccess &&\r\n \r\n {\" \"}\r\n \r\n}\r\n
\r\n

\r\n \r\n \r\n

\r\n {editdeleteroleaccess &&\r\n \r\n
User Role Permissions
\r\n \r\n \r\n \r\n \r\n
Violations and Vehicle Count
\r\n

\r\n \r\n \r\n
\r\n seteditviolationlogs(event.target.checked)}\r\n />\r\n \r\n
Edit Violation Logs
\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n setDeleteViolationLogs(event.target.checked)}\r\n />\r\n \r\n
Delete Violation Logs
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setvehiclecount(event.target.checked)}\r\n />\r\n \r\n
Vehicle Count
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
Settings
\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n setregisterdevice(event.target.checked)}\r\n />\r\n \r\n
Register Device
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setregistervehicle(event.target.checked)}\r\n />\r\n \r\n
Register Vehicle
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n setsmtp(event.target.checked)}\r\n />\r\n \r\n
Email and SMS Access
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n setchallan(event.target.checked)}\r\n />\r\n \r\n
Challan
\r\n \r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n
User/Role Management
\r\n\r\n

\r\n \r\n
\r\n setusermanagement(event.target.checked)}\r\n />\r\n \r\n
User Management
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setadduser(event.target.checked)}\r\n />\r\n \r\n
Add User
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n seteditdeleteuser(event.target.checked)}\r\n />\r\n \r\n
Edit / Delete User
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setrolemanagement(event.target.checked)}\r\n />\r\n \r\n
Role Management
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setaddrole(event.target.checked)}\r\n />\r\n \r\n
Add Role
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n seteditdeleterole(event.target.checked)}\r\n />\r\n \r\n
Edit / Delete Role
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n setchangepassword(event.target.checked)}\r\n />\r\n \r\n
Change Password
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n}\r\n\r\n\r\n{editdeleteroleaccess &&\r\n \r\n\r\n\r\n \r\n \r\n {\" \"}\r\n \r\n \r\n {\" \"}\r\n \r\n \r\n}\r\n
\r\n \r\n \r\n Add New Role\r\n \r\n \r\n \r\n {alertModal} \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n {basic ? (\r\n {\r\n setAlert(null)\r\n setbasic(false)\r\n }}\r\n confirmBtnBsStyle=\"info\"\r\n > \r\n \r\n\r\n ) : null}\r\n
\r\n )\r\n}\r\n\r\nexport default connect(null, { setBreadcrumbItems })(UserRoles);\r\n","import React, { useEffect, useState, useContext, Component } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport moment from \"moment\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport Select from \"react-select\";\r\nimport { default as ReactSelect } from \"react-select\";\r\nimport { components } from \"react-select\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\n\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n Dropdown,\r\n } from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { isEmpty, isUndefined } from \"lodash\";\r\nimport {AllUsersListContext} from \"components/Common/PageDataContext\";\r\n\r\n //Style\r\n const btnstylesObj = {\r\n \"marginTop\": '3rem',\r\n };\r\n\r\n const Option = (props) => {\r\n return (\r\n
\r\n \r\n null}\r\n />{\" \"}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const UserRegistratinoModalComponent = (props) => {\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n\r\n // User Details\r\n const [FirstName, setFirstName] = useState(false);\r\n const [LastName, setLastName] = useState(false);\r\n const [EmailID, setEmailID] = useState(false);\r\n const [MobileNumber, setMobileNumber] = useState(false);\r\n \r\n // Login Details\r\n const [UserName, setUserName] = useState(false);\r\n const [Password, setPassword] = useState(false);\r\n const [ConfirmPassword, setConfirmPassword] = useState(false);\r\n\r\n // Access Details - Email, SMS & End of the day Mail\r\n const [SendMail, setSendMail] = useState(true);\r\n const [SendSMS, setSendSMS] = useState(true);\r\n const [SendEodMail, setSendEodMail] = useState(true);\r\n\r\n // Access Details - User Role Dropdown\r\n const [Userroleitems, setUserroleItems] = useState([]);\r\n const [SelectedUserroleitem, setSelectedUserroleItem] = useState([]);\r\n const [selectedUserroleVal, setUserroleSelected] = useState();\r\n\r\n // Access Details - Campus Dropdown\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState({});\r\n\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const { usersData, setUsersData } = useContext(AllUsersListContext);\r\n\r\n \r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n // get Campus List\r\n useEffect(() => {\r\n \r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.CampusList != undefined) {\r\n setCampusItems(JSON.parse(result.CampusList));\r\n // var campuslst = JSON.parse(result.CampusList);\r\n // setSelectedCampusItem(campuslst[0]);\r\n // setCampusSelected(campuslst[0].value);\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetAllUserRoles\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setUserroleItems(JSON.parse(result.UserRoleList));\r\n var UserRoleList = JSON.parse(result.UserRoleList);\r\n setSelectedUserroleItem(UserRoleList[0]);\r\n setUserroleSelected(UserRoleList[0].value);\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [])\r\n\r\n // Access Details - Location Dropdown\r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState({});\r\n \r\n const toggle = () => {\r\n setAlert(null);\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n\r\n // User Role Change Event\r\n const changeUserroleSelectHandler = (event) => {\r\n setSelectedUserroleItem(event);\r\n setUserroleSelected(event.value);\r\n };\r\n\r\n // Campus Change Event\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event);\r\n //console.log(JSON.stringify({event}));\r\n\r\n if(JSON.stringify({event}).length > 0){\r\n\r\n // Does not require token to authenticate\r\n fetch(apiEndpoint+\"/GetUserLocationList\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({event})\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if (result.Locations != undefined) {\r\n // var locArr = JSON.parse(result.Locations);\r\n // locArr.push({ \"value\": 0, \"label\": \"All\" })\r\n // setLocItems(locArr);\r\n setLocItems(JSON.parse(result.Locations));\r\n // var loclst = JSON.parse(result.Locations);\r\n // setSelectedLocItem(loclst[0]);\r\n // setLocSelected(loclst[0].value);\r\n \r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }\r\n else{\r\n setLocItems(null);\r\n }\r\n\r\n };\r\n\r\n // Location Change Event\r\n const changeLocSelectHandler = (event) => {\r\n setSelectedLocItem(event);\r\n setLocSelected(event);\r\n };\r\n\r\n // check first, last name\r\n const checkName = (name) => {\r\n const validRegExp = new RegExp(\r\n '^[A-Za-z]+$'\r\n );\r\n if(validRegExp.test(name) && name.length >= 3 && name.length <= 16){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n // check email\r\n const checkEmailID = (email) => {\r\n const validRegExp = new RegExp(\r\n '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'\r\n );\r\n if(validRegExp.test(email)){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n // check MobileNumber\r\n const checkMobileNumber = (MobileNumber) => {\r\n const validRegExp = new RegExp(\r\n '^[0-9]{10}$'\r\n );\r\n if(validRegExp.test(MobileNumber)){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n // check UserName\r\n const checkUserName = (username) => {\r\n const validRegExp = new RegExp(\r\n '^[a-zA-Z0-9_.-]*$'\r\n );\r\n if(validRegExp.test(username) && username.length >= 5 && username.length <= 16){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n // check Password & Confirm Password\r\n const checkPasswords = (password,confirmPassword) => {\r\n const validRegExp = new RegExp(\r\n '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$'\r\n );\r\n if(validRegExp.test(password) && validRegExp.test(confirmPassword) \r\n && password.length >= 7 && password.length <= 15 \r\n && confirmPassword.length >= 7 && confirmPassword.length <= 15\r\n && password == confirmPassword){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n const saveButton = () => {\r\n // console.log(JSON.stringify({selectedCampusVal}))\r\n // console.log(JSON.stringify({selectedLocVal}))\r\n // console.log(JSON.stringify({SelectedUserroleitem}))\r\n // console.log(checkName(FirstName))\r\n // console.log(checkName(LastName))\r\n // console.log(checkEmailID(EmailID))\r\n // console.log(checkMobileNumber(MobileNumber))\r\n // console.log(checkUserName(UserName))\r\n // console.log(checkPasswords(Password,ConfirmPassword))\r\n\r\n // console.log(typeof(SendMail))\r\n // console.log(SendSMS)\r\n // console.log(SendEodMail)\r\n\r\n // const [SendMail, setSendMail] = useState(true);\r\n // const [SendSMS, setSendSMS] = useState(true);\r\n // const [SendEodMail, setSendEodMail] = useState(true);\r\n\r\n if( (isUndefined(selectedCampusVal.length) || selectedCampusVal.length == 0) \r\n && (isUndefined(selectedLocVal.length) || selectedLocVal.length == 0) ){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one campus & location from dropdown!\r\n \r\n )\r\n }\r\n else{\r\n if(isUndefined(selectedCampusVal.length) || selectedCampusVal.length == 0){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one campus from dropdown!\r\n \r\n )\r\n }\r\n \r\n if(isUndefined(selectedLocVal.length) || selectedLocVal.length == 0){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one location from dropdown!\r\n \r\n )\r\n }\r\n }\r\n\r\n \r\n\r\n if(selectedCampusVal.length > 0 && selectedLocVal.length > 0 \r\n && checkName(FirstName) && checkName(LastName) \r\n && checkEmailID(EmailID) && checkMobileNumber(MobileNumber) \r\n && checkUserName(UserName) && checkPasswords(Password,ConfirmPassword)){\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/SaveUserDetails\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserName\": UserName,\r\n \"Password\": Password,\r\n \"UserFullName\": FirstName + \" \" + LastName,\r\n \"UserEmail\": EmailID,\r\n \"UserContactNumber\": MobileNumber,\r\n \"SelectedUserroleitem\": SelectedUserroleitem,\r\n \"selectedCampusVal\": selectedCampusVal,\r\n \"selectedLocVal\": selectedLocVal,\r\n \"SendMail\":SendMail,\r\n \"SendSMS\": SendSMS,\r\n \"SendEoDMail\":SendEodMail,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setUsersData(result.NewData)\r\n setAlert (\r\n setAlert(null)}\r\n onConfirm={() => toggle()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else{\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {modalIsOpen==true}\r\n \r\n \r\n {/* \r\n User Details\r\n */}\r\n \r\n \r\n {alertmsg}\r\n

New User Registration

\r\n \r\n\r\n \r\n \r\n setFirstName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your first name'},\r\n pattern: {value: '^[A-Za-z]+$', errorMessage: 'Your first name must be composed only with letters'},\r\n minLength: {value: 3, errorMessage: 'Your first name must be between 3 and 16 characters'},\r\n maxLength: {value: 16, errorMessage: 'Your first name must be between 3 and 16 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setLastName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your last name'},\r\n pattern: {value: '^[A-Za-z]+$', errorMessage: 'Your last name must be composed only with letters'},\r\n minLength: {value: 3, errorMessage: 'Your last name must be between 3 and 16 characters'},\r\n maxLength: {value: 16, errorMessage: 'Your last name must be between 3 and 16 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setEmailID(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your email id'},\r\n //pattern: {value: '^[a-zA-Z0-9+_\\.-]+@[a-zA-Z0-9.-]+$', errorMessage: 'Invalid email id entered'}\r\n email:{value: '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$', errorMessage: 'Invalid email id entered'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setMobileNumber(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your mobile number'},\r\n pattern: {value: '^[0-9]{10}$', errorMessage: 'Your mobile number must have only 10 digits'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n
\r\n\r\n

Access Details

\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendMail(event.target.checked)}\r\n />\r\n \r\n Email\r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendSMS(event.target.checked)}\r\n />\r\n \r\n SMS\r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendEodMail(event.target.checked)}\r\n />\r\n \r\n EOD\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n {/* */}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n

Login Details

\r\n \r\n\r\n \r\n \r\n setUserName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter user name'},\r\n pattern: {value: '^[a-zA-Z0-9_.-]*$', errorMessage: 'User name must be composed only with letters & digits'},\r\n minLength: {value: 5, errorMessage: 'User name must be between 5 and 16 characters'},\r\n maxLength: {value: 16, errorMessage: 'User name must be between 5 and 16 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setConfirmPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'},\r\n match: {value: 'Password', errorMessage: 'Password does not match'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Close\r\n \r\n \r\n {/* Submit */}\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n )\r\n \r\n };\r\n\r\n export default UserRegistratinoModalComponent;","import React, { useEffect, useState, useContext, Component } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n Dropdown,\r\n } from \"reactstrap\"\r\nimport {AllUsersListContext} from \"components/Common/PageDataContext\";\r\nimport { useHistory } from 'react-router-dom';\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nconst DeleteUserModalComponent = (props) => {\r\n\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const { usersData, setUsersData } = useContext(AllUsersListContext);\r\n const [editdeleteuser, seteditdeleteuser] = useState();\r\n let history = useHistory(); //Style for modal\r\n const styleModal = {\r\n \"position\": 'absolute',\r\n \"top\": '40%',\r\n \"left\": '50%',\r\n \"transform\": 'translate(-50%, -50%)',\r\n \"maxWidth\": '40%',\r\n };\r\n\r\n const toggle = () => {\r\n setAlert(null);\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n useEffect(() => {\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n seteditdeleteuser(UserPermissions.EditDeleteUser)\r\n },[])\r\n const SessionExpired = () => {\r\n console.log(\"SessionExpired Called\");\r\n // sessionStorage.removeItem(\"authUser\")\r\n sessionStorage.removeItem(\"userFullName\")\r\n sessionStorage.removeItem(\"Clear_AuthUser\")\r\n sessionStorage.removeItem(\"GetToChange\")\r\n setAlert(null)\r\n history.push('/');\r\n }\r\n\r\n const userDelete = () => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/DeleteUserDetails\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserID\": props.UserData.UserID,\r\n \"UserName\": props.UserData.UserName,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setAlert (\r\n toggle()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n \r\n let newdata = usersData.slice();\r\n var elindex=newdata.findIndex(someobject => someobject.UserID == props.UserData.UserID);\r\n //delete newdata[elindex];\r\n newdata.splice(elindex, 1);\r\n setUsersData(newdata);\r\n }\r\n else{\r\n if(result.Message == \"Session Expired! Please login again and delete user!\"){\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {/* */}\r\n \r\n {modalIsOpen==true}\r\n {alertmsg}\r\n \r\n \r\n \r\n\r\n \r\n

Are you sure you want to delete user with username \"{props.UserData.UserName}\"?

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n No, cancel!\r\n \r\n \r\n \r\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 DeleteUserModalComponent;","import React, { useEffect, useState, useContext, Component } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n Dropdown,\r\n } from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { default as ReactSelect } from \"react-select\";\r\nimport Select from \"react-select\";\r\nimport { components } from \"react-select\";\r\nimport { isEmpty, isUndefined } from \"lodash\";\r\nimport {AllUsersListContext} from \"components/Common/PageDataContext\";\r\n\r\n //Style\r\n const btnstylesObj = {\r\n \"marginTop\": '3rem',\r\n };\r\n\r\n const Option = (props) => {\r\n return (\r\n
\r\n \r\n null}\r\n />{\" \"}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\nconst EditUserModalComponent = (props) => {\r\n\r\n const [nameArr, setnameArr] = useState([]);\r\n\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const { usersData, setUsersData } = useContext(AllUsersListContext);\r\n\r\n // User Details\r\n const [FirstName, setFirstName] = useState(false);\r\n const [LastName, setLastName] = useState(false);\r\n const [EmailID, setEmailID] = useState(false);\r\n const [MobileNumber, setMobileNumber] = useState(false);\r\n\r\n // Access Details - Email, SMS & End of the day Mail\r\n const [SendMail, setSendMail] = useState(true);\r\n const [SendSMS, setSendSMS] = useState(true);\r\n const [SendEodMail, setSendEodMail] = useState(true);\r\n\r\n // Access Details - User Role Dropdown\r\n const [Userroleitems, setUserroleItems] = useState([]);\r\n const [SelectedUserroleitem, setSelectedUserroleItem] = useState([]);\r\n const [selectedUserroleVal, setUserroleSelected] = useState();\r\n\r\n // Access Details - Campus Dropdown\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState({});\r\n\r\n // Access Details - Location Dropdown\r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState({});\r\n const [UserData, setUserData] = useState({});\r\n\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n // get Campus List\r\n useEffect(() => {\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetUserDetails\",\r\n {\r\n method: 'POST',\r\n \r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"UserID\": props.UserID\r\n })\r\n }).then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //if(result.UserData!=undefined)\r\n setUserData(result.UserData)\r\n console.log(UserData)\r\n console.log(props.UserData)\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetSpecificUsersCampusAndLocation\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"UserID\": props.UserID\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.selectedCampusList != undefined) {\r\n setCampusItems(JSON.parse(result.availableCampusList));\r\n setLocItems(JSON.parse(result.availableLocationList));\r\n \r\n setCampusSelected(JSON.parse(result.selectedCampusList));\r\n setLocSelected(JSON.parse(result.selectedLocationList));\r\n }\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n \r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetAllUserRoles\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.UserRoleList != undefined) {\r\n setUserroleItems(JSON.parse(result.UserRoleList));\r\n var UserRoleList = JSON.parse(result.UserRoleList);\r\n // setSelectedUserroleItem(UserRoleList[0]);\r\n // setUserroleSelected(UserRoleList[0].value);\r\n\r\n setSelectedUserroleItem({value:result.userRoleDetails.UserRoleID,label:result.userRoleDetails.UserRole});\r\n setUserroleSelected(parseInt(result.userRoleDetails.UserRoleID));\r\n console.log(result.userRoleDetails.UserRoleID)\r\n }\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n setSelectedUserroleItem({value:UserData.UserRoleID,label:UserData.UserRole});\r\n setUserroleSelected(parseInt( UserData.UserRoleID));\r\n\r\n \r\n }, [])\r\n\r\n const toggle = () => {\r\n setFirstName(UserData.UserFullName.split(\" \")[0]);\r\n setLastName(UserData.UserFullName.split(\" \")[1]);\r\n setEmailID(UserData.UserEmail);\r\n setMobileNumber(UserData.UserContactNumber);\r\n\r\n setSendMail(UserData.SendMail);\r\n setSendSMS(UserData.SendSMS);\r\n setSendEodMail(UserData.SendEoDMail);\r\n\r\n setAlert(null);\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n\r\n const ToggleAndRefresh = () =>{\r\n toggle();\r\n window.location.reload(false)\r\n }\r\n\r\n // User Role Change Event\r\n const changeUserroleSelectHandler = (event) => {\r\n setSelectedUserroleItem(event);\r\n setUserroleSelected(event.value);\r\n };\r\n\r\n // Campus Change Event\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event);\r\n //console.log(JSON.stringify({event}));\r\n \r\n if(JSON.stringify({event}).length > 0){\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetUserSpecificLocationDetails\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"UserID\": UserData.UserID,\r\n \"selectedCampusVal\":event\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.availableLocationList != undefined) {\r\n setLocItems(JSON.parse(result.availableLocationList));\r\n // set selected location items\r\n setLocSelected(JSON.parse(result.selectedLocationList));\r\n }\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n \r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }\r\n else{\r\n setLocItems(null);\r\n }\r\n \r\n };\r\n \r\n // Location Change Event\r\n const changeLocSelectHandler = (event) => {\r\n setSelectedLocItem(event);\r\n setLocSelected(event);\r\n };\r\n\r\n // check first, last name\r\n const checkName = (name) => {\r\n const validRegExp = new RegExp(\r\n '^[A-Za-z]+$'\r\n );\r\n if(validRegExp.test(name) && name.length >= 3 && name.length <= 16){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n \r\n // check email\r\n const checkEmailID = (email) => {\r\n const validRegExp = new RegExp(\r\n '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'\r\n );\r\n if(validRegExp.test(email)){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n \r\n // check MobileNumber\r\n const checkMobileNumber = (MobileNumber) => {\r\n const validRegExp = new RegExp(\r\n '^[0-9]{10}$'\r\n );\r\n if(validRegExp.test(MobileNumber)){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n const saveButton = () => {\r\n // console.log(JSON.stringify({selectedCampusVal}))\r\n // console.log(JSON.stringify({selectedLocVal}))\r\n // console.log(JSON.stringify({SelectedUserroleitem}))\r\n\r\n // console.log(FirstName)\r\n // console.log(LastName)\r\n // console.log(EmailID)\r\n // console.log(MobileNumber)\r\n\r\n // console.log(SendMail)\r\n // console.log(SendSMS)\r\n // console.log(SendEodMail)\r\n if( (isUndefined(selectedCampusVal.length) || selectedCampusVal.length == 0) \r\n && (isUndefined(selectedLocVal.length) || selectedLocVal.length == 0) ){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one campus & location from dropdown!\r\n \r\n )\r\n }\r\n else{\r\n if(isUndefined(selectedCampusVal.length) || selectedCampusVal.length == 0){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one campus from dropdown!\r\n \r\n )\r\n }\r\n \r\n if(isUndefined(selectedLocVal.length) || selectedLocVal.length == 0){\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Please select atleast one location from dropdown!\r\n \r\n )\r\n }\r\n }\r\n\r\n if(selectedCampusVal.length > 0 && selectedLocVal.length > 0 \r\n && checkName(FirstName) && checkName(LastName) \r\n && checkEmailID(EmailID) && checkMobileNumber(MobileNumber)){\r\n // UserValidated \r\n fetch(apiEndpoint+\"/UpdateUserDetails\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserID\": UserData.UserID,\r\n \"UserFullName\": FirstName + \" \" + LastName,\r\n \"UserEmail\": EmailID,\r\n \"UserContactNumber\": MobileNumber,\r\n \"SelectedUserroleitem\": SelectedUserroleitem,\r\n \"selectedCampusVal\": selectedCampusVal,\r\n \"selectedLocVal\": selectedLocVal,\r\n \"SendMail\":SendMail,\r\n \"SendSMS\": SendSMS,\r\n \"SendEoDMail\":SendEodMail,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status)\r\n {\r\n setAlert (\r\n ToggleAndRefresh()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\" \r\n >\r\n {result.Message}\r\n \r\n )\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n \r\n // setUsersData(result.NewData)\r\n \r\n // window.location.reload(false)\r\n }\r\n else{\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n \r\n }\r\n\r\n return(\r\n <>\r\n {/* */}\r\n \r\n {modalIsOpen==true}\r\n \r\n\r\n \r\n \r\n {alertmsg}\r\n

Update User Details

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendMail(event.target.checked)}\r\n />\r\n \r\n Email\r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendSMS(event.target.checked)}\r\n />\r\n \r\n SMS\r\n \r\n \r\n \r\n\r\n \r\n \r\n setSendEodMail(event.target.checked)}\r\n />\r\n \r\n EOD\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n

User Details

\r\n \r\n\r\n \r\n \r\n setFirstName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your first name'},\r\n pattern: {value: '^[A-Za-z]+$', errorMessage: 'Your first name must be composed only with letters'},\r\n minLength: {value: 3, errorMessage: 'Your first name must be between 3 and 16 characters'},\r\n maxLength: {value: 16, errorMessage: 'Your first name must be between 3 and 16 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setLastName(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your last name'},\r\n pattern: {value: '^[A-Za-z]+$', errorMessage: 'Your last name must be composed only with letters'},\r\n minLength: {value: 3, errorMessage: 'Your last name must be between 3 and 16 characters'},\r\n maxLength: {value: 16, errorMessage: 'Your last name must be between 3 and 16 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setEmailID(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your email id'},\r\n //pattern: {value: '^[a-zA-Z0-9+_\\.-]+@[a-zA-Z0-9.-]+$', errorMessage: 'Invalid email id entered'}\r\n email:{value: '^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$', errorMessage: 'Invalid email id entered'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setMobileNumber(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter your mobile number'},\r\n pattern: {value: '^[0-9]{10}$', errorMessage: 'Your mobile number must have only 10 digits'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Close\r\n \r\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 EditUserModalComponent;","import React, { useEffect, useState, useContext, Component } from \"react\"\r\nimport { Link } from \"react-router-dom\";\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Button,\r\n ModalFooter,\r\n Dropdown,\r\n } from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { isEmpty, isUndefined } from \"lodash\";\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst ChangePasswordModalComponent = (props) => {\r\n\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const [Password, setPassword] = useState(false);\r\n const [ConfirmPassword, setConfirmPassword] = useState(false);\r\n let history = useHistory();\r\n\r\n const toggle = () => {\r\n setAlert(null);\r\n setModalIsOpen(!modalIsOpen)\r\n }\r\n \r\n const SessionExpired = () => {\r\n console.log(\"SessionExpired Called\");\r\n // sessionStorage.removeItem(\"authUser\")\r\n sessionStorage.removeItem(\"userFullName\")\r\n sessionStorage.removeItem(\"Clear_AuthUser\")\r\n sessionStorage.removeItem(\"GetToChange\")\r\n setAlert(null)\r\n history.push('/');\r\n }\r\n\r\n // check Password & Confirm Password\r\n const checkPasswords = (password,confirmPassword) => {\r\n const validRegExp = new RegExp(\r\n '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$'\r\n );\r\n if(validRegExp.test(password) && validRegExp.test(confirmPassword) \r\n && password.length >= 7 && password.length <= 15 \r\n && confirmPassword.length >= 7 && confirmPassword.length <= 15\r\n && password == confirmPassword){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n const saveButton = () => {\r\n if(checkPasswords(Password,ConfirmPassword)){\r\n // UserValidated\r\n fetch(apiEndpoint + \"/UserChangePassword\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"UserID\": props.UserData.UserID,\r\n \"Password\": Password,\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n setAlert (\r\n setAlert(null)}\r\n onConfirm={() => toggle()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else{\r\n if(result.Message == \"Session Expired! Please login again and change user password!\"){\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n }\r\n\r\n return(\r\n <>\r\n {/* */}\r\n \r\n {modalIsOpen==true}\r\n \r\n \r\n \r\n {alertmsg}\r\n

Change Password

\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n setPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n \r\n setConfirmPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'},\r\n match: {value: 'Password', errorMessage: 'Password does not match'}\r\n }}\r\n required\r\n />\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n Close\r\n \r\n \r\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 ChangePasswordModalComponent;","import React, { useEffect, useState,useRef } from \"react\"\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\n\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Modal,\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\nimport ReactToPrint from \"react-to-print\";\r\nconst { SearchBar } = Search;\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\n\r\nimport ViewImageModalComponent from '../ViolationLogs/ViewImageModal';\r\nimport EditViolationModalComponent from '../ViolationLogs/EditViolationModal'\r\nimport { ReportType, SearchData, SpeedType } from '../ViolationLogs/ViolationLogsComponents';\r\n\r\nimport {AllUsersListContext} from \"components/Common/PageDataContext\";\r\n\r\nimport UserRegistratinoModalComponent from './UserRegistration';\r\nimport DeleteUserModalComponent from \"./DeleteUser\";\r\nimport EditUserModalComponent from \"./EditUser\";\r\nimport ChangePasswordModalComponent from \"./ChangePassword\";\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nimport Login from \"../Authentication/Login\"\r\nimport { authRoutes } from \"routes/allRoutes\";\r\nimport $ from 'jquery'; \r\n//Style\r\nconst btnstylesObj = {\r\n \"marginTop\": '2rem',\r\n};\r\n\r\n // This is custom csv export component\r\n const ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n };\r\n\r\nconst UsersTables = (props) => {\r\n //Print function\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n\r\n const [FromSpeed, setFrmSpeed] = useState(20);\r\n const [ToSpeed, setToSpeed] = useState(100);\r\n const [BoolANPR, setANPR] = useState(true);\r\n\r\n const [selectedReportTypeVal, setReportType] = useState(1);\r\n const [selectedSpeedTypeVal, setSpeedType] = useState(1);\r\n\r\n const [adduser, setadduser] = useState();\r\n const [changepassword, setchangepassword] = useState();\r\n const [editdeleteuser, seteditdeleteuser] = useState();\r\n const SessionExpired = () => {\r\n console.log(\"SessionExpired Called\");\r\n // need to redirect to login page\r\n // working on it\r\n }\r\n\r\n const breadcrumbItems = [\r\n { title: \"User Management\", link: \"/UserManagement\" },\r\n ]\r\n const [usersData, setUsersData] = useState([]);\r\n const Contextvalue = { usersData, setUsersData };\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const columns = [\r\n {\r\n dataField: \"UserID\",\r\n text: \"UserID\",\r\n hidden: true\r\n },\r\n \r\n {\r\n dataField: \"UserRole\",\r\n text: \"User Role\",\r\n sort: true\r\n },\r\n {\r\n dataField: \"UserName\",\r\n text: \"User Name\",\r\n sort: true\r\n },\r\n \r\n {\r\n dataField: \"UserFullName\",\r\n text: \"Full Name\",\r\n sort: true\r\n },\r\n \r\n {\r\n dataField: \"UserEmail\",\r\n text: \"Email ID\",\r\n },\r\n {\r\n dataField: \"UserContactNumber\",\r\n text: \"Contact\",\r\n sort: true\r\n },\r\n {\r\n dataField: \"UserRegistrationDate\",\r\n text: \"Registration Date\",\r\n },\r\n \r\n {\r\n dataField: \"UserID\",\r\n text: \"Edit\",\r\n csvExport: false,\r\n sort: false,\r\n formatter: (value, row) => \r\n ( \r\n \r\n \r\n \r\n ),\r\n hidden: !editdeleteuser\r\n }, \r\n \r\n {\r\n // dataField: \"SendMail\",\r\n text: \"Change Password\",\r\n csvExport: false,\r\n sort: false,\r\n formatter: (value, row) => (\r\n \r\n ),\r\n hidden: !changepassword\r\n },\r\n {\r\n // dataField: \"SendSMS\",\r\n text: \"Delete\",\r\n csvExport: false,\r\n sort: false,\r\n formatter: (value, row) => (\r\n \r\n \r\n \r\n ),\r\n hidden: !editdeleteuser\r\n },\r\n {\r\n dataField: \"UserRoleID\",\r\n \r\n hidden:true\r\n },\r\n ]\r\n const custompagination = paginationFactory({\r\n page: 1,\r\n alwaysShowAllBtns: true,\r\n showTotal: true,\r\n withFirstAndLast: false,\r\n sizePerPageRenderer: ({ options, currSizePerPage, onSizePerPageChange }) => (\r\n
\r\n \r\n
\r\n )\r\n });\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n useEffect(() => {\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n\r\n setadduser(UserPermissions.AddUser)\r\n seteditdeleteuser(UserPermissions.EditDeleteUser)\r\n setchangepassword(UserPermissions.ChangePassword)\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetAllUserList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if(result!=undefined)\r\n {\r\n if(result.status){\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if(JSON.parse(result.Users).length>0)\r\n setUsersData(JSON.parse(result.Users));\r\n else\r\n setUsersData([]);\r\n }\r\n else{\r\n setAlert (\r\n SessionExpired()}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n {result.Message}\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n \r\n }, [])\r\n\r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState();\r\n \r\n // this function will copy to clipboard an entire table,\r\n // so you can paste it inside an excel or csv file\r\n const copyToClipboardAsTable = el => {\r\n var body = document.body,\r\n range,\r\n sel;\r\n if (document.createRange && window.getSelection) {\r\n range = document.createRange();\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n try {\r\n range.selectNodeContents(el);\r\n sel.addRange(range);\r\n } catch (e) {\r\n range.selectNode(el);\r\n sel.addRange(range);\r\n }\r\n document.execCommand(\"copy\");\r\n } else if (body.createTextRange) {\r\n range = body.createTextRange();\r\n range.moveToElementText(el);\r\n range.select();\r\n range.execCommand(\"Copy\");\r\n }\r\n\r\n setAlert (\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Copied to clipboard!\r\n \r\n )\r\n }\r\n useEffect(() => {\r\n props.setBreadcrumbItems('User Management', breadcrumbItems);\r\n //SearchViolations();\r\n })\r\n return (\r\n \r\n\r\n \r\n Indus | User Management\r\n \r\n \r\n

\r\n \r\n {adduser &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {alertmsg}\r\n \r\n {\r\n props => (\r\n
\r\n \r\n \r\n \r\n \r\n   \r\n \r\n copyToClipboardAsTable(\r\n document.getElementById(\"react-bs-table\")\r\n )\r\n }\r\n >\r\n Copy\r\n \r\n   \r\n (\r\n \r\n Print \r\n \r\n )}\r\n content={() => componentRef.current}\r\n />\r\n \r\n \r\n This will open a print page with the visible rows of the\r\n table.\r\n \r\n \r\n This will copy to your clipboard the visible rows of the\r\n table.\r\n \r\n \r\n This will download table data in csv file.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\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, { setBreadcrumbItems })(UsersTables);\r\n","import React, { useEffect, useState, useRef } from \"react\"\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport MetaTags from 'react-meta-tags';\r\nimport Select from \"react-select\";\r\nimport moment from \"moment\";\r\nimport {\r\n Col,\r\n Row,\r\n Card,\r\n CardBody,\r\n Button,\r\n ButtonGroup,\r\n UncontrolledTooltip,\r\n Spinner\r\n} from \"reactstrap\"\r\nimport { AvForm, AvField } from \"availity-reactstrap-validation\"\r\nimport { Link } from \"react-router-dom\";\r\nimport BootstrapTable from \"react-bootstrap-table-next\"\r\n// import 'assets/scss/custom/pages/common.scss';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.css';\r\nimport 'react-bootstrap-table2-paginator/dist/react-bootstrap-table2-paginator.min.css';\r\n\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\n//import ReactToPrint from \"react-to-print\";\r\nconst { SearchBar } = Search;\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\nimport { connect } from \"react-redux\";\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\n\r\nimport ViewImageModalComponent from './ViewImageModal';\r\nimport EditViolationModalComponent from './EditViolationModal'\r\nimport { ReportType, SearchData, SpeedType, ViolationType } from './ViolationLogsComponents';\r\n\r\nimport { ViolationsContext } from \"components/Common/PageDataContext\";\r\n\r\nimport getCurrentDate from \"components/Common/Utility\"\r\n\r\nimport jwt from \"jsonwebtoken\";\r\n\r\n//Style\r\nconst btnstylesObj = {\r\n \"margin-top\": '2rem',\r\n};\r\n\r\nconst btnRadiostylesObj = {\r\n \"margin-top\": '2.5rem',\r\n marginLeft:\"2%\"\r\n};\r\n\r\n\r\n// This is custom csv export component\r\nconst ExportCSV = (props) => {\r\n const handleClick = () => {\r\n props.onExport();\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst ViolationsReport = (props) => {\r\n //Print function\r\n const componentRef = useRef();\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n\r\n const [FromDtTm, setFrmDttm] = useState(moment().format(\"YYYY-MM-DD 00:00\"));\r\n const [ToDtTm, setToDttm] = useState(moment().format(\"YYYY-MM-DD HH:mm\"));\r\n const [Monthlyrt, setMonthlyrt] = useState(moment().format(\"YYYY-MM\"));\r\n\r\n const [FromSpeed, setFrmSpeed] = useState(20);\r\n const [ToSpeed, setToSpeed] = useState(100);\r\n const [BoolANPR, setANPR] = useState(true);\r\n const [RegisteredVehicleFlag, setRegisteredVehicleFlag] = useState(true);\r\n\r\n\r\n const [selectedReportTypeVal, setReportType] = useState(1);\r\n const [selectedSpeedTypeVal, setSpeedType] = useState(1);\r\n const [selectedViolationTypeVal, setViolationType] = useState(0);\r\n\r\n const [selectonLoadLocVal, setselectonLoadLocVal] = useState();\r\n\r\n const [editviolations, seteditviolations] = useState();\r\n\r\n const [speedLimit, setspeedLimit] = useState(true);\r\n const [vehicleOwner, setvehicleOwner] = useState(true);\r\n const [ownerEmail, setownerEmail] = useState(true);\r\n const [ownerNo, setownerNo] = useState(true);\r\n const [ownerDept, setownerDept] = useState(true);\r\n const [empID, setempID] = useState(true);\r\n const [violationFreq, setviolationFreq] = useState(true);\r\n\r\n const [violationsForExport, setviolationsForExport] = useState([]);\r\n const [headers, setheaders] = useState([]);\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n\r\n\r\n var today = new Date();\r\n var datefilename = getCurrentDate() + '_ViolationsReport.csv';\r\n\r\n const SearchViolations = () => {\r\n // useEffect(() => {\r\n setIsLoading(true);\r\n console.log(selectedViolationTypeVal)\r\n if (ToSpeed >= 1 && FromSpeed >= 1) {\r\n // UserValidated\r\n fetch(apiEndpoint + \"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,// 1,\r\n \"intLocationID\": selectedLocVal,//1,\r\n \"intReportType\": selectedReportTypeVal,//1,\r\n \"FromDtTm\": FromDtTm,\r\n \"ToDtTm\": ToDtTm,\r\n \"MonthlyRt\": Monthlyrt,\r\n \"intSpeedType\": selectedSpeedTypeVal,//1,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed,\r\n \"boolOnlyANPR\": BoolANPR,\r\n \"boolRegisteredVehicle\": RegisteredVehicleFlag,\r\n \"ViolationType\": selectedViolationTypeVal,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n if (JSON.parse(result.Violations).length > 0){\r\n setViolations(JSON.parse(result.Violations));\r\n setIsLoading(false);\r\n }\r\n else{\r\n setViolations([]);\r\n setIsLoading(false);\r\n\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n No data found!\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n\r\n }\r\n var dataArr = [];\r\n var headersArr = [];\r\n\r\n for (var i = 0; i < componentRef.current.table.props.columns.length; i++) {\r\n headersArr.push(componentRef.current.table.props.columns[i])\r\n }\r\n console.log(headersArr)\r\n if(violations!=null){\r\n \r\n for (var i = 0; i < violations.length; i++) {\r\n var arr=[];\r\n for (var k = 0; k {\r\n const unit = \"pt\";\r\n const size = \"A2\"; // Use A1, A2, A3 or A4\r\n const orientation = \"portrait\"; // portrait or landscape\r\n\r\n const marginLeft = 40;\r\n const doc = new jsPDF(orientation, unit, size);\r\n\r\n doc.setFontSize(14);\r\n // doc.autoTable({headStyles :{fillColor : [124, 95, 240]}, alternateRowStyles: {fillColor : [231, 215, 252]} }); \r\n const title = \"Violations Report\";\r\n // const headers = [[\"Record ID\",\"Campus Name\", \"Location Name\",\"Incident Time\",\"Type Of Violation\",\"Registration Number\",\"Speed of Offence\",\r\n // \"Speed Limit\",\"Employee ID\",\"Vehicle Owner\",\"Owner Contact\",\"Owner Email\",\"Owner Dept\"]];\r\n console.log(componentRef.current)\r\n const data1 = violations.map(log => [log.RecordID, log.CampusName, log.LocationName, log.IncidentTime,\r\n log.TypeOfViolation, log.RegistrationNumber, log.VehicleSpeed, log.SpeedLimit, log.EmployeeID,\r\n log.VehicleOwnerName, log.VehicleOwnerContact, log.VehicleOwnerEmailAddress, log.VehicleOwnerDept]);\r\n\r\n console.log(componentRef.current.table.props.columns)\r\n\r\n var headersArr = [];\r\n var dataArr = [];\r\n\r\n for (var i = 0; i < componentRef.current.table.props.columns.length; i++) {\r\n headersArr.push(componentRef.current.table.props.columns[i].text)\r\n }\r\n for (var i = 0; i < violations.length; i++) {\r\n var arr=[];\r\n for (var k = 0; k {\r\n debugger;\r\n const DisblePrintColumn = document.getElementById('DisbalePrint');\r\n if (DisblePrintCol) {\r\n DisablePrintColumn.style.display = \"none\";\r\n }\r\n\r\n }\r\n const breadcrumbItems = [\r\n\r\n // { title: \"Violation Logs\", link: \"/ViolationLogs\" },\r\n ]\r\n const [violations, setViolations] = useState([]);\r\n const Contextvalue = { violations, setViolations };\r\n const [alertmsg, setAlert] = useState([]);\r\n\r\n const columns = [\r\n {\r\n dataField: \"RecordID\",\r\n text: \"RecordID\",\r\n hidden: true,\r\n csvExport :false,\r\n },\r\n {\r\n dataField: \"CampusName\",\r\n text: \"Campus Name\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '125px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n\r\n {\r\n dataField: \"LocationName\",\r\n text: \"Location Name\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '120px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n\r\n {\r\n dataField: \"IncidentTime\",\r\n text: \"Incident Datetime\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '120px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"TypeOfViolation\",\r\n text: \"Event Type\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '90px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n\r\n\r\n },\r\n {\r\n dataField: \"RegistrationNumber\",\r\n text: \"Registration Number\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '140px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n // {\r\n // dataField: \"LaneNumber\",\r\n // text: \"Lane Number\",\r\n // sort: true\r\n // },\r\n {\r\n dataField: \"VehicleSpeed\",\r\n text: \"Speed of Offence\",\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '110px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"SpeedLimit\",\r\n text: \"Speed Limit\",\r\n hiddenWhenPrint: true,\r\n hidden: !speedLimit,\r\n csvExport: speedLimit,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '100px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n\r\n },\r\n {\r\n dataField: \"EmployeeID\",\r\n text: \"Employee ID\",\r\n hidden: !empID,\r\n csvExport : empID,\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '100px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"VehicleOwnerName\",\r\n text: \"Vehicle Owner\",\r\n hidden: !vehicleOwner,\r\n csvExport : vehicleOwner,\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '100px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"VehicleOwnerContact\",\r\n text: \"Owner Contact\",\r\n hidden: !ownerNo,\r\n csvExport: ownerNo,\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return {width: '110px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"VehicleOwnerEmailAddress\",\r\n text: \"Owner Email\",\r\n hidden: !ownerEmail,\r\n csvExport: ownerEmail,\r\n \r\n headerStyle: (colum, colIndex) => {\r\n return {width: '100px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"VehicleOwnerDept\",\r\n text: \"Owner Dept\",\r\n hidden: !ownerDept,\r\n csvExport: ownerDept,\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '100px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n {\r\n dataField: \"TotalViolationFrequency\",\r\n text: \"Violation Frequency\",\r\n hidden: !violationFreq,\r\n csvExport: violationFreq,\r\n sort: true,\r\n headerStyle: (colum, colIndex) => {\r\n return { width: '120px', textAlign: 'center', backgroundColor: '#5b626b', color:'white' };\r\n }\r\n },\r\n \r\n ]\r\n\r\n const custompagination = paginationFactory({\r\n page: 2,\r\n sizePerPage: 10,\r\n lastPageText: '>>',\r\n firstPageText: '<<',\r\n nextPageText: '>',\r\n prePageText: '<',\r\n showTotal: true,\r\n alwaysShowAllBtns: true,\r\n //all option for pagination\r\n paginationSize: 3,\r\n sizePerPageList: [{\r\n text: '10', value: 10\r\n },\r\n {\r\n text: '50', value: 50\r\n },\r\n {\r\n text: '100', value: 100\r\n }, {\r\n text: 'All', value: violations.length\r\n }],\r\n onPageChange: function (page, sizePerPage) {\r\n console.log('page', page);\r\n console.log('sizePerPage', sizePerPage);\r\n },\r\n onSizePerPageChange: function (page, sizePerPage) {\r\n console.log('page', page);\r\n console.log('sizePerPage', sizePerPage);\r\n }\r\n });\r\n const defaultSorted = [{\r\n dataField: 'IncidentTime',\r\n order: 'desc'\r\n }];\r\n\r\n // Note: the empty deps array [] means\r\n // this useEffect will run once\r\n // similar to componentDidMount()\r\n\r\n const ViolationLogsOnPageLoad = (LocValue) => {\r\n // UserValidated\r\n fetch(apiEndpoint + \"/GetViolationLogs\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n \"intCampusID\": selectedCampusVal,// 1,\r\n \"intLocationID\": LocValue,//1,\r\n \"intReportType\": selectedReportTypeVal,//1,\r\n \"FromDtTm\": FromDtTm,\r\n \"ToDtTm\": ToDtTm,\r\n \"MonthlyRt\": Monthlyrt,\r\n \"intSpeedType\": selectedSpeedTypeVal,//1,\r\n \"FromSpeed\": FromSpeed,\r\n \"ToSpeed\": ToSpeed,\r\n \"boolOnlyANPR\": BoolANPR,\r\n \"boolRegisteredVehicle\": RegisteredVehicleFlag,\r\n \"ViolationType\": selectedViolationTypeVal,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n if (JSON.parse(result.Violations).length > 0)\r\n setViolations(JSON.parse(result.Violations));\r\n else{\r\n setViolations([]);\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n No data found!\r\n \r\n )\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //setError(error);\r\n }\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n\r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\r\n // var UserPermissions = JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\r\n seteditviolations(UserPermissions.EditViolations)\r\n\r\n// UserValidated\r\nfetch(apiEndpoint+\"/GetLogCampusList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \r\n })\r\n }) .\r\n then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.CampusList != undefined) {\r\n setCampusItems(JSON.parse(result.CampusList));\r\n var campuslst = JSON.parse(result.CampusList);\r\n setSelectedCampusItem(campuslst[0]);\r\n setCampusSelected(campuslst[0].value);\r\n changeCampusSelectHandler(campuslst[0])\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n\r\n }, [])\r\n\r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState();\r\n\r\n\r\n useEffect(() => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint + \"/GetLogLocationList\",\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"intCampusID\":selectedCampusVal\r\n \r\n })\r\n }) \r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.Locations != undefined && result.Locations != 'null') {\r\n console.log(result.Locations)\r\n var locArr = JSON.parse(result.Locations);\r\n locArr.unshift({ \"value\": 0, \"label\": \"All\" })\r\n setLocItems(locArr);\r\n\r\n var loclst = locArr;\r\n setSelectedLocItem(loclst[0]);\r\n setLocSelected(loclst[0].value);\r\n setselectonLoadLocVal(loclst[0].value);\r\n ViolationLogsOnPageLoad(loclst[0].value);\r\n\r\n\r\n }\r\n else{\r\n var locArr=[];\r\n setLocItems(locArr);\r\n setSelectedLocItem();\r\n setLocSelected();\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }, [selectedCampusVal])\r\n\r\n const changeCampusSelectHandler = (event) => {\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n\r\n };\r\n\r\n const changeLocSelectHandler = (event) => {\r\n setSelectedLocItem(event);\r\n setLocSelected(event.value);\r\n\r\n\r\n\r\n };\r\n\r\n const changeReportTypeHandle = () => {\r\n debugger;\r\n\r\n\r\n }\r\n\r\n const changeFrmSpeedHandler = (value, ctx) => {\r\n if (value > parseInt(ToSpeed)) {\r\n return \"Enter Valid From Speed Value!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToSpeedHandler = (value, ctx) => {\r\n if (value < parseInt(FromSpeed)) {\r\n return \"Enter Valid To Speed Value!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeMonthHandler = (value, ctx) =>{\r\n debugger;\r\n let Year = value.split('-');\r\n if(Year[0] < 2020)\r\n {\r\n return \"No Data Available\";\r\n }\r\n console.log(value);\r\n \r\n return true; \r\n \r\n }\r\n\r\n const changeFrmDateHandler = (value, ctx) => {\r\n // console.log(value);\r\n if (value > ToDtTm) {\r\n return \"From date cannot be greater than To date!!!\";\r\n }\r\n return true;\r\n }\r\n\r\n const changeToDateHandler = (value, ctx) => {\r\n if (value < FromDtTm) {\r\n return \"To date cannot be lesser than From date!!!\";\r\n }\r\n return true;\r\n }\r\n\r\n\r\n //SearchViolations();\r\n\r\n // this function will copy to clipboard an entire table,\r\n // so you can paste it inside an excel or csv file\r\n const copyToClipboardAsTable = el => {\r\n var body = document.body,\r\n range,\r\n sel;\r\n if (document.createRange && window.getSelection) {\r\n range = document.createRange();\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n try {\r\n range.selectNodeContents(el);\r\n sel.addRange(range);\r\n } catch (e) {\r\n range.selectNode(el);\r\n sel.addRange(range);\r\n }\r\n document.execCommand(\"copy\");\r\n } else if (body.createTextRange) {\r\n range = body.createTextRange();\r\n range.moveToElementText(el);\r\n range.select();\r\n range.execCommand(\"Copy\");\r\n }\r\n\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n Copied to clipboard!\r\n \r\n )\r\n }\r\n useEffect(() => {\r\n props.setBreadcrumbItems('Violations Report', breadcrumbItems);\r\n // SearchViolations();\r\n })\r\n return (\r\n \r\n\r\n \r\n Indus | Violations Report\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setANPR(event.target.checked)}\r\n />\r\n ANPR\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n setRegisteredVehicleFlag(event.target.checked)}\r\n />\r\n \r\n Registered Vehicles\r\n \r\n \r\n \r\n \r\n Search\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n changeReportTypeHandle}\r\n >\r\n \r\n\r\n \r\n \r\n setMonthlyrt(event.target.value)}\r\n\r\n />\r\n \r\n \r\n\r\n\r\n \r\n \r\n setFrmDttm(event.target.value)}\r\n />\r\n {/* setFrmDttm(event.target.value)} /> */}\r\n \r\n \r\n\r\n \r\n setToDttm(event.target.value)}\r\n />\r\n {/* setToDttm(event.target.value)} /> */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setFrmSpeed(event.target.value)}\r\n />\r\n \r\n \r\n \r\n setToSpeed(event.target.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 setempID(event.target.checked)}\r\n />\r\n Employee ID\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n setvehicleOwner(event.target.checked)}\r\n />\r\n Vehicle Owner\r\n \r\n
\r\n \r\n \r\n
\r\n setownerNo(event.target.checked)}\r\n />\r\n Owner Contact\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n setownerEmail(event.target.checked)}\r\n />\r\n Owner Email\r\n \r\n
\r\n \r\n \r\n
\r\n

\r\n \r\n \r\n
\r\n setownerDept(event.target.checked)\r\n }\r\n />\r\n Owner Department\r\n \r\n
\r\n \r\n \r\n
\r\n setspeedLimit(event.target.checked)}\r\n />\r\n Speed Limit\r\n \r\n
\r\n \r\n \r\n
\r\n setviolationFreq(event.target.checked)}\r\n />\r\n Violation Frequency\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n {alertmsg\r\n }\r\n\r\n \r\n {\r\n props => (\r\n
\r\n \r\n \r\n \r\n \r\n   \r\n \r\n   \r\n \r\n copyToClipboardAsTable(\r\n document.getElementById(\"react-bs-table\")\r\n )\r\n }\r\n >\r\n Copy\r\n \r\n\r\n {/* (\r\n \r\n Print\r\n \r\n )}\r\n content={() => componentRef.current}\r\n documentTitle=\"ViolationLog\"\r\n\r\n\r\n /> */}\r\n \r\n {/* \r\n This will open a print page with the visible rows of the\r\n table.\r\n */}\r\n \r\n This will copy to your clipboard the visible rows of the\r\n table.\r\n \r\n \r\n This will download table data in csv file.\r\n \r\n \r\n This will download table data in pdf file.\r\n \r\n \r\n \r\n {isLoading ? (\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n

Loading Data Please Wait....

\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n):(
\r\n
)}\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n )\r\n }\r\n \r\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, { setBreadcrumbItems })(ViolationsReport);\r\n","import React from 'react';\r\nimport { apiEndpoint } from \"helpers/url_helper\";\r\n\r\nimport MetaTags from 'react-meta-tags';\r\n// import { Map, InfoWindow, Marker, GoogleApiWrapper } from \"google-maps-react\"\r\n\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n Col,\r\n Row,\r\n CardTitle,\r\n FormGroup,\r\n Form,\r\n Button,\r\n UncontrolledTooltip,\r\n CardSubtitle,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n ModalFooter,\r\n Alert,\r\n CardImg,\r\n\r\n\r\n} from \"reactstrap\"\r\n\r\nimport Select from \"react-select\";\r\nimport { Stage, Layer, RegularPolygon, Image, Line, Shape } from 'react-konva';\r\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\r\n\r\n\r\n\r\n//Import Action to copy breadcrumb items from local state to redux state\r\nimport { setBreadcrumbItems } from \"../../store/actions\";\r\nimport { useEffect } from 'react';\r\nimport { useState, useRef } from 'react';\r\nimport Base from 'antd/es/typography/Base';\r\n\r\n\r\n function AddDraggableZoneConfigDetails(props) {\r\n const POINT_CLICK_THRESHOLD = 10; // Adjust as needed\r\n\r\n const breadcrumbItems = [\r\n { title: \"Settings\", link: \"#\" },\r\n { title: \"Zone Configuration\", link: \"/ZoneConfig\" },\r\n ];\r\n \r\n useEffect(() => {\r\n props.setBreadcrumbItems('Zone Configuration', breadcrumbItems);\r\n })\r\n \r\n const [SelectedCampusValue, setSelectedCampusValue] = useState(1);\r\n const [CampsuList, setCampusList] = useState([]);\r\n const [modal_small, setmodal_small] = useState(false);\r\n \r\n const [basic, setbasic] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [Base64CompanyLogo, setBase64CompanyLogo] = useState();\r\n const [showChallanPreview, setShowChallanPreview] = useState(false);\r\n const [showZoneConfigImage, setShowZoneConfigImage] = useState(false);\r\n const [coordinates, setCoordinates] = useState({ x: 0, y: 0 });\r\n const [startCoordinates, setStartCoordinates] = useState(null);\r\n const [textBoxValue, setTextBoxValue] = useState('');\r\n const [polyCoordinates, setPolyCoordinates] = useState([]);\r\n const [circleCoordinates, setCircleCoordinates] = useState([]);\r\n const [alertmsg, setAlert] = useState();\r\n const [showSavedImage, setShowSavedImage] = useState();\r\n const [showUpdatedImage, setShowUpdatedImage] = useState(false);\r\n\r\n\r\n\r\n const [imageUrl, setImageUrl] = useState(null);\r\n\r\n const [coordinatesSaved, setCoordinatesSaved] = useState(false);\r\n\r\n \r\n\r\n const [Campusitems, setCampusItems] = useState([]);\r\n const [SelectedCampusitem, setSelectedCampusItem] = useState([]);\r\n const [selectedCampusVal, setCampusSelected] = useState();\r\n\r\n var EncodedLogo = '';\r\n\r\n const [selectedImage, setSelectedImage] = useState(null);\r\n\r\n\r\n const [image, setImage] = useState(null);\r\n const [imageLoaded, setImageLoaded] = useState(false);\r\n const [points, setPoints] = useState([]);\r\n const [isPolygonClosed, setIsPolygonClosed] = useState(false);\r\n const [showStartingPoint, setShowStartingPoint] = useState(false);\r\n const stageRef = useRef(null);\r\n\r\n \r\n\r\n\r\n\r\n\r\n const tog_small = () => {\r\n debugger;\r\n setmodal_small(!modal_small)\r\n document.body.classList.add(\"no_padding\")\r\n }\r\n \r\n // const PolyCoordinates = [\r\n // { x: 100, y: 10 },\r\n // { x: 170, y: 100 },\r\n // { x: 40, y: 90 },\r\n // {x:190, y:56}\r\n // ];\r\n useEffect(() => {\r\n\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogCampusList\",{\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n \r\n })\r\n\r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n //console.log(result);\r\n //console.log(JSON.parse(result.CampusList));\r\n if (result.CampusList != undefined) {\r\n setCampusItems(JSON.parse(result.CampusList));\r\n var campuslst = JSON.parse(result.CampusList);\r\n setSelectedCampusItem(campuslst[0]);\r\n setCampusSelected(campuslst[0].value);\r\n changeCampusSelectHandler(campuslst[0]);\r\n GetLocationList(campuslst[0].value);\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n \r\n }, [])\r\n \r\n const [Locitems, setLocItems] = useState([]);\r\n const [SelectedLocitem, setSelectedLocItem] = useState([]);\r\n const [selectedLocVal, setLocSelected] = useState();\r\n\r\n const GetLocationList= (CampusVal) => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+\"/GetLogLocationList\",\r\n {\r\n method:\"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n \"intCampusID\": CampusVal\r\n \r\n })\r\n \r\n })\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n debugger;\r\n if (result != undefined) {\r\n //sessionStorage.setItem(\"authUser\",JSON.stringify(result.strNewToken))\r\n if (result.Locations != undefined && result.Locations != \"null\") {\r\n debugger;\r\n var locArr = JSON.parse(result.Locations);\r\n locArr.push({ \"value\": 0, \"label\": \"All\" })\r\n setLocItems(locArr);\r\n \r\n var loclst = JSON.parse(result.Locations);\r\n setSelectedLocItem(loclst[0]);\r\n setLocSelected(loclst[0].value);\r\n GetZoneConfigDetails( CampusVal,loclst[0].value);\r\n\r\n \r\n }\r\n else{\r\n setLocItems();\r\n setSelectedLocItem();\r\n\r\n }\r\n }\r\n },\r\n // Note: it's important to handle errors here\r\n // instead of a catch() block so that we don't swallow\r\n // exceptions from actual bugs in components.\r\n (error) => {\r\n //console.log(error);\r\n // /setError(error);\r\n }\r\n )\r\n }\r\n\r\n\r\n\r\n const changeCampusSelectHandler = (event) => {\r\n debugger;\r\n setSelectedCampusItem(event);\r\n setCampusSelected(event.value);\r\n GetLocationList(event.value);\r\n \r\n };\r\n \r\n const changeLocSelectHandler = (event) => {\r\n debugger;\r\n setSelectedLocItem(event);\r\n setLocSelected(event.value);\r\n GetZoneConfigDetails( selectedCampusVal,event.value);\r\n \r\n \r\n };\r\n \r\n \r\n const [SelectedZoneSideItems, setSelectedZoneSideItems] = useState({value: 'RHS', label: 'RHS'});\r\n\r\n const ZoneSideItems = [\r\n { value: 'RHS', label: 'RHS' },\r\n { value: 'LHS', label: 'LHS' },\r\n // Add other options as needed\r\n ];\r\n \r\n const handleZoneSideChange = (selectedOption) => {\r\n setSelectedZoneSideItems(selectedOption);\r\n };\r\n const [SelectedTrafficDirection, setSelectedTrafficDirection] = useState({value: 'Incoming', label: 'Incoming'});\r\n\r\n const TrafficDirection = [\r\n { value: 'Incoming', label: 'Incoming' },\r\n { value: 'Outgoing', label: 'Outgoing' },\r\n // Add other options as needed\r\n ];\r\n \r\n const handleTrafficDirectionChange = (selectedOption) => {\r\n setSelectedTrafficDirection(selectedOption);\r\n };\r\n \r\n function ValidateCompanyLog(value) {\r\n debugger;\r\n const allowedTypes = ['jpeg', 'png','jpg', 'JPEG', 'PNG', 'JPG'];\r\n if(value != \"\")\r\n {\r\n \r\n const fileExtension = value.split('.').pop();\r\n \r\n if (!allowedTypes.includes(fileExtension)) {\r\n // Invalid file type\r\n // Set an error message or take appropriate action\r\n return \"Please choose Image File\";\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n const SelectCompanyLogo = (e) => {\r\n debugger;\r\n const allowedTypes = ['jpeg', 'png','jpg', 'JPEG', 'PNG', 'JPG'];\r\n let fileType = e.target.files[0].name.split('.');\r\n if(allowedTypes.includes(fileType[1]))\r\n {\r\n let files = e.target.files;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(files[0]);\r\n reader.onload = (e) => {\r\n debugger;\r\n \r\n\r\n \r\n setBase64CompanyLogo(e.target.result);\r\n console.log('image data: ', e.target.result);\r\n EncodedLogo = e.target.result;\r\n const img = new window.Image();\r\n img.src = EncodedLogo;\r\n img.width = 960; // Adjust width as needed\r\n img.height = 540;\r\n img.onload = () => {\r\n debugger;\r\n \r\n setSelectedImage(img);\r\n setImageLoaded(true);\r\n setPoints([]);\r\n setIsPolygonClosed(false);\r\n setImageUrl(URL.createObjectURL(files[0]));\r\n\r\n };\r\n \r\n }\r\n };\r\n \r\n \r\n }\r\n \r\n\r\n const handleDragEnd = (index, e) => {\r\n const updatedPoints = [...points];\r\n updatedPoints[index] = { x: e.target.x(), y: e.target.y() };\r\n setPoints(updatedPoints);\r\n };\r\n \r\n const handleStageClick = (e) => {\r\n debugger;\r\n if (!isPolygonClosed) {\r\n const stage = e.target.getStage();\r\n const point = stage.getPointerPosition();\r\n \r\n if (points.length >= 2) {\r\n const firstPoint = points[0];\r\n const distance = Math.sqrt(\r\n (point.x - firstPoint.x) ** 2 + (point.y - firstPoint.y) ** 2\r\n );\r\n \r\n if (distance < POINT_CLICK_THRESHOLD) {\r\n setPoints([...points, points[0]]);\r\n setIsPolygonClosed(true);\r\n } else {\r\n setPoints([...points, { x: point.x, y: point.y }]);\r\n }\r\n } else {\r\n setPoints([...points,{ x: point.x, y: point.y }]);\r\n }\r\n setPoints([...points,{ x: point.x, y: point.y }]);\r\n }\r\n setShowStartingPoint(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 const GetZoneConfigDetails= (CampusVal,LocVal) => {\r\n debugger;\r\n // UserValidated\r\n fetch(apiEndpoint+'/GetZoneConfigDetails',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"CampusID\": CampusVal,\r\n \"LocationID\": LocVal,\r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n\r\n })\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n debugger;\r\n if (data.ResponseType == \"success\") {\r\n debugger;\r\n setImageLoaded(false);\r\n if(data.ZoneConfig != null && data.ZoneConfig != undefined && data.ZoneROI != null)\r\n {\r\n if(data.ZoneConfig.Base64UploadedImage != null)\r\n {\r\n var base64Img = data.ZoneConfig.Base64UploadedImage;\r\n const img = new window.Image();\r\n img.src = base64Img;\r\n img.width = 960; // Adjust width as needed\r\n img.height = 540;\r\n img.onload = () => {\r\n debugger;\r\n \r\n setSelectedImage(img);\r\n setImageLoaded(true);\r\n //setImageUrl(URL.createObjectURL(files[0]));\r\n\r\n };\r\n setBase64CompanyLogo(data.ZoneConfig.Base64CompanyLogo);\r\n }\r\n }\r\n if(data.ZoneROI != null && data.ZoneROI != undefined && data.ZoneROI.length != 0)\r\n {\r\n setPoints(data.ZoneROI);\r\n setIsPolygonClosed(true);\r\n\r\n }\r\n \r\n\r\n }\r\n else if (data.ResponseType == \"error\") {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n const SubmitZoneConfigDetails = () => {\r\n debugger;\r\n if(points.length >= 4 )\r\n {\r\n // UserValidated\r\n fetch(apiEndpoint+'/AddNewZoneConfig',\r\n {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n },\r\n body: JSON.stringify({\r\n \"CampusID\": selectedCampusVal,\r\n \"LocationID\": selectedLocVal,\r\n \"ROI\": points,\r\n \"TrafficDirection\":SelectedTrafficDirection.value,\r\n \"ZoneSide\": SelectedZoneSideItems.value,\r\n \"Base64UploadedImage\": Base64CompanyLogo, \r\n \"strToken\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n }\r\n )\r\n .then(res => res.json())\r\n .then((data) => {\r\n \r\n if (data.ResponseType == \"success\") {\r\n debugger;\r\n setCoordinatesSaved(true); \r\n setShowUpdatedImage(true); \r\n \r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"info\"\r\n >\r\n \r\n )\r\n \r\n }\r\n else if (data.ResponseType == \"error\") {\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n });\r\n }\r\n else{\r\n setAlert(\r\n setAlert(null)}\r\n onCancel={() => setAlert(null)}\r\n confirmBtnBsStyle=\"warning\"\r\n >\r\n \r\n )\r\n }\r\n debugger;\r\n \r\n }; \r\n\r\n \r\n const ResetZoneConfiguration = () =>{\r\n setPoints([]);\r\n setIsPolygonClosed(false);\r\n\r\n setPolyCoordinates([]);\r\n setCircleCoordinates([]);\r\n \r\n };\r\n \r\n \r\n const [AddNewCampusValue, setAddNewCampusValue] = useState();\r\n \r\n const [DataValues, setDataValues] = useState({ NewLatitudeValue: 18.5204, NewLongitudeValue: 73.2341 });\r\n \r\n \r\n return (\r\n \r\n \r\n Indus | Zone Configuration\r\n \r\n \r\n \r\n \r\n \r\n {alertmsg} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\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 Image File\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n {(selectedImage) && (imageLoaded) &&(\r\n \r\n \r\n \r\n\r\n \r\n {points.map((point, index) => (\r\n handleDragEnd(index, e)}\r\n />\r\n ))}\r\n {showStartingPoint && points.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n \r\n [p.x, p.y])}\r\n stroke=\"black\"\r\n />\r\n { isPolygonClosed && {\r\n context.beginPath();\r\n context.moveTo(points[0].x, points[0].y);\r\n for (let i = 1; i < points.length; i++) {\r\n context.lineTo(points[i].x, points[i].y);\r\n }\r\n // context.lineTo(points[1].x, points[1].y);\r\n // context.quadraticCurveTo(points); \r\n context.closePath();\r\n // (!) Konva specific method, it is very important\r\n\r\n // Set the fill color with reduced opacity (e.g., 50% opacity, blue color)\r\n context.fillStyle = 'rgba(255, 255, 0, 0.5)'; // Blue color with 50% opacity\r\n\r\n // Fill the polygon\r\n context.fill();\r\n\r\n // Stroke the shape (optional)\r\n context.stroke();\r\n\r\n context.fillStrokeShape(shape);\r\n }}\r\n // fill=\"#29446b\"\r\n // stroke=\"black\"\r\n strokeWidth={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\n
\r\n \r\n \r\n \r\n ) \r\n \r\n \r\n }\r\nexport default connect(null, { setBreadcrumbItems })(AddDraggableZoneConfigDetails);","import React, { useState } from 'react';\r\nimport MetaTags from 'react-meta-tags';\r\nimport { useHistory, Link } from 'react-router-dom';\r\nimport { apiEndpoint } from 'helpers/url_helper';\r\nimport { Row, Col, CardBody, Card, Alert, Container } from 'reactstrap';\r\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\r\n// import logoDark from '../../assets/images/Logo.png';\r\nimport logoDark from 'assets/images/Logo.png';\r\n\r\nconst DefaultPasswordChangeComponent = () => {\r\n const [error, setErrors] = useState('');\r\n const [errorColor, setErrorColor] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n let history = useHistory();\r\n\r\n // Validation rules\r\n const validate = () => {\r\n const newErrors = {};\r\n\r\n // Required field validation\r\n if (!password) {\r\n newErrors.password = 'Please enter password';\r\n }\r\n if (!confirmPassword) {\r\n newErrors.confirmPassword = 'Please confirm your password';\r\n }\r\n\r\n // Pattern validation\r\n const passwordPattern = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$/;\r\n if (password && !passwordPattern.test(password)) {\r\n newErrors.password = 'Password must contain 7-15 characters with at least one digit and one special character';\r\n }\r\n\r\n // Length validation\r\n if (password && (password.length < 7 || password.length > 15)) {\r\n newErrors.password = 'Password must be between 7 and 15 characters';\r\n }\r\n\r\n // Password match validation\r\n if (password !== confirmPassword) {\r\n newErrors.confirmPassword = 'Passwords do not match';\r\n }\r\n\r\n return newErrors;\r\n };\r\n\r\n // Handle Change Password\r\n const handleChangePassword = () => {\r\n const validationErrors = validate();\r\n if (Object.keys(validationErrors).length === 0) {\r\n // Implement password change logic here\r\n\r\n fetch(apiEndpoint + '/ChangeDefaultPassword', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\r\n Password: password,\r\n }),\r\n })\r\n .then((res) => res.json())\r\n .then(\r\n (response) => {\r\n if (response.status) {\r\n setErrors(response.message);\r\n setErrorColor('success');\r\n\r\n sessionStorage.removeItem(\"userFullName\")\r\n sessionStorage.removeItem(\"Clear_AuthUser\")\r\n sessionStorage.removeItem(\"GetToChange\")\r\n history.push('/');\r\n } else {\r\n setErrors(response.message);\r\n setErrorColor('danger');\r\n }\r\n },\r\n (error) => {\r\n setErrors('An unexpected error occurred.');\r\n setErrorColor('danger');\r\n }\r\n );\r\n } else {\r\n setErrors(validationErrors);\r\n setErrorColor('danger');\r\n }\r\n };\r\n\r\n // Handle Logout\r\n const handleLogout = () => {\r\n // Implement logout logic here\r\n const response = fetch(apiEndpoint+'/Logout', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body: JSON.stringify({\r\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\r\n })\r\n });\r\n sessionStorage.removeItem(\"userFullName\")\r\n sessionStorage.removeItem(\"Clear_AuthUser\")\r\n sessionStorage.removeItem(\"GetToChange\")\r\n history.push('/');\r\n };\r\n\r\n return (\r\n \r\n \r\n Indus - Change Password\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n \"\"\r\n \r\n

\r\n
\r\n

Welcome to the Indus Application!

\r\n

For your security, please update your password now.

\r\n \r\n {error && typeof error === 'string' ? (\r\n {error}\r\n ) : null}\r\n\r\n
\r\n \r\n setPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'}\r\n }}\r\n required\r\n />\r\n
\r\n\r\n
\r\n \r\n setConfirmPassword(event.target.value)}\r\n validate={{\r\n required: {value: true, errorMessage: 'Please enter password'},\r\n pattern: {value: '^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$', errorMessage: 'Password must contain 7-15 characters with atleast one digit & a special character'},\r\n minLength: {value: 7, errorMessage: 'Password must be between 7 and 15 characters'},\r\n maxLength: {value: 15, errorMessage: 'Password must be between 7 and 15 characters'},\r\n match: {value: 'Password', errorMessage: 'Password does not match'}\r\n }}\r\n required\r\n />\r\n
\r\n\r\n
\r\n
\r\n \r\n Change Password\r\n \r\n
\r\n
\r\n \r\n Logout\r\n \r\n
\r\n
\r\n \r\n

\r\n After successfully changing the password, you'll be logged out and will require to log in using your new password.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n © {new Date().getFullYear()} Ador Powertron Ltd \r\n

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n //
\r\n //
\r\n // \r\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 DefaultPasswordChangeComponent;\r\n","import React from \"react\"\nimport { Redirect } from \"react-router-dom\"\n\n// Profile\nimport UserProfile from \"../pages/Authentication/user-profile\"\n\n// Authentication related pages\nimport Login from \"../pages/Authentication/Login\"\nimport Logout from \"../pages/Authentication/Logout\"\nimport Register from \"../pages/Authentication/Register\"\nimport ForgetPwd from \"../pages/Authentication/ForgetPassword\"\n\n// Dashboard\nimport Dashboard from \"../pages/Dashboard/index\"\nimport ViolationLogs from \"../pages/ViolationLogs/ViolationLogs\"\nimport Maps from \"pages/Map/Maps\"\nimport VehicleCount from \"pages/VehicleCount/VehicleCount\"\nimport RegisterVehicle from \"../pages/VehicleDetails/RegisterVehicle\"\n\nimport DeviceManagementTabs from \"../pages/DeviceManagement/deviceManagementTabs\"\nimport ChallanSettings from \"../pages/Settings/addChallanSettings\"\nimport SMTPSettings from \"../pages/Settings/addSmtpConfig\"\nimport UserRoles from \"../pages/UserRoles/UserRoles\"\nimport UserManagement from \"../pages/UserManagement/UserManagement\"\nimport ViolationsReport from \"pages/ViolationLogs/ViolationsReport\"\n// import ZoneConfig from \"pages/Settings/addZoneConfig\"\nimport ZoneConfig from \"pages/Settings/addDraggableZoneConfig\"\nimport jwt from \"jsonwebtoken\";\n\nimport DefaultPasswordChangeComponent from \"pages/UserManagement/DefaultChangePassword\"\n\nconst decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\n// var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\n\n// Example of retrieving user roles and permissions from sessionStorage\n// var userData = JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\nvar userData = {};\nif(decodedToken != null){\n userData = JSON.parse(decodedToken.userRolePermissions);\n}\n\nvar userPermissions = {}\n\nif(userData != null){\n userPermissions = {\n editViolations: userData.EditViolations,\n vehicleCount: userData.VehicleCount,\n registerDevice: userData.RegisterDevice,\n registerVehicle: userData.RegisterVehicle,\n smtpSettings: userData.SMTP,\n challanSettings: userData.Challan,\n userManagement: userData.UserManagement,\n addUser: userData.AddUser,\n editDeleteUser: userData.EditDeleteUser,\n roleManagement: userData.RoleManagement,\n addRole: userData.AddRole,\n editDeleteRole: userData.EditDeleteRole,\n changePassword: userData.ChangePassword,\n deleteViolations: userData.DeleteViolations,\n\n dashboard: true,\n violationLogs: true,\n maps: true,\n vehicleCount: true,\n addZoneConfig: true,\n profile: true,\n violationsReport: true,\n defaultPasswordChange: true\n};\n}\n\nconst userRoutes = [\n { path: \"/dashboard\", component: Dashboard, requiredPermissions: [\"dashboard\"] },\n { path: \"/ViolationLogs\", component: ViolationLogs, requiredPermissions: [\"violationLogs\"] },\n { path: \"/Maps\", component: Maps, requiredPermissions: [\"maps\"] },\n { path: \"/VehicleCount\", component: VehicleCount, requiredPermissions: [\"vehicleCount\"] },\n\n { path: \"/RegisterVehicle\", component: RegisterVehicle, requiredPermissions: [\"registerVehicle\"] },\n { path: \"/DeviceManagementTabs\", component: DeviceManagementTabs, requiredPermissions: [\"registerDevice\"] },\n { path: \"/SMTPSettings\", component: SMTPSettings, requiredPermissions: [\"smtpSettings\"] },\n { path: \"/ChallanSettings\", component: ChallanSettings, requiredPermissions: [\"challanSettings\"] },\n { path: \"/UserRoles\", component: UserRoles, requiredPermissions: [\"roleManagement\"] },\n { path: \"/UserManagement\", component: UserManagement, requiredPermissions: [\"userManagement\"] },\n\n { path: \"/addZoneConfig\", component: ZoneConfig, requiredPermissions: [\"addZoneConfig\"] },\n { path: \"/profile\", component: UserProfile, requiredPermissions: [\"profile\"] },\n { path: \"/ViolationsReport\", component: ViolationsReport, requiredPermissions: [\"violationsReport\"] },\n \n { path: \"/defaultPasswordChange\", component: DefaultPasswordChangeComponent, requiredPermissions: [\"defaultPasswordChange\"] },\n\n // this route should be at the end of all other routes\n { path: \"/\", exact: true, component: () => },\n]\n\nconst authRoutes = [\n { path: \"/logout\", component: Logout },\n { path: \"/login\", component: Login },\n { path: \"/forgot-password\", component: ForgetPwd },\n { path: \"/register\", component: Register },\n]\n\nexport { userRoutes, authRoutes, userPermissions }","import firebase from \"firebase/app\"\n\n// Add the Firebase products that you want to use\nimport \"firebase/auth\"\nimport \"firebase/firestore\"\n\nclass FirebaseAuthBackend {\n constructor(firebaseConfig) {\n if (firebaseConfig) {\n // Initialize Firebase\n firebase.initializeApp(firebaseConfig)\n firebase.auth().onAuthStateChanged(user => {\n if (user) {\n // sessionStorage.setItem(\"authUser\", JSON.stringify(user))\n } else {\n // sessionStorage.removeItem(\"authUser\")\n }\n })\n }\n }\n\n /**\n * Registers the user with given details\n */\n registerUser = (email, password) => {\n return new Promise((resolve, reject) => {\n firebase\n .auth()\n .createUserWithEmailAndPassword(email, password)\n .then(\n user => {\n resolve(firebase.auth().currentUser)\n },\n error => {\n reject(this._handleError(error))\n }\n )\n })\n }\n\n /**\n * Registers the user with given details\n */\n editProfileAPI = (email, password) => {\n return new Promise((resolve, reject) => {\n firebase\n .auth()\n .createUserWithEmailAndPassword(email, password)\n .then(\n user => {\n resolve(firebase.auth().currentUser)\n },\n error => {\n reject(this._handleError(error))\n }\n )\n })\n }\n\n /**\n * Login user with given details\n */\n loginUser = (email, password) => {\n return new Promise((resolve, reject) => {\n firebase\n .auth()\n .signInWithEmailAndPassword(email, password)\n .then(\n user => {\n resolve(firebase.auth().currentUser)\n },\n error => {\n reject(this._handleError(error))\n }\n )\n })\n }\n\n /**\n * forget Password user with given details\n */\n forgetPassword = email => {\n return new Promise((resolve, reject) => {\n firebase\n .auth()\n .sendPasswordResetEmail(email, {\n url:\n window.location.protocol + \"//\" + window.location.host + \"/login\",\n })\n .then(() => {\n resolve(true)\n })\n .catch(error => {\n reject(this._handleError(error))\n })\n })\n }\n\n /**\n * Logout the user\n */\n logout = () => {\n return new Promise((resolve, reject) => {\n firebase\n .auth()\n .signOut()\n .then(() => {\n resolve(true)\n })\n .catch(error => {\n reject(this._handleError(error))\n })\n })\n }\n\n /**\n * Social Login user with given details\n */\n socialLoginUser = (data, type) => {\n let credential = {}\n if (type === \"google\") {\n credential = firebase.auth.GoogleAuthProvider.credential(data.idToken, data.token)\n } else if (type === \"facebook\") {\n credential = firebase.auth.FacebookAuthProvider.credential(data.token)\n }\n return new Promise((resolve, reject) => {\n if (!!credential) {\n firebase.auth().signInWithCredential(credential)\n .then(user => {\n resolve(this.addNewUserToFirestore(user))\n })\n .catch(error => {\n reject(this._handleError(error))\n })\n } else {\n reject(this._handleError(error))\n }\n })\n }\n\n addNewUserToFirestore = (user) => {\n const collection = firebase.firestore().collection(\"users\")\n const { profile } = user.additionalUserInfo\n const details = {\n firstName: profile.given_name ? profile.given_name : profile.first_name,\n lastName: profile.family_name ? profile.family_name : profile.last_name,\n fullName: profile.name,\n email: profile.email,\n picture: profile.picture,\n createdDtm: firebase.firestore.FieldValue.serverTimestamp(),\n lastLoginTime: firebase.firestore.FieldValue.serverTimestamp()\n }\n collection.doc(firebase.auth().currentUser.uid).set(details)\n return { user, details }\n }\n\n setLoggeedInUser = user => {\n // sessionStorage.setItem(\"authUser\", JSON.stringify(user))\n }\n\n /**\n * Returns the authenticated user\n */\n getAuthenticatedUser = () => {\n if (!sessionStorage.getItem(\"Clear_AuthUser\")) return null\n return JSON.parse(sessionStorage.getItem(\"Clear_AuthUser\"))\n }\n\n /**\n * Handle the error\n * @param {*} error\n */\n _handleError(error) {\n // var errorCode = error.code;\n var errorMessage = error.message\n return errorMessage\n }\n}\n\nlet _fireBaseBackend = null\n\n/**\n * Initilize the backend\n * @param {*} config\n */\nconst initFirebaseBackend = config => {\n if (!_fireBaseBackend) {\n _fireBaseBackend = new FirebaseAuthBackend(config)\n }\n return _fireBaseBackend\n}\n\n/**\n * Returns the firebase backend\n */\nconst getFirebaseBackend = () => {\n return _fireBaseBackend\n}\n\nexport { initFirebaseBackend, getFirebaseBackend }\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Route, Redirect } from \"react-router-dom\"\n\nconst Authmiddleware = ({\n component: Component,\n layout: Layout,\n isAuthProtected,\n ...rest\n}) => (\n {\n if (isAuthProtected && !sessionStorage.getItem(\"Clear_AuthUser\")) {\n return (\n \n )\n }\n\n return (\n \n \n \n )\n }}\n />\n)\n\nAuthmiddleware.propTypes = {\n isAuthProtected: PropTypes.bool,\n component: PropTypes.any,\n location: PropTypes.object,\n layout: PropTypes.any,\n}\n\nexport default Authmiddleware\n","import React, { useState } from \"react\"\nimport PropTypes from 'prop-types'\nimport { Link } from \"react-router-dom\"\nimport { Dropdown, DropdownToggle, DropdownMenu, Row, Col } from \"reactstrap\"\nimport SimpleBar from \"simplebar-react\"\n\n\n//i18n\nimport { withTranslation } from \"react-i18next\"\n\nconst NotificationDropdown = props => {\n // Declare a new state variable, which we'll call \"menu\"\n const [menu, setMenu] = useState(false)\n\n return (\n \n setMenu(!menu)}\n className=\"dropdown d-inline-block ms-1\"\n tag=\"li\"\n >\n \n \n 3\n \n\n \n
\n \n \n
{props.t(\"Notifications\")} (258)
\n \n
\n
\n\n \n \n
\n
\n \n \n \n
\n
\n
Your order is placed
\n
\n

If several languages coalesce the grammar

\n
\n
\n
\n \n\n \n
\n
\n \n \n \n
\n
\n
New Message received
\n
\n

You have 87 unread messages

\n
\n
\n
\n \n\n \n
\n
\n \n \n \n
\n
\n
Your item is shipped
\n
\n

It is a long established fact that a reader will

\n
\n
\n
\n \n\n \n
\n
\n \n \n \n
\n
\n
Your order is placed
\n
\n

Dummy text of the printing and typesetting industry.

\n
\n
\n
\n \n\n \n
\n
\n \n \n \n
\n
\n
New Message received
\n
\n

You have 87 unread messages

\n
\n
\n
\n \n
\n
\n \n \n {\" \"}\n {props.t(\"View all\")}{\" \"}\n \n
\n
\n \n
\n )\n}\n\nexport default withTranslation()(NotificationDropdown)\n\nNotificationDropdown.propTypes = {\n t: PropTypes.any\n}","import React, { useState, useEffect } from \"react\"\nimport PropTypes from 'prop-types'\nimport {\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from \"reactstrap\"\n\n//i18n\nimport { withTranslation } from \"react-i18next\"\n// Redux\nimport { connect } from \"react-redux\"\nimport { withRouter, Link } from \"react-router-dom\"\nimport jwt from \"jsonwebtoken\";\n\nconst ProfileMenu = props => {\n // Declare a new state variable, which we'll call \"menu\"\n const [menu, setMenu] = useState(false)\n const [username, setusername] = useState(\"Admin\")\n const [usermanagement, setusermanagement] = useState();\n const [rolemanagement, setrolemanagement] = useState();\n useEffect(() => {\n if (sessionStorage.getItem(\"Clear_AuthUser\")) {\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\n \n setusername(decodedToken.userFullName)\n } else if (\n process.env.REACT_APP_DEFAULTAUTH === \"fake\" ||\n process.env.REACT_APP_DEFAULTAUTH === \"jwt\"\n ) {\n \n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\n \n setusername(decodedToken.userFullName)\n\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\n setusermanagement(UserPermissions.UserManagement)\n setrolemanagement(UserPermissions.RoleManagement)\n }\n }\n }, [props.success])\n\n return (\n \n setMenu(!menu)}\n className=\"d-inline-block\"\n >\n \n \n {/* */}\n \n \n {usermanagement && \n \n {\" \"}\n \n {props.t(\"Users\")}{\" \"}\n \n }\n {rolemanagement && \n \n {\" \"}\n \n {props.t(\"Roles\")}{\" \"}\n \n}\n \n \n \n
\n \n \n {props.t(\"Logout\")}\n \n \n \n \n )\n}\n\nProfileMenu.propTypes = {\n success: PropTypes.any,\n t: PropTypes.any\n}\n\nconst mapStatetoProps = state => {\n const { error, success } = state.Profile\n return { error, success }\n}\n\nexport default withRouter(\n connect(mapStatetoProps, {})(withTranslation()(ProfileMenu))\n)","export default __webpack_public_path__ + \"static/media/adorflower.8f47f9b8.ico\";","import PropTypes from 'prop-types'\nimport React, { useState } from \"react\"\n\nimport { connect } from \"react-redux\"\nimport { Row, Col } from \"reactstrap\"\n\nimport { Link } from \"react-router-dom\"\n\n// Reactstrap\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from \"reactstrap\"\n\n// Import menuDropdown\nimport NotificationDropdown from \"../CommonForBoth/TopbarDropdown/NotificationDropdown\"\nimport ProfileMenu from \"../CommonForBoth/TopbarDropdown/ProfileMenu\"\n\n// import megamenuImg from \"../../assets/images/megamenu-img.png\"\n// import logo from \"../../assets/images/logo-sm.png\"\n// import logoLightPng from \"../../assets/images/logo-light.png\"\n// import logoDark from \"../../assets/images/logo-dark.png\"\nimport logo from \"../../assets/images/adorflower.ico\"\nimport logoLightPng from \"../../assets/images/Logo.png\"\nimport logoDark from \"../../assets/images/Logo.png\"\n\n//i18n\nimport { withTranslation } from \"react-i18next\"\n\n// Redux Store\nimport {\n showRightSidebarAction,\n toggleLeftmenu,\n changeSidebarType,\n} from \"../../store/actions\"\n\nconst Header = props => {\n const [search, setsearch] = useState(false)\n const [createmenu, setCreateMenu] = useState(false)\n\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)\n\n function toggleFullscreen() {\n if (\n !document.fullscreenElement &&\n /* alternative standard method */ !document.mozFullScreenElement &&\n !document.webkitFullscreenElement\n ) {\n // current working methods\n if (document.documentElement.requestFullscreen) {\n document.documentElement.requestFullscreen()\n } else if (document.documentElement.mozRequestFullScreen) {\n document.documentElement.mozRequestFullScreen()\n } else if (document.documentElement.webkitRequestFullscreen) {\n document.documentElement.webkitRequestFullscreen(\n Element.ALLOW_KEYBOARD_INPUT\n )\n }\n } else {\n if (document.cancelFullScreen) {\n document.cancelFullScreen()\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen()\n }\n }\n }\n\n function tToggle() {\n var body = document.body;\n body.classList.toggle(\"vertical-collpsed\");\n body.classList.toggle(\"sidebar-enable\");\n }\n return (\n \n
\n
\n
\n
\n \n \n \"\"\n \n \n \"\"\n \n \n\n \n \n \"\"\n \n \n \"\"\n \n \n
\n\n {\n tToggle()\n }}\n className=\"btn btn-sm px-3 font-size-24 header-item waves-effect vertical-menu-btn\"\n id=\"vertical-menu-btn\"\n >\n \n \n
\n setCreateMenu(!createmenu)}\n className=\"d-inline-block\"\n >\n\n
\n\n {/* \n Create \n \n\n \n Action\n Another action\n Something else here\n
\n Separated link\n
*/}\n\n
\n \n
\n
\n \n
\n Hello, {sessionStorage.getItem(\"userFullName\")}\n
\n\n
\n {/*
\n
\n \n \n
\n
\n
\n {\n setsearch(!search)\n }}\n type=\"button\"\n className=\"btn header-item noti-icon waves-effect\"\n id=\"page-header-search-dropdown\"\n >\n \n \n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
*/}\n {/* \n
\n {\n toggleFullscreen()\n }}\n className=\"btn header-item noti-icon waves-effect\"\n data-toggle=\"fullscreen\"\n >\n \n \n
*/}\n {/* */}\n \n {\n props.showRightSidebarAction(!props.showRightSidebar)\n }}\n className=\"dropdown d-inline-block\"\n >\n {/* \n \n */}\n
\n
\n \n \n
\n )\n}\n\nHeader.propTypes = {\n changeSidebarType: PropTypes.func,\n leftMenu: PropTypes.any,\n leftSideBarType: PropTypes.any,\n showRightSidebar: PropTypes.any,\n showRightSidebarAction: PropTypes.func,\n t: PropTypes.any,\n toggleLeftmenu: PropTypes.func\n}\n\nconst mapStatetoProps = state => {\n const {\n layoutType,\n showRightSidebar,\n leftMenu,\n leftSideBarType,\n } = state.Layout\n return { layoutType, showRightSidebar, leftMenu, leftSideBarType }\n}\n\nexport default connect(mapStatetoProps, {\n showRightSidebarAction,\n toggleLeftmenu,\n changeSidebarType,\n})(withTranslation()(Header))\n","import PropTypes from \"prop-types\"\nimport React, { useEffect, useRef ,useState} from \"react\"\n\n// //Import Scrollbar\nimport SimpleBar from \"simplebar-react\"\n\n// MetisMenu\nimport MetisMenu from \"metismenujs\"\nimport { withRouter } from \"react-router-dom\"\nimport { Link } from \"react-router-dom\"\n\n//i18n\nimport { withTranslation } from \"react-i18next\"\n\nimport jwt from \"jsonwebtoken\";\n\nconst SidebarContent = props => {\n const [vehiclecount, setvehiclecount] = useState();\n const [editviolationlogs, seteditviolationlogs] = useState();\n const [registerdevice, setregisterdevice] = useState();\n const [registervehicle, setregistervehicle] = useState();\n const [smtp, setsmtp] = useState();\n const [challan, setchallan] = useState();\n const [usermanagement, setusermanagement] = useState();\n const [rolemanagement, setrolemanagement] = useState();\n\n const ref = useRef()\n // Use ComponentDidMount and ComponentDidUpdate method symultaniously\n useEffect(() => {\n const pathName = props.location.pathname;\n\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\n var UserPermissions=JSON.parse(decodedToken.userRolePermissions);\n\n // var UserPermissions=JSON.parse(sessionStorage.getItem(\"UserRolePermissions\"));\n \n seteditviolationlogs(UserPermissions.EditViolations)\n setvehiclecount(UserPermissions.VehicleCount)\n setregisterdevice(UserPermissions.RegisterDevice)\n setregistervehicle(UserPermissions.RegisterVehicle)\n setsmtp(UserPermissions.SMTP)\n setchallan(UserPermissions.Challan)\n\n const initMenu = () => {\n new MetisMenu(\"#side-menu\")\n let matchingMenuItem = null\n const ul = document.getElementById(\"side-menu\")\n const items = ul.getElementsByTagName(\"a\")\n for (let i = 0; i < items.length; ++i) {\n if (pathName === items[i].pathname) {\n matchingMenuItem = items[i]\n break\n }\n }\n if (matchingMenuItem) {\n activateParentDropdown(matchingMenuItem)\n }\n }\n initMenu()\n }, [props.location.pathname])\n\n useEffect(() => {\n ref.current.recalculate()\n })\n\n function scrollElement(item) {\n if (item) {\n const currentPosition = item.offsetTop\n if (currentPosition > window.innerHeight) {\n ref.current.getScrollElement().scrollTop = currentPosition - 300\n }\n }\n }\n\n function activateParentDropdown(item) {\n item.classList.add(\"active\")\n const parent = item.parentElement\n const parent2El = parent.childNodes[1]\n if (parent2El && parent2El.id !== \"side-menu\") {\n parent2El.classList.add(\"mm-show\")\n }\n\n if (parent) {\n parent.classList.add(\"mm-active\")\n const parent2 = parent.parentElement\n\n if (parent2) {\n parent2.classList.add(\"mm-show\") // ul tag\n\n const parent3 = parent2.parentElement // li tag\n\n if (parent3) {\n parent3.classList.add(\"mm-active\") // li\n parent3.childNodes[0].classList.add(\"mm-active\") //a\n const parent4 = parent3.parentElement // ul\n if (parent4) {\n parent4.classList.add(\"mm-show\") // ul\n const parent5 = parent4.parentElement\n if (parent5) {\n parent5.classList.add(\"mm-show\") // li\n parent5.childNodes[0].classList.add(\"mm-active\") // a tag\n }\n }\n }\n }\n scrollElement(item);\n return false\n }\n scrollElement(item);\n return false\n }\n\n return (\n \n \n
\n
    \n
  • {props.t(\"Main\")}
  • \n
  • \n \n \n {props.t(\"Dashboard\")}\n \n
  • \n\n
  • \n \n \n {props.t(\"Maps\")}\n \n
  • \n \n
  • \n \n \n {props.t(\"Violation Logs\")}\n \n
  • \n \n
  • \n \n \n {props.t(\"Violation Reports\")}\n \n
  • \n {/*
  • \n \n \n {props.t(\"User Management\")}\n \n \n
  • */}\n {vehiclecount && \n
  • \n \n \n \n {/* 6 */}\n {props.t(\"Vehicle Count\")}\n \n \n
  • \n }\n \n \n\n
  • \n \n \n \n {props.t(\"Settings\")}\n \n
      \n {registerdevice && \n
    • \n {props.t(\"Register Device\")}\n
    • \n }\n {registervehicle && \n
    • \n {props.t(\"Register Vehicle\")} \n
    • \n }\n {smtp && \n
    • \n {props.t(\"Email And SMS\")} \n
    • \n }\n {challan && \n
    • \n {props.t(\"Challan\")} \n
    • \n }\n
    • \n {props.t(\"Zone Configuration\")} \n
    • \n
    \n
  • \n\n \n
\n
\n
\n
\n )\n}\n\nSidebarContent.propTypes = {\n location: PropTypes.object,\n t: PropTypes.any,\n}\n\nexport default withRouter(withTranslation()(SidebarContent))\n","import PropTypes from \"prop-types\"\nimport React from \"react\"\nimport { connect } from \"react-redux\"\nimport { withRouter } from \"react-router-dom\"\n\n//i18n\nimport { withTranslation } from \"react-i18next\"\nimport SidebarContent from \"./SidebarContent\"\n\nconst Sidebar = props => {\n return (\n \n
\n
\n {props.type !== \"condensed\" ? : }\n
\n
\n
\n )\n}\n\nSidebar.propTypes = {\n type: PropTypes.string,\n}\n\nconst mapStatetoProps = state => {\n return {\n layout: state.Layout,\n }\n}\nexport default connect(\n mapStatetoProps,\n {}\n)(withRouter(withTranslation()(Sidebar)))\n","import React from \"react\"\nimport { Container, Row, Col } from \"reactstrap\"\n\nconst Footer = () => {\n return (\n \n
\n \n \n \n © {new Date().getFullYear()} Ador Powertron Ltd \n \n \n \n
\n
\n )\n}\n\nexport default Footer\n","import React from \"react\"\nimport PropTypes from 'prop-types'\nimport { FormGroup } from \"reactstrap\"\n\nimport { connect } from \"react-redux\"\nimport {\n changeLayout,\n changeLayoutWidth,\n changeSidebarTheme,\n changeSidebarType,\n changePreloader,\n changeTopbarTheme,\n showRightSidebarAction,\n} from \"../../store/actions\"\n\n//SimpleBar\nimport SimpleBar from \"simplebar-react\"\n\nimport { Link } from \"react-router-dom\"\nimport \"../../components/CommonForBoth/rightbar.scss\"\n\nconst RightSidebar = props => {\n\n\n return (\n \n
\n \n
\n
\n {\n e.preventDefault()\n props.showRightSidebarAction(false)\n }}\n className=\"right-bar-toggle float-end\"\n >\n \n \n
Settings
\n
\n\n
\n\n
\n
\n Layouts\n {\n if (e.target.checked) {\n props.changeLayout(e.target.value)\n }\n }}\n />\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeLayout(e.target.value)\n }\n }}\n />\n \n
\n\n
\n\n
\n \n Layout Width\n \n {\n if (e.target.checked) {\n props.changeLayoutWidth(e.target.value)\n }\n }}\n />\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeLayoutWidth(e.target.value)\n }\n }}\n />\n \n
\n
\n\n
\n \n Topbar Theme\n \n {\n if (e.target.checked) {\n props.changeTopbarTheme(e.target.value)\n }\n }}\n />\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeTopbarTheme(e.target.value)\n }\n }}\n />\n\n \n
\n\n {props.layoutType === \"vertical\" ? (\n \n
\n
\n \n Left Sidebar Type{\" \"}\n \n {\n if (e.target.checked) {\n props.changeSidebarType(e.target.value)\n }\n }}\n />\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeSidebarType(e.target.value)\n }\n }}\n />\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeSidebarType(e.target.value)\n }\n }}\n />\n \n
\n\n
\n\n
\n \n Left Sidebar Color\n \n {\n if (e.target.checked) {\n props.changeSidebarTheme(e.target.value)\n }\n }}\n />\n\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeSidebarTheme(e.target.value)\n }\n }}\n />\n\n \n {\" \"}\n {\n if (e.target.checked) {\n props.changeSidebarTheme(e.target.value)\n }\n }}\n />\n\n \n
\n
\n
\n ) : null}\n\n \n \n Preloader\n \n\n
\n {\n props.changePreloader(!props.isPreloader)\n }}\n />\n\n \n
\n
\n\n
Choose Layouts
\n\n
\n \n {/* */}\n \n
\n\n
\n \n {/* */}\n \n
\n\n
\n \n {/* */}\n \n
\n\n \n Purchase Now\n \n
\n
\n
\n
\n
\n \n )\n}\n\nRightSidebar.propTypes = {\n changeLayout: PropTypes.func,\n changeLayoutWidth: PropTypes.func,\n changePreloader: PropTypes.func,\n changeSidebarTheme: PropTypes.func,\n changeSidebarType: PropTypes.func,\n changeTopbarTheme: PropTypes.func,\n isPreloader: PropTypes.any,\n layoutType: PropTypes.any,\n layoutWidth: PropTypes.any,\n leftSideBarTheme: PropTypes.any,\n leftSideBarType: PropTypes.any,\n showRightSidebarAction: PropTypes.func,\n topbarTheme: PropTypes.any\n}\n\nconst mapStateToProps = state => {\n return { ...state.Layout }\n}\n\nexport default connect(mapStateToProps, {\n changeLayout,\n changeSidebarTheme,\n changeSidebarType,\n changeLayoutWidth,\n changeTopbarTheme,\n changePreloader,\n showRightSidebarAction,\n})(RightSidebar)\n","export default __webpack_public_path__ + \"static/media/notification.5f1fee46.mp3\";","import React from \"react\"\nimport { Row, Col } from \"reactstrap\"\nimport { connect } from 'react-redux';\nimport {Link} from \"react-router-dom\"\nimport {\n Sparklines,\n SparklinesBars,\n} from \"react-sparklines\"\nimport { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { apiEndpoint } from \"helpers/url_helper\";\nimport ReactBSAlert from \"react-bootstrap-sweetalert\";\nimport { Redirect } from \"react-router-dom\"\nimport { createBrowserHistory } from 'history';\nimport { useHistory } from 'react-router-dom';\nimport { ToastContainer, toast } from 'react-toastify'; \nimport \"react-toastify/dist/ReactToastify.css\"; \nimport sound from \"assets/audio/notification.mp3\"\nimport { isArray, last } from \"lodash\";\nconst Breadcrumb = props => {\n const [violationsCnt, setviolationCnt] = useState([]);\n const [alertmsg, setAlert] = useState([]);\n const [notificationmsg, setnotifications] = useState([]);\n \n const itemLength = (props.breadcrumbItems || []).length || 1;\n var violationsStrng=\"\";\n var violations;\n var notifications;\n let history = useHistory();\n const audio = new Audio(sound);\n useEffect(() => {\n var interval=sessionStorage.getItem(\"breadcrumbsession\");\n clearInterval(interval)\n\n const getData = async () => {\n // UserValidated\n const urlNotify= apiEndpoint+'/GetLiveNotifications';\n try {\n const response = await fetch(urlNotify, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json', \n },\n body: JSON.stringify({\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n\n if(response.body!=null){\n const data = await response.json();\n if(data.status){\n console.log(data) \n if(data.Notifications!=undefined && data.Notifications!='[]'){\n notifications=JSON.parse(data.Notifications);\n setlivenotifications(notifications); \n }\n }\n else{\n if(data.Message!=null){\n setAlert (\n SessionExpired()}\n onCancel={() => setAlert(null)}\n confirmBtnBsStyle=\"info\"\n >\n {data.Message}\n \n )\n // setTimeout(() => {\n // SessionExpired();\n // }, 5000);\n }}\n }\n } catch (error) {\n console.log(error);\n }\n\n // UserValidated\n const url = apiEndpoint+'/GetTodaysViolationsForUser';\n setAlert(null)\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json', \n },\n body: JSON.stringify({\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n\n if(response.body!=null){\n const data = await response.json();\n if(data.status){\n if(data.Violations!=undefined){\n violations=JSON.parse(data.Violations);\n setViolationData(violations,0); \n }\n }\n else{\n if(data.Message!=null){\n setAlert (\n SessionExpired()}\n onCancel={() => setAlert(null)}\n confirmBtnBsStyle=\"info\"\n >\n {data.Message}\n \n )\n // setTimeout(() => {\n // SessionExpired();\n // }, 5000);\n }}\n }\n } catch (error) {\n console.log(error);\n }\n\n \n };\n getData();\n var t= setInterval(() => {\n getData();\n var interval=sessionStorage.getItem(\"breadcrumbsession\");\n clearInterval(interval)\n\n }, 30000);\n\n \n}, [props.intUserID]);\n\nconst SessionExpired = () => {\n console.log(\"SessionExpired Called\");\n\n const response = fetch(apiEndpoint+'/Logout', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json', \n },\n body: JSON.stringify({\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\")\n })\n });\n \n // sessionStorage.removeItem(\"authUser\")\n // sessionStorage.removeItem(\"userFullName\")\n // sessionStorage.removeItem(\"authUser\")\n sessionStorage.removeItem(\"userFullName\")\n sessionStorage.removeItem(\"Clear_AuthUser\")\n sessionStorage.removeItem(\"GetToChange\")\n setAlert(null)\n history.push('/');\n}\n\nfunction setViolationData(violations, i) {\n var t= setInterval( \n function () { \n violationsStrng=violations[i].CampusName+ \" : \" + violations[i].intViolationsCnt +\" \";\n setviolationCnt(violationsStrng)\n i++;\n i %= violations.length;\n \n if(i==violations.length){\n i=0;\n }\n }, \n 2000 \n \n ); \n \n sessionStorage.setItem(\"breadcrumbsession\",t)\n\n }\n function setlivenotifications(notifications) {\nconsole.log(notifications.length)\nvar lastNotId;\nvar arr=[];\nfor(var i=0; i \n \n
\n\n

{props.title}

\n
    \n {\n (props.breadcrumbItems || []).map((item, key) =>\n (key + 1) === itemLength ?\n
  1. {item.title}
  2. \n :
  3. {item.title}
  4. \n )\n }\n
\n
\n \n\n \n
\n
\n {alertmsg}\n
Today's Violations
\n \n \n \n
{violationsCnt}
\n
\n \n
\n \n \n \n )\n}\n\nconst mapStatetoProps = state => {\n const Layout = state.Layout;\n const BreadcrumbData = state.Breadcrumb\n return { layoutType: Layout.layoutType, title: BreadcrumbData.title, breadcrumbItems: BreadcrumbData.breadcrumbItems };\n};\n\nexport default connect(mapStatetoProps, {})(Breadcrumb);\n","import PropTypes from 'prop-types'\nimport React, { Component } from \"react\"\n\nimport { connect } from \"react-redux\"\nimport { Container } from \"reactstrap\";\nimport { withRouter } from \"react-router-dom\"\nimport {\n changeLayout,\n changeSidebarTheme,\n changeSidebarType,\n changeTopbarTheme,\n changeLayoutWidth,\n} from \"../../store/actions\"\n\n// Layout Related Components\nimport Header from \"./Header\"\nimport Sidebar from \"./Sidebar\"\nimport Footer from \"./Footer\"\nimport Rightbar from \"../CommonForBoth/Rightbar\"\n//Import Breadcrumb\nimport Breadcrumb from \"../../components/Common/Breadcrumb\"\n\nclass Layout extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isMobile: /iPhone|iPad|iPod|Android/i.test(navigator.userAgent),\n }\n this.toggleMenuCallback = this.toggleMenuCallback.bind(this)\n }\n\n capitalizeFirstLetter = string => {\n return string.charAt(1).toUpperCase() + string.slice(2)\n }\n\n componentDidMount() {\n if (this.props.isPreloader === true) {\n document.getElementById(\"preloader\").style.display = \"block\"\n document.getElementById(\"status\").style.display = \"block\"\n\n setTimeout(function () {\n document.getElementById(\"preloader\").style.display = \"none\"\n document.getElementById(\"status\").style.display = \"none\"\n }, 2500)\n } else {\n document.getElementById(\"preloader\").style.display = \"none\"\n document.getElementById(\"status\").style.display = \"none\"\n }\n\n // Scroll Top to 0\n window.scrollTo(0, 0)\n\n if (this.props.leftSideBarTheme) {\n this.props.changeSidebarTheme(this.props.leftSideBarTheme)\n }\n\n if (this.props.layoutWidth) {\n this.props.changeLayoutWidth(this.props.layoutWidth)\n }\n\n if (this.props.leftSideBarType) {\n this.props.changeSidebarType(this.props.leftSideBarType)\n }\n if (this.props.topbarTheme) {\n this.props.changeTopbarTheme(this.props.topbarTheme)\n }\n }\n toggleMenuCallback = () => {\n if (this.props.leftSideBarType === \"default\") {\n this.props.changeSidebarType(\"condensed\", this.state.isMobile)\n } else if (this.props.leftSideBarType === \"condensed\") {\n this.props.changeSidebarType(\"default\", this.state.isMobile)\n }\n }\n\n render() {\n return (\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n \n \n {this.props.children}\n {/* render Footer */}\n
\n \n
\n
\n
\n
\n {this.props.showRightSidebar ? : null}\n
\n )\n }\n}\n\nLayout.propTypes = {\n changeLayoutWidth: PropTypes.func,\n changeSidebarTheme: PropTypes.func,\n changeSidebarType: PropTypes.func,\n changeTopbarTheme: PropTypes.func,\n children: PropTypes.object,\n isPreloader: PropTypes.any,\n layoutWidth: PropTypes.any,\n leftSideBarTheme: PropTypes.any,\n leftSideBarType: PropTypes.any,\n location: PropTypes.object,\n showRightSidebar: PropTypes.any,\n topbarTheme: PropTypes.any\n}\n\nconst mapStatetoProps = state => {\n return {\n ...state.Layout,\n }\n}\nexport default connect(mapStatetoProps, {\n changeLayout,\n changeSidebarTheme,\n changeSidebarType,\n changeTopbarTheme,\n changeLayoutWidth,\n})(withRouter(Layout))\n","import PropTypes from 'prop-types'\nimport React, { Component } from \"react\"\nimport { withRouter } from \"react-router-dom\"\n\nclass NonAuthLayout extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n this.capitalizeFirstLetter.bind(this)\n }\n\n capitalizeFirstLetter = string => {\n return string.charAt(1).toUpperCase() + string.slice(2)\n }\n\n // componentDidMount() {\n // let currentage = this.capitalizeFirstLetter(this.props.location.pathname)\n\n // document.title =\n // currentage + \" | Lexa - Responsive Bootstrap 5 Admin Dashboard\"\n // }\n render() {\n return {this.props.children}\n }\n}\n\nNonAuthLayout.propTypes = {\n children: PropTypes.any,\n location: PropTypes.object\n}\n\nexport default withRouter(NonAuthLayout)\n","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nconst ProtectedRoute = ({ component: Component, layout: Layout, requiredPermissions, userPermissions, ...rest }) => {\r\n \r\n const decodedToken = jwt.decode(sessionStorage.getItem(\"Clear_AuthUser\"));\r\n var userData;\r\n\r\n const decodedDefaultPasswordChange = jwt.decode(sessionStorage.getItem(\"GetToChange\"));\r\n const booleanValue = decodedDefaultPasswordChange === 'true';\r\n \r\n if (decodedToken != null) {\r\n userData = JSON.parse(decodedToken.userRolePermissions);\r\n }\r\n\r\n if (!userData || !requiredPermissions) {\r\n return ;\r\n }\r\n\r\n return (\r\n {\r\n if (booleanValue) {\r\n if (rest.path === \"/defaultPasswordChange\") {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }\r\n\r\n if(!booleanValue){\r\n if (rest.path === \"/defaultPasswordChange\") {\r\n return ;\r\n }\r\n return (\r\n requiredPermissions.every((permission) => userPermissions[permission]) ? (\r\n \r\n \r\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 ProtectedRoute;\r\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Switch, BrowserRouter as Router, Redirect, Route } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\n// Import Routes all\nimport { userRoutes, authRoutes, userPermissions } from './routes/allRoutes';\n\n// Import all middleware\nimport Authmiddleware from './routes/middleware/Authmiddleware';\n\n// layouts Format\nimport VerticalLayout from './components/VerticalLayout/';\nimport NonAuthLayout from './components/NonAuthLayout';\n\nimport DefaultPasswordChangeComponent from 'pages/UserManagement/DefaultChangePassword';\n\n// Import scss\nimport './assets/scss/theme.scss';\n\n// Import Firebase Configuration file\nimport { initFirebaseBackend } from './helpers/firebase_helper';\n\nimport ProtectedRoute from './routes/ProtectedRoute';\n\nconst firebaseConfig = {\n apiKey: process.env.REACT_APP_APIKEY,\n authDomain: process.env.REACT_APP_AUTHDOMAIN,\n databaseURL: process.env.REACT_APP_DATABASEURL,\n projectId: process.env.REACT_APP_PROJECTID,\n storageBucket: process.env.REACT_APP_STORAGEBUCKET,\n messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID,\n appId: process.env.REACT_APP_APPID,\n measurementId: process.env.REACT_APP_MEASUREMENTID,\n};\n\n// Init Firebase backend\ninitFirebaseBackend(firebaseConfig);\n\nconst App = (props) => {\n \n const { isAuthenticated, needsPasswordChange } = props;\n \n function getLayout() {\n let layoutCls = VerticalLayout;\n return layoutCls;\n }\n\n const Layout = getLayout();\n\n return (\n \n \n \n {authRoutes.map((route, idx) => (\n \n ))}\n\n {isAuthenticated && needsPasswordChange ? (\n // \n \n ) : (\n userRoutes.map((route, index) => (\n \n ))\n )}\n\n {/* Redirect to Dashboard if user is authenticated and no password change required */}\n {isAuthenticated && !needsPasswordChange && (\n \n )}\n\n {/* Fallback route */}\n \n \n \n \n );\n};\n\nApp.propTypes = {\n layout: PropTypes.any,\n isAuthenticated: PropTypes.bool.isRequired,\n needsPasswordChange: PropTypes.bool.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n return {\n layout: state.Layout || {},\n isAuthenticated: (state.Auth && state.Auth.isAuthenticated) || false,\n needsPasswordChange: (state.Auth && state.Auth.needsPasswordChange) || false,\n };\n};\n\nexport default connect(mapStateToProps, null)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\")\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error(\"Error during service worker registration:\", error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\")\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n )\n })\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister()\n })\n .catch(error => {\n console.error(error.message)\n })\n }\n}\n","// @flow\nimport {\n CHANGE_LAYOUT,\n CHANGE_LAYOUT_WIDTH,\n CHANGE_SIDEBAR_THEME,\n CHANGE_SIDEBAR_TYPE,\n CHANGE_TOPBAR_THEME,\n SHOW_RIGHT_SIDEBAR,\n CHANGE_PRELOADER,\n TOGGLE_LEFTMENU,\n SHOW_SIDEBAR,\n} from \"./actionTypes\"\n\nconst INIT_STATE = {\n layoutType: \"vertical\",\n layoutWidth: \"fluid\",\n leftSideBarTheme: \"dark\",\n leftSideBarType: \"default\",\n topbarTheme: \"dark\",\n isPreloader: false,\n showRightSidebar: false,\n isMobile: false,\n showSidebar: true,\n leftMenu: false,\n}\n\nconst Layout = (state = INIT_STATE, action) => {\n switch (action.type) {\n case CHANGE_LAYOUT:\n return {\n ...state,\n layoutType: action.payload,\n }\n case CHANGE_PRELOADER:\n return {\n ...state,\n isPreloader: action.payload,\n }\n\n case CHANGE_LAYOUT_WIDTH:\n return {\n ...state,\n layoutWidth: action.payload,\n }\n case CHANGE_SIDEBAR_THEME:\n return {\n ...state,\n leftSideBarTheme: action.payload,\n }\n case CHANGE_SIDEBAR_TYPE:\n return {\n ...state,\n leftSideBarType: action.payload.sidebarType,\n }\n case CHANGE_TOPBAR_THEME:\n return {\n ...state,\n topbarTheme: action.payload,\n }\n case SHOW_RIGHT_SIDEBAR:\n return {\n ...state,\n showRightSidebar: action.payload,\n }\n case SHOW_SIDEBAR:\n return {\n ...state,\n showSidebar: action.payload,\n }\n case TOGGLE_LEFTMENU:\n return {\n ...state,\n leftMenu: action.payload,\n }\n\n default:\n return state\n }\n}\n\nexport default Layout\n","import {\r\n SET_BREADCRUMB_ITEMS\r\n} from './actionTypes';\r\nimport { useEffect } from 'react';\r\nconst initialState={\r\n title : \"Dashboard\",\r\n breadcrumbItems : [\r\n \r\n // { title : \"Dashboard\", link : \"#\" },\r\n // { title : \"Dashboard\", link : \"#\" },\r\n ],\r\n \r\n}\r\n\r\nconst layout = (state=initialState,action) => {\r\n switch(action.type){\r\n case SET_BREADCRUMB_ITEMS:\r\n return {\r\n ...state,\r\n title: action.payload.title,\r\n breadcrumbItems: action.payload.items\r\n };\r\n\r\n default:\r\n state = {...state};\r\n break;\r\n }\r\n return state;\r\n \r\n}\r\n\r\nexport default layout;","import {\n LOGIN_USER,\n LOGIN_SUCCESS,\n LOGOUT_USER,\n LOGOUT_USER_SUCCESS,\n API_ERROR,\n} from \"./actionTypes\"\n\nconst initialState = {\n error: \"\",\n loading: false,\n}\n\nconst login = (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_USER:\n state = {\n ...state,\n loading: true,\n }\n break\n case LOGIN_SUCCESS:\n state = {\n ...state,\n loading: false,\n }\n break\n case LOGOUT_USER:\n state = { ...state }\n break\n case LOGOUT_USER_SUCCESS:\n state = { ...state }\n break\n case API_ERROR:\n state = { ...state, error: action.payload, loading: false }\n break\n default:\n state = { ...state }\n break\n }\n return state\n}\n\nexport default login\n","import {\n REGISTER_USER,\n REGISTER_USER_SUCCESSFUL,\n REGISTER_USER_FAILED,\n} from \"./actionTypes\"\n\nconst initialState = {\n registrationError: null,\n message: null,\n loading: false,\n user: null,\n}\n\nconst account = (state = initialState, action) => {\n switch (action.type) {\n case REGISTER_USER:\n state = {\n ...state,\n loading: true,\n registrationError: null,\n }\n break\n case REGISTER_USER_SUCCESSFUL:\n state = {\n ...state,\n loading: false,\n user: action.payload,\n registrationError: null,\n }\n break\n case REGISTER_USER_FAILED:\n state = {\n ...state,\n user: null,\n loading: false,\n registrationError: action.payload,\n }\n break\n default:\n state = { ...state }\n break\n }\n return state\n}\n\nexport default account\n","import {\n FORGET_PASSWORD,\n FORGET_PASSWORD_SUCCESS,\n FORGET_PASSWORD_ERROR,\n} from \"./actionTypes\"\n\nconst initialState = {\n forgetSuccessMsg: null,\n forgetError: null,\n}\n\nconst forgetPassword = (state = initialState, action) => {\n switch (action.type) {\n case FORGET_PASSWORD:\n state = {\n ...state,\n forgetSuccessMsg: null,\n forgetError: null,\n }\n break\n case FORGET_PASSWORD_SUCCESS:\n state = {\n ...state,\n forgetSuccessMsg: action.payload,\n }\n break\n case FORGET_PASSWORD_ERROR:\n state = { ...state, forgetError: action.payload }\n break\n default:\n state = { ...state }\n break\n }\n return state\n}\n\nexport default forgetPassword\n","import { PROFILE_ERROR, PROFILE_SUCCESS, EDIT_PROFILE, RESET_PROFILE_FLAG } from \"./actionTypes\"\n\nconst initialState = {\n error: \"\",\n success: \"\",\n}\n\nconst profile = (state = initialState, action) => {\n switch (action.type) {\n case EDIT_PROFILE:\n state = { ...state }\n break\n case PROFILE_SUCCESS:\n state = { ...state, success: action.payload }\n break\n case PROFILE_ERROR:\n state = { ...state, error: action.payload }\n break\n case RESET_PROFILE_FLAG :\n state = { ...state, success: null }\n break\n default:\n state = { ...state }\n break\n }\n return state\n}\n\nexport default profile\n","import {\n GET_EVENTS_SUCCESS,\n GET_EVENTS_FAIL,\n ADD_EVENT_SUCCESS,\n ADD_EVENT_FAIL,\n UPDATE_EVENT_SUCCESS,\n UPDATE_EVENT_FAIL,\n DELETE_EVENT_SUCCESS,\n DELETE_EVENT_FAIL,\n GET_CATEGORIES_SUCCESS,\n GET_CATEGORIES_FAIL,\n} from \"./actionTypes\"\n\nconst INIT_STATE = {\n events: [],\n categories: [],\n error: {},\n}\n\nconst Calendar = (state = INIT_STATE, action) => {\n switch (action.type) {\n case GET_EVENTS_SUCCESS:\n return {\n ...state,\n events: action.payload,\n }\n\n case GET_EVENTS_FAIL:\n return {\n ...state,\n error: action.payload,\n }\n\n case ADD_EVENT_SUCCESS:\n return {\n ...state,\n events: [...state.events, action.payload],\n }\n\n case ADD_EVENT_FAIL:\n return {\n ...state,\n error: action.payload,\n }\n\n case UPDATE_EVENT_SUCCESS:\n return {\n ...state,\n events: state.events.map(event =>\n event.id.toString() === action.payload.id.toString()\n ? { event, ...action.payload }\n : event\n ),\n }\n\n case UPDATE_EVENT_FAIL:\n return {\n ...state,\n error: action.payload,\n }\n\n case DELETE_EVENT_SUCCESS:\n return {\n ...state,\n events: state.events.filter(\n event => event.id.toString() !== action.payload.id.toString()\n ),\n }\n\n case DELETE_EVENT_FAIL:\n return {\n ...state,\n error: action.payload,\n }\n\n case GET_CATEGORIES_SUCCESS:\n return {\n ...state,\n categories: action.payload,\n }\n\n case GET_CATEGORIES_FAIL:\n return {\n ...state,\n error: action.payload,\n }\n default:\n return state\n }\n}\n\nexport default Calendar\n","import { combineReducers } from \"redux\"\n\n// Front\nimport Layout from \"./layout/reducer\"\n\nimport Breadcrumb from \"./Breadcrumb/reducer\"; \n\n// Authentication\nimport Login from \"./auth/login/reducer\"\nimport Account from \"./auth/register/reducer\"\nimport ForgetPassword from \"./auth/forgetpwd/reducer\"\nimport Profile from \"./auth/profile/reducer\"\n\n//Calendar\nimport calendar from \"./calendar/reducer\"\n\nconst rootReducer = combineReducers({\n // public\n Layout,\n //Breadcrumb items\n Breadcrumb,\n \n Login,\n Account,\n ForgetPassword,\n Profile,\n calendar\n})\n\nexport default rootReducer\n","import axios from \"axios\"\nimport accessToken from \"./jwt-token-access/accessToken\"\n\n//pass new generated access token here\nconst token = accessToken\n\n//apply base url for axios\nconst API_URL = \"\"\n\nconst axiosApi = axios.create({\n baseURL: API_URL,\n})\n\naxiosApi.defaults.headers.common[\"Authorization\"] = token\n\naxiosApi.interceptors.response.use(\n response => response,\n error => Promise.reject(error)\n)\n\nexport async function get(url, config = {}) {\n return await axiosApi.get(url, { ...config }).then(response => response.data)\n}\n\nexport async function post(url, data, config = {}) {\n return axiosApi\n .post(url, { ...data }, { ...config })\n .then(response => response.data)\n}\n\nexport async function put(url, data, config = {}) {\n return axiosApi\n .put(url, { ...data }, { ...config })\n .then(response => response.data)\n}\n\nexport async function del(url, config = {}) {\n return await axiosApi\n .delete(url, { ...config })\n .then(response => response.data)\n}\n","const accessToken =\n \"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6ImFkbWluIiwiYWRtaW4iOnRydWUsImp0aSI6ImQ2MTEwYzAxLWMwYjUtNDUzNy1iNDZhLTI0NTk5Mjc2YjY1NiIsImlhdCI6MTU5MjU2MDk2MCwiZXhwIjoxNTkyNTY0NjE5fQ.QgFSQtFaK_Ktauadttq1Is7f9w0SUtKcL8xCmkAvGLw\"\nexport default accessToken\n","import axios from \"axios\"\nimport { post, del, get, put } from \"./api_helper\"\nimport * as url from \"./url_helper\"\n\n// Gets the logged in user data from local session\nconst getLoggedInUser = () => {\n const user = sessionStorage.getItem(\"user\")\n if (user) return JSON.parse(user)\n return null\n}\n\n//is user is logged in\nconst isUserAuthenticated = () => {\n return getLoggedInUser() !== null\n}\n\n// Register Method\nconst postFakeRegister = (data) => post(url.POST_FAKE_REGISTER, data)\n\n// Login Method\nconst postFakeLogin = data => post(url.POST_FAKE_LOGIN, data)\n\n// postForgetPwd\nconst postFakeForgetPwd = data => post(url.POST_FAKE_PASSWORD_FORGET, data)\n\n// Edit profile\nconst postJwtProfile = data => post(url.POST_EDIT_JWT_PROFILE, data)\n\nconst postFakeProfile = data => post(url.POST_EDIT_PROFILE, data)\n\n// Register Method\nconst postJwtRegister = (url, data) => {\n return axios\n .post(url, data)\n .then(response => {\n if (response.status >= 200 || response.status <= 299) return response.data\n throw response.data\n })\n .catch(err => {\n let message\n if (err.response && err.response.status) {\n switch (err.response.status) {\n case 404:\n message = \"Sorry! the page you are looking for could not be found\"\n break\n case 500:\n message =\n \"Sorry! something went wrong, please contact our support team\"\n break\n case 401:\n message = \"Invalid credentials\"\n break\n default:\n message = err[1]\n break\n }\n }\n throw message\n })\n}\n\n// Login Method\nconst postJwtLogin = data => post(url.apiEndpoint + \"/Login\", data)\n\n// Logout Method\nconst postJwtLogout = data => post(url.apiEndpoint + \"/Logout\", data)\n\n// postForgetPwd\nconst postJwtForgetPwd = data => post(url.POST_FAKE_JWT_PASSWORD_FORGET, data)\n\n// get Events\nexport const getEvents = () => get(url.GET_EVENTS)\n\n// add Events\nexport const addNewEvent = event => post(url.ADD_NEW_EVENT, event)\n\n// update Event\nexport const updateEvent = event => put(url.UPDATE_EVENT, event)\n\n// delete Event\nexport const deleteEvent = event =>\n del(url.DELETE_EVENT, { headers: { event } })\n\n// get Categories\nexport const getCategories = () => get(url.GET_CATEGORIES)\n\n// export const getUserProfile = () => get(url.GET_USER_PROFILE)\n\nexport {\n getLoggedInUser,\n isUserAuthenticated,\n postFakeRegister,\n postFakeLogin,\n postJwtLogout,\n postFakeProfile,\n postFakeForgetPwd,\n postJwtRegister,\n postJwtLogin,\n postJwtForgetPwd,\n postJwtProfile,\n}\n","import { takeEvery, fork, put, all, call } from \"redux-saga/effects\"\n\n//Account Redux states\nimport { REGISTER_USER } from \"./actionTypes\"\nimport { registerUserSuccessful, registerUserFailed } from \"./actions\"\n\n//Include Both Helper File with needed methods\nimport { getFirebaseBackend } from \"../../../helpers/firebase_helper\"\nimport {\n postFakeRegister,\n postJwtRegister,\n} from \"../../../helpers/fakebackend_helper\"\n\n// initialize relavant method of both Auth\nconst fireBaseBackend = getFirebaseBackend()\n\n// Is user register successfull then direct plot user in redux.\nfunction* registerUser({ payload: { user } }) {\n try {\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const response = yield call(\n fireBaseBackend.registerUser,\n user.email,\n user.password\n )\n yield put(registerUserSuccessful(response))\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"jwt\") {\n const response = yield call(postJwtRegister, \"/post-jwt-register\", user)\n yield put(registerUserSuccessful(response))\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"fake\") {\n const response = yield call(postFakeRegister, user)\n yield put(registerUserSuccessful(response))\n }\n } catch (error) {\n yield put(registerUserFailed(error))\n }\n}\n\nexport function* watchUserRegister() {\n yield takeEvery(REGISTER_USER, registerUser)\n}\n\nfunction* accountSaga() {\n yield all([fork(watchUserRegister)])\n}\n\nexport default accountSaga\n","import { call, put, takeEvery, takeLatest } from \"redux-saga/effects\"\n\n// Login Redux States\nimport { LOGIN_USER, LOGOUT_USER } from \"./actionTypes\"\nimport { apiError, loginSuccess, logoutUserSuccess } from \"./actions\"\nimport { useContext } from \"react\"\n//Include Both Helper File with needed methods\nimport { getFirebaseBackend } from \"../../../helpers/firebase_helper\"\nimport {\n postFakeLogin,\n postJwtLogin,\n postJwtLogout\n} from \"../../../helpers/fakebackend_helper\"\n\nimport jwt from \"jsonwebtoken\";\nimport { AuthContext } from \"../authContext\"\n\nconst fireBaseBackend = getFirebaseBackend()\n\nfunction* loginUser({ payload: { user, history } }) {\n \n try {\n \n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const response = yield call(\n fireBaseBackend.loginUser,\n user.email,\n user.password\n )\n yield put(loginSuccess(response))\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"jwt\") {\n const response = yield call(postJwtLogin, {\n \"UserName\": user.username,\n \"Password\": user.password,\n })\n if(response.status){\n if(response.token)\n {\n const cleanToken = response.token.replace(/^\"+|\"+$/g, '');\n const decodedToken = jwt.decode(cleanToken);\n \n // sessionStorage.setItem(\"authUser\", JSON.stringify(cleanToken));\n\n if (decodedToken && decodedToken.userRolePermissions) {\n const UserRolePermissions = JSON.parse(decodedToken.userRolePermissions);\n //sessionStorage.setItem(\"UserRolePermissions\", JSON.stringify(UserRolePermissions));\n sessionStorage.setItem(\"userFullName\", decodedToken.userFullName);\n } else {\n console.error(\"Invalid token or missing userRolePermissions\");\n }\n }\n \n yield put(loginSuccess(response))\n yield put(apiError(null))\n }\n else{\n yield put(apiError(response.message))\n }\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"fake\") {\n const response = yield call(postFakeLogin, {\n email: user.email,\n password: user.password,\n })\n yield put(loginSuccess(response))\n }\n history.push(\"/dashboard\")\n } catch (error) {\n yield put(apiError(error))\n }\n}\n\nfunction* logoutUser({ payload: { history } }) {\n try {\n \n if (process.env.REACT_APP_DEFAULTAUTH === \"jwt\") {\n const response = yield call(postJwtLogout, {\n \"Token\": sessionStorage.getItem(\"Clear_AuthUser\"),\n })\n if(response.status){\n yield put(logoutUserSuccess(response))\n yield put(apiError(null))\n }\n else{\n yield put(apiError(response.message))\n }\n }\n\n // sessionStorage.removeItem(\"authUser\")\n sessionStorage.removeItem(\"userFullName\")\n\n sessionStorage.removeItem(\"Clear_AuthUser\")\n\n sessionStorage.removeItem(\"GetToChange\")\n\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const response = yield call(fireBaseBackend.logout)\n yield put(logoutUserSuccess(response))\n }\n history.push(\"/login\")\n } catch (error) {\n yield put(apiError(error))\n }\n}\n\nconst Authlogin = (UserRolePermissions, userFullName) =>\n{\n \n try{\n const { setUserPermissions, setUserFullName } = useContext(AuthContext);\n setUserPermissions(UserRolePermissions);\n setUserFullName(userFullName);\n }\n catch(error)\n {\n debugger;\n }\n\n};\n\nfunction* authSaga() {\n yield takeEvery(LOGIN_USER, loginUser)\n yield takeEvery(LOGOUT_USER, logoutUser)\n}\n\nexport default authSaga\n","import { takeEvery, fork, put, all, call } from \"redux-saga/effects\"\n\n// Login Redux States\nimport { FORGET_PASSWORD } from \"./actionTypes\"\nimport { userForgetPasswordSuccess, userForgetPasswordError } from \"./actions\"\n\n//Include Both Helper File with needed methods\nimport { getFirebaseBackend } from \"../../../helpers/firebase_helper\"\nimport {\n postFakeForgetPwd,\n postJwtForgetPwd,\n} from \"../../../helpers/fakebackend_helper\"\n\nconst fireBaseBackend = getFirebaseBackend()\n\n//If user is send successfully send mail link then dispatch redux action's are directly from here.\nfunction* forgetUser({ payload: { user, history } }) {\n try {\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const response = yield call(fireBaseBackend.forgetPassword, user.email)\n if (response) {\n yield put(\n userForgetPasswordSuccess(\n \"Reset link are sended to your mailbox, check there first\"\n )\n )\n }\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"jwt\") {\n const response = yield call(postJwtForgetPwd, \"/jwt-forget-pwd\", {\n email: user.email,\n })\n if (response) {\n yield put(\n userForgetPasswordSuccess(\n \"Reset link are sended to your mailbox, check there first\"\n )\n )\n }\n } else {\n const response = yield call(postFakeForgetPwd, \"/fake-forget-pwd\", {\n email: user.email,\n })\n if (response) {\n yield put(\n userForgetPasswordSuccess(\n \"Reset link are sended to your mailbox, check there first\"\n )\n )\n }\n }\n } catch (error) {\n yield put(userForgetPasswordError(error))\n }\n}\n\nexport function* watchUserPasswordForget() {\n yield takeEvery(FORGET_PASSWORD, forgetUser)\n}\n\nfunction* forgetPasswordSaga() {\n yield all([fork(watchUserPasswordForget)])\n}\n\nexport default forgetPasswordSaga\n","import { takeEvery, fork, put, all, call } from \"redux-saga/effects\"\nimport React from \"react\"\n// Login Redux States\nimport { EDIT_PROFILE } from \"./actionTypes\"\nimport { profileSuccess, profileError } from \"./actions\"\n\n//Include Both Helper File with needed methods\nimport { getFirebaseBackend } from \"../../../helpers/firebase_helper\"\nimport {\n postFakeProfile,\n postJwtProfile,\n} from \"../../../helpers/fakebackend_helper\"\n\nconst fireBaseBackend = getFirebaseBackend()\n\nfunction* editProfile({ payload: { user } }) {\n try {\n if (process.env.REACT_APP_DEFAULTAUTH === \"firebase\") {\n const response = yield call(\n fireBaseBackend.editProfileAPI,\n user.username,\n user.idx\n )\n yield put(profileSuccess(response))\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"jwt\") {\n const response = yield call(postJwtProfile, \"/post-jwt-profile\", {\n username: user.username,\n idx: user.idx,\n })\n yield put(profileSuccess(response))\n } else if (process.env.REACT_APP_DEFAULTAUTH === \"fake\") {\n const response = yield call(postFakeProfile, {\n username: user.username,\n idx: user.idx,\n })\n yield put(profileSuccess(response))\n }\n } catch (error) {\n yield put(profileError(error))\n }\n}\nexport function* watchProfile() {\n yield takeEvery(EDIT_PROFILE, editProfile)\n}\n\nfunction* ProfileSaga() {\n yield all([fork(watchProfile)])\n}\n\nexport default ProfileSaga\n","// @flow\nimport { all, call, fork, takeEvery, put } from \"redux-saga/effects\"\n\nimport {\n CHANGE_LAYOUT,\n CHANGE_LAYOUT_WIDTH,\n CHANGE_SIDEBAR_THEME,\n CHANGE_SIDEBAR_TYPE,\n CHANGE_TOPBAR_THEME,\n SHOW_RIGHT_SIDEBAR,\n} from \"./actionTypes\"\n\nimport {\n changeSidebarType as changeSidebarTypeAction,\n changeTopbarTheme as changeTopbarThemeAction,\n} from \"./actions\"\n\n/**\n * Changes the body attribute\n */\nfunction changeBodyAttribute(attribute, value) {\n if (document.body) document.body.setAttribute(attribute, value)\n return true\n}\n\n/**\n * Toggle the class on body\n * @param {*} cssClass\n */\nfunction manageBodyClass(cssClass, action = \"toggle\") {\n switch (action) {\n case \"add\":\n if (document.body) document.body.classList.add(cssClass)\n break\n case \"remove\":\n if (document.body) document.body.classList.remove(cssClass)\n break\n default:\n if (document.body) document.body.classList.toggle(cssClass)\n break\n }\n\n return true\n}\n\n/**\n * Changes the layout type\n * @param {*} param0\n */\nfunction* changeLayout({ payload: layout }) {\n try {\n if (layout === \"horizontal\") {\n yield put(changeTopbarThemeAction(\"light\"))\n document.body.removeAttribute(\"data-sidebar\")\n document.body.removeAttribute(\"data-sidebar-size\")\n } else {\n yield put(changeTopbarThemeAction(\"light\"))\n }\n yield call(changeBodyAttribute, \"data-layout\", layout)\n } catch (error) { }\n}\n\n/**\n * Changes the layout width\n * @param {*} param0\n */\nfunction* changeLayoutWidth({ payload: width }) {\n try {\n if (width === \"boxed\") {\n yield put(changeSidebarTypeAction(\"icon\"))\n yield call(changeBodyAttribute, \"data-layout-size\", width)\n } else {\n yield put(changeSidebarTypeAction(\"default\"))\n yield call(changeBodyAttribute, \"data-layout-size\", width)\n }\n } catch (error) { }\n}\n\n/**\n * Changes the left sidebar theme\n * @param {*} param0\n */\nfunction* changeLeftSidebarTheme({ payload: theme }) {\n try {\n yield call(changeBodyAttribute, \"data-sidebar\", theme)\n } catch (error) { }\n}\n\n/**\n * Changes the topbar theme\n * @param {*} param0\n */\nfunction* changeTopbarTheme({ payload: theme }) {\n try {\n yield call(changeBodyAttribute, \"data-topbar\", theme)\n } catch (error) { }\n}\n\n/**\n * Changes the left sidebar type\n * @param {*} param0\n */\nfunction* changeLeftSidebarType({ payload: { sidebarType, isMobile } }) {\n try {\n switch (sidebarType) {\n case \"compact\":\n yield call(changeBodyAttribute, \"data-sidebar-size\", \"small\")\n yield call(manageBodyClass, \"sidebar-enable\", \"remove\")\n yield call(manageBodyClass, \"vertical-collpsed\", \"remove\")\n break\n case \"icon\":\n yield call(changeBodyAttribute, \"data-keep-enlarged\", \"true\")\n yield call(manageBodyClass, \"vertical-collpsed\", \"add\")\n break\n case \"condensed\":\n // yield call(manageBodyClass, \"sidebar-enable\", \"add\")\n // if (!isMobile) yield call(manageBodyClass, \"vertical-collpsed\", \"add\")\n yield call(manageBodyClass, \"sidebar-enable\", \"add\")\n if (window.screen.width >= 992) {\n yield call(manageBodyClass, \"vertical-collpsed\", \"remove\")\n yield call(manageBodyClass, \"sidebar-enable\", \"remove\")\n yield call(manageBodyClass, \"vertical-collpsed\", \"add\")\n yield call(manageBodyClass, \"sidebar-enable\", \"add\")\n } else {\n yield call(manageBodyClass, \"sidebar-enable\", \"add\")\n yield call(manageBodyClass, \"vertical-collpsed\", \"add\")\n }\n break\n default:\n yield call(changeBodyAttribute, \"data-sidebar-size\", \"\")\n yield call(manageBodyClass, \"sidebar-enable\", \"remove\")\n if (!isMobile)\n yield call(manageBodyClass, \"vertical-collpsed\", \"remove\")\n break\n }\n } catch (error) { }\n}\n\n/**\n * Show the rightsidebar\n */\nfunction* showRightSidebar() {\n try {\n yield call(manageBodyClass, \"right-bar-enabled\", \"add\")\n } catch (error) { }\n}\n\n/**\n * Watchers\n */\nexport function* watchChangeLayoutType() {\n yield takeEvery(CHANGE_LAYOUT, changeLayout)\n}\n\nexport function* watchChangeLayoutWidth() {\n yield takeEvery(CHANGE_LAYOUT_WIDTH, changeLayoutWidth)\n}\n\nexport function* watchChangeLeftSidebarTheme() {\n yield takeEvery(CHANGE_SIDEBAR_THEME, changeLeftSidebarTheme)\n}\n\nexport function* watchChangeLeftSidebarType() {\n yield takeEvery(CHANGE_SIDEBAR_TYPE, changeLeftSidebarType)\n}\n\nexport function* watchChangeTopbarTheme() {\n yield takeEvery(CHANGE_TOPBAR_THEME, changeTopbarTheme)\n}\n\nexport function* watchShowRightSidebar() {\n yield takeEvery(SHOW_RIGHT_SIDEBAR, showRightSidebar)\n}\n\nfunction* LayoutSaga() {\n yield all([\n fork(watchChangeLayoutType),\n fork(watchChangeLayoutWidth),\n fork(watchChangeLeftSidebarTheme),\n fork(watchChangeLeftSidebarType),\n fork(watchShowRightSidebar),\n fork(watchChangeTopbarTheme),\n ])\n}\n\nexport default LayoutSaga\n","import { takeEvery, put, call } from \"redux-saga/effects\"\n\n// Calender Redux States\nimport {\n ADD_NEW_EVENT,\n DELETE_EVENT,\n GET_CATEGORIES,\n GET_EVENTS,\n UPDATE_EVENT,\n} from \"./actionTypes\"\nimport {\n getEventsSuccess,\n getEventsFail,\n addEventFail,\n addEventSuccess,\n updateEventSuccess,\n updateEventFail,\n deleteEventSuccess,\n deleteEventFail,\n getCategoriesSuccess,\n getCategoriesFail,\n} from \"./actions\"\n\n//Include Both Helper File with needed methods\nimport {\n getEvents,\n addNewEvent,\n updateEvent,\n deleteEvent,\n getCategories,\n} from \"../../helpers/fakebackend_helper\"\n\nfunction* fetchEvents() {\n try {\n const response = yield call(getEvents)\n yield put(getEventsSuccess(response))\n } catch (error) {\n yield put(getEventsFail(error))\n }\n}\n\nfunction* onAddNewEvent({ payload: event }) {\n try {\n const response = yield call(addNewEvent, event)\n yield put(addEventSuccess(response))\n } catch (error) {\n yield put(addEventFail(error))\n }\n}\n\nfunction* onUpdateEvent({ payload: event }) {\n try {\n const response = yield call(updateEvent, event)\n yield put(updateEventSuccess(response))\n } catch (error) {\n yield put(updateEventFail(error))\n }\n}\n\nfunction* onDeleteEvent({ payload: event }) {\n try {\n const response = yield call(deleteEvent, event)\n yield put(deleteEventSuccess(response))\n } catch (error) {\n yield put(deleteEventFail(error))\n }\n}\n\nfunction* onGetCategories() {\n try {\n const response = yield call(getCategories)\n yield put(getCategoriesSuccess(response))\n } catch (error) {\n yield put(getCategoriesFail(error))\n }\n}\n\nfunction* calendarSaga() {\n yield takeEvery(GET_EVENTS, fetchEvents)\n yield takeEvery(ADD_NEW_EVENT, onAddNewEvent)\n yield takeEvery(UPDATE_EVENT, onUpdateEvent)\n yield takeEvery(DELETE_EVENT, onDeleteEvent)\n yield takeEvery(GET_CATEGORIES, onGetCategories)\n}\n\nexport default calendarSaga\n","import { all, fork } from \"redux-saga/effects\"\n\n//public\nimport AccountSaga from \"./auth/register/saga\"\nimport AuthSaga from \"./auth/login/saga\"\nimport ForgetSaga from \"./auth/forgetpwd/saga\"\nimport ProfileSaga from \"./auth/profile/saga\"\nimport LayoutSaga from \"./layout/saga\"\nimport calendarSaga from \"./calendar/saga\"\n\nexport default function* rootSaga() {\n yield all([\n //public\n AccountSaga(),\n fork(AuthSaga),\n ProfileSaga(),\n ForgetSaga(),\n LayoutSaga(),\n fork(calendarSaga),\n ])\n}\n","import { createStore, applyMiddleware, compose } from \"redux\"\nimport createSagaMiddleware from \"redux-saga\"\n\nimport rootReducer from \"./reducers\"\nimport rootSaga from \"./sagas\"\n\nconst sagaMiddleware = createSagaMiddleware()\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\nconst store = createStore(\n rootReducer,\n composeEnhancers(applyMiddleware(sagaMiddleware))\n)\nsagaMiddleware.run(rootSaga)\n\nexport default store\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport App from \"./App\"\nimport * as serviceWorker from \"./serviceWorker\"\nimport { BrowserRouter } from \"react-router-dom\"\nimport { AuthProvider } from \"store/auth/authContext\"\n// import \"./i18n\"\nimport { Provider } from \"react-redux\"\n\nimport \"../src/index.css\"\n\nimport store from \"./store\"\n\nconst app = (\n \n \n \n \n \n \n \n)\n\nReactDOM.render(app, document.getElementById(\"root\"))\nserviceWorker.unregister()\n"],"sourceRoot":""}