{"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/profile/actionTypes.js","store/calendar/actionTypes.js","store/Breadcrumb/actionTypes.js","store/Breadcrumb/actions.js","pages/Authentication/user-profile.js","store/auth/profile/actions.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","store/auth/forgetpwd/actions.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","assets/images/googleMap.png","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","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","helpers/firebase_helper.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/calendar/actions.js","store/index.js","store/sagas.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","registerUserFailed","user","LOGIN_USER","LOGIN_SUCCESS","LOGOUT_USER","LOGOUT_USER_SUCCESS","API_ERROR","apiError","error","FORGET_PASSWORD","FORGET_PASSWORD_SUCCESS","FORGET_PASSWORD_ERROR","EDIT_PROFILE","PROFILE_SUCCESS","PROFILE_ERROR","RESET_PROFILE_FLAG","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","SET_BREADCRUMB_ITEMS","setBreadcrumbItems","title","items","withRouter","connect","state","success","Profile","editProfile","resetProfileFlag","props","email","setemail","useState","name","setname","idx","setidx","useEffect","sessionStorage","getItem","obj","JSON","parse","username","uid","setTimeout","breadcrumbItems","link","_jsxs","React","Fragment","children","_jsx","MetaTags","Row","Col","lg","Alert","color","Card","CardBody","Media","className","body","AvForm","onValidSubmit","e","v","values","AvField","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","Link","src","logoDark","alt","height","onFormSubmit","event","nativeEvent","submitter","handleSendOtp","fetch","method","headers","stringify","UserName","Password","then","res","json","response","status","message","intervalId","setInterval","prev","handleValidSubmit","OTP","token","cleanToken","replace","decodedToken","jwt","decode","setItem","userFullName","secretKey","encodedPasswordChange","sign","needsPasswordChange","history","push","onChange","target","disabled","concat","Date","getFullYear","Logout","logoutUser","_Fragment","propTypes","PropTypes","object","func","registrationError","loading","Account","registerUser","to","id","forgetError","forgetSuccessMsg","ForgetPassword","userForgetPassword","role","style","marginTop","WidgetPropsViolations","Miniwidget","todaysCount","settodaysCount","monthCount","setmonthCount","todaysChange","settodaysChange","monthChange","setmonthChange","bounce","setbounce","intCampusID","CampusID","async","url","data","TotalViolationsCount","urlMonth","responseMonthly","dataMonthly","console","log","getData","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","_JSON$parse","_JSON$parse3","_JSON$parse2","VehicleCount","item","ViolationCount","LocationName","violationsCnt","vehicleCnt","options","colors","chart","toolbar","show","dataLabels","enabled","stroke","curve","grid","borderColor","row","opacity","legend","xaxis","categories","dir","ReactApexChart","series","Barchart","plotOptions","bar","horizontal","columnWidth","endingShape","ViolationsContext","createContext","setViolations","VehicleDataContext","vehicledetails","setVehicleData","CampusIdContext","selectedCampusval","setCampusValue","AllUsersListContext","usersData","setUsersData","CampusList","setItems","useContext","handleCampusChange","result","undefined","length","CampusName","Component","YearlySales","speedoMeterProps","Speedometer","todaysMaxSpeed","settodaysMaxSpeed","monthlyMaxSpeed","setmonthlyMaxSpeed","todaysAvgSpeed","settodaysAvgSpeed","MaxSpeed","urlAvg","responseAvg","dataAvg","AvgSpeed","maxValue","divHeight","divWidth","param","justifyContent","alignItems","ReactSpeedometer","forceRender","needleTransition","needleTransitionDuration","startColor","endColor","Slidewithindicator","constructor","violationImgArr","super","Imageitems","ImagePath","ViolationImgBase64Img","i","altText","parseInt","caption","this","activeIndex","next","bind","previous","goToIndex","onExiting","onExited","animating","nextIndex","setState","ImageIndextemp","ImageIndex","newIndex","render","context","slides","CarouselItem","InnerImageZoom","zoomSrc","moveType","zoomScale","hideCloseButton","hideHint","Carousel","interval","keyboard","CarouselIndicators","onClickHandler","CarouselControl","direction","directionText","ViewImageModalComponent","violationImageIndex","setViolationImageIndex","RecordID","Message","setAlert","ReactBSAlert","warning","onConfirm","onCancel","confirmBtnBsStyle","setImageData","ImgPath","modalIsOpen","setModalIsOpen","imgData","alertmsg","toggle","onClick","Modal","isOpen","maxWidth","ModalHeader","tag","ModalBody","ReportType","SelectedReportTypeitem","setSelectedReportTypeItem","Select","setReportType","boxes","document","getElementsByClassName","box","ViolationType","ViolationTypeitem","setSelectedViolationTypeitem","setViolationType","SpeedType","SelectedSpeedTypeitem","setSelectedSpeedTypeItem","setSpeedType","SearchBar","Search","componentRef","useRef","Campusitems","setCampusItems","SelectedCampusitem","setSelectedCampusItem","selectedCampusVal","setCampusSelected","FromDtTm","setFrmDttm","moment","format","ToDtTm","setToDttm","FromSpeed","setFrmSpeed","ToSpeed","setToSpeed","BoolANPR","setANPR","columns","dataField","text","sort","csvExport","formatter","ModalInFunctionalComponent","selectedReportTypeVal","selectedSpeedTypeVal","Violations","xOverflow","ToolkitProvider","keyField","BootstrapTable","_objectSpread","ref","baseProps","window","google","Contextvalue","Provider","Campuslist","AreaChart","ViolationTables","AuthContext","AuthProvider","_ref","userPermissions","setUserPermissions","setUserFullName","isAuthenticated","setIsAuthenticated","checkAuth","cookie","split","find","startsWith","EditViolationModalComponent","ANPRVal","violationImage","showGenerateChallanButton","setshowGenerateChallanButton","ViolationRegNo","setViolationRegNo","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","ChallanDetailsResponse","setChallanDetailsResponse","ChallanType","setChallanType","ChallanID","setChallanID","CompanyLogo","setCompanyLogo","SecondaryCompanyLogo","setSecondaryCompanyLogo","showEmailButton","setShowEmailButton","showSMSButton","setShowSMSButton","DuplicateChallan","setDuplicateChallan","tog_small","classList","add","ViolationData","EnableEmail","EnableSMS","DownloadChallan","violationData","NewANPRVal","mode","LocationID","IncidentTime","VehicleSpeed","DownloadPDF","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","VehicleOwnerEmail","strToken","UserPermissions","userRolePermissions","DeleteViolations","EditDeleteStatus","for","recdID","slice","elindex","findIndex","someobject","splice","SaveViolation","VehicleOwnerContact","ChallanConfigDetails","AddressLine1","AddressLine2","City","State","base64Image","secondBase64Image","location","href","cancelBtnBsStyle","showCancel","reverseButtons","GetChallanConfig","SendEmailToVehicleOwner","responseType","SendSMSToVehicleOwner","UncontrolledTooltip","placement","htmlFor","defaultValue","class","ModalFooter","getCurrentDate","separator","arguments","newDate","date","getDate","month","getMonth","year","btnstylesObj","ExportCSV","size","handleClick","onExport","Monthlyrt","setMonthlyrt","selectonLoadLocVal","setselectonLoadLocVal","editviolations","seteditviolations","datefilename","selectedSizePage","setSelectedSizePage","isLoading","setIsLoading","isDownloadingImage","setIsDownloadingImage","slicedViolation","setSlicedViolation","hidden","headerStyle","colum","colIndex","textAlign","backgroundColor","position","cell","hiddenWhenPrint","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","Locations","locArr","Array","isArray","unshift","loclst","LocValue","changeReportTypeHandle","defaultChecked","checked","validate","myValidation","changeMonthHandler","ctx","changeFrmDateHandler","changeToDateHandler","errorMessage","changeFrmSpeedHandler","changeToSpeedHandler","SearchViolations","exportCSV","fileName","search","searchFormatted","xs","ButtonGroup","csvProps","exportPDF","TypeOfViolation","SpeedLimit","content","startY","head","autoTable","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","MapContainer","fetchLocationData","collection","catch","calculatePosition","lat","lng","latMin","latMax","lngMin","lngMax","mapBounds","x","y","onMarkerClick","marker","Latitude","Longitude","activeMarker","showingInfoWindow","intLocationID","LocationDetails","Blink","selectedPlace","cpuTemp","CPUTemperature","cpuUsage","CPUUsage","RamPer","RamPerc","UsagePer","DiskUsagePerc","LastUpadtedTime","TimeStamp","toLocaleString","timeZone","closeInfoWindow","renderMarkers","index","left","top","backgroundImage","Status","backgroundSize","backgroundRepeat","transform","cursor","renderInfoWindow","padding","border","borderRadius","right","Table","mapRef","createRef","componentDidMount","componentDidUpdate","prevProps","img2","exportingModule","Highcharts","require","MaxSpeedChart","maxSpeed","afterChartCreated","chartOptions","credits","yAxis","xAxis","labels","rangeSelector","selected","step","dataGrouping","exporting","buttons","contextButton","menuItems","filename","responsive","rules","condition","forExport","internalChart","forceUpdate","newArrayOfObj","rest","_objectWithoutProperties","_excluded","setData","UNSAFE_componentWillReceiveProps","_ref2","_excluded2","HighchartsReact","highcharts","callback","constructorType","updateArgs","HC_more","highcharts3d","drilldown","exampleColors","DiskChartBK","speedData","margin","spacingTop","spacingBottom","spacingLeft","spacingRight","options3d","alpha","beta","accessibility","point","valueSuffix","tooltip","pointFormat","pie","allowPointSelect","slicedOffset","shadow","startAngle","depth","innerSize","events","points","forEach","p","category","Color","lighten","toString","unselect","colorByPoint","convertedArr","speed","o","areaspline","fillOpacity","AvgSpeedChart","avgSpeed","fromDateChange","toDateChange","inputProps","startTime","endTime","now","setMinutes","getMinutes","getTimezoneOffset","toISOString","d","setHours","setDate","oneMonthAgo","setMonth","changeLocSelectHandler","requestBody","setrequestbody","requestB","handleDownload","parsedData","formattedData","AverageSpeed","toFixed","ws","XLSX","json_to_sheet","wb","book_new","book_append_sheet","EditVehicleDataModalComponent","VehicleEditedDetails","setVehicleDetailsInputs","VehicleCurrentRowData","handleEditChange","EmployeeID","VehicleRegistrationNumber","VehicleOwnerAddress","VehicleID","VehicleDetails","VehicleDetail","dataindex","UploadVehicleDataModalComponent","file","setFile","files","handleVehicleDataUploadClick","formdata","FormData","campus","append","info","NoOfRowsAffected","reload","err","VehicleDetailsTemplate","download","AddVehicleDataModalComponent","setVehicleOwnerName","setEmployeeID","setVehicleRegistrationNumber","setVehicleOwnerDept","setVehicleOwnerEmailAddress","setVehicleOwnerContact","setVehicleOwnerAddress","onSubmit","saveButton","RegExp","test","checkRegistrationNumber","ReactSelect","isMulti","closeMenuOnSelect","hideSelectedOptions","components","Option","isSelected","allowSelectAll","pattern","minLength","maxLength","GetVehicleDetails","VehicleDetailsList","modal","setModal","LocationList","setLocationList","HardwareDetailsList","setHardwareDetailsList","FormValues","setFormValues","ControllerIPAddress","CameraIPAddress","MacAddress","basic","setbasic","validateMsg","setvalidateMsg","HardwareDetails","EditedLocationName","setEditedLocationName","editLocationValues","seteditLocationValues","editControllerIP","seteditControllerIP","editCameraIP","seteditCameraIP","editRadarIP","seteditRadarIP","editMacAddress","seteditMacAddress","editLatitude","setditLatitude","editLongitude","seteditLongitude","EditResponseMessage","setEditResponseMessage","EditResponseMessageType","setEditResponseMessageType","validateIpAddress","SweetAlert","SaveEditLocDetails","ResponseMessage","ResponseType","custom","RadarIPAddress","seteditR","refreshPage","LocationStatus","LatLongData","LatContext","LongContext","LatitudeContext","mapStyles","DeviceMapContainer","centre","NewLatitudeValue","NewLongitudeValue","Map","zoom","initialCenter","Marker","contextType","AddDevice","EncodedCampus","toggleSwitch","settoggleSwitch","toggleSwitchSize","settoggleSwitchSize","setValues","NewLocationValue","setNewLocationValue","NewControllerIPValue","setNewControllerIPValue","NewRadarIPValue","setNewRadarIPValue","NewCameraIPValue","setNewCameraIPValue","NewMacAddressValue","setNewMacAddressValue","setNewLatitudeValue","setNewLongitudeValue","NewCampusID","setNewCampusID","CampusImageFile","setCampusImageFile","EncodedCampusImage","setEncodedCampusImage","AddCampusResponse","setAddCampusResponse","AddCampusResponseType","setAddCampusResponseType","CampsuList","setCampusList","SelectedCampusValue","setSelectedCampusValue","AddNewCampusValue","setAddNewCampusValue","LatLong","setLatLong","hasError","setHasError","AddNewCampus","classNamePrefix","SubmitNewDeviceDetails","FirmwareConfig","setSpeedLimit","GreenDisplayMsg","setGreenDisplayMsg","AmberDisplayMsg","setAmberDisplayMsg","RedDisplayMsg","setRedDisplayMsg","LightThreshold","setLightThreshold","SelectedLocationValue","setSelectedLocationValue","FirmwareDetails","setFirmwareDetails","AddMessageResponse","setAddMessageResponse","AddMessageResponseType","setAddMessageResponseType","GetLocationList","GetFirmwareList","LocationId","GreenDisplayMessage","AmberDisplayMessage","RedDisplayMessage","SubmitNewFirmwareDetails","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","_locationList","tab","Nav","pills","NavItem","NavLink","classnames","active","TabContent","TabPane","tabId","DeviceList","EncodedLogo","Base64CompanyLogo","setBase64CompanyLogo","showChallanPreview","setShowChallanPreview","ValidateCompanyLogo","setValidateCompanyLogo","showZoneConfigImage","setShowZoneConfigImage","coordinates","setCoordinates","startCoordinates","setStartCoordinates","textBoxValue","setTextBoxValue","polyCoordinates","setPolyCoordinates","setPoints","circleCoordinates","setCircleCoordinates","Offsymbol","paddingRight","OnSymbol","DataValues","setDataValues","GetChallanDetails","scope","colSpan","CardImg","challanpreview","SubmitChallanDetails","Switch","uncheckedIcon","checkedIcon","onColor","ValidateCompanyLog","allowedTypes","fileExtension","pop","includes","fileType","reader","FileReader","readAsDataURL","onload","NewSMTPHost","setNewSMTPHost","NewSMTPPort","setNewSMTPPort","NewSMTPEnableSSL","setNewSMTPEnableSSL","NewMailFrom","setMailFrom","NewPassword","setNewPassword","EnableSSLSwitch","setEnableSSLSwitch","EnableEmailAlerts","setEnableEmailAlerts","EnableSMSAlerts","setEnableSMSAlerts","GetSmtpDetails","SmtpConfigDetails","HostName","MailFrom","PortNumber","SubmitNewSmtpDetails","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","setModalIsOpenToTrue","DeleteRole","funDelete","cancelBtnText","RowsAffected","SaveRolePermissions","tabIndex","AddNewRole","roleName","UserRegistratinoModalComponent","FirstName","setFirstName","LastName","setLastName","EmailID","setEmailID","MobileNumber","setMobileNumber","setUserName","ConfirmPassword","setConfirmPassword","SendMail","setSendMail","SendSMS","setSendSMS","SendEodMail","setSendEodMail","SessionExpired","checkName","isUndefined","checkMobileNumber","checkPasswords","confirmPassword","validRegExp","NewData","match","DeleteUserModalComponent","useHistory","UserData","userDelete","UserID","removeItem","EditUserModalComponent","nameArr","setnameArr","setUserData","selectedCampusList","availableCampusList","availableLocationList","selectedLocationList","userRoleDetails","UserRoleID","UserRole","UserFullName","UserEmail","UserContactNumber","SendEoDMail","controlShouldRenderValue","ChangePasswordModalComponent","withFirstAndLast","sizePerPageRenderer","currSizePerPage","Users","ReactToPrint","trigger","btnRadiostylesObj","marginLeft","RegisteredVehicleFlag","setRegisteredVehicleFlag","selectedViolationTypeVal","speedLimit","setspeedLimit","vehicleOwner","setvehicleOwner","ownerEmail","setownerEmail","ownerNo","setownerNo","ownerDept","setownerDept","empID","setempID","violationFreq","setviolationFreq","violationsForExport","setviolationsForExport","setheaders","dataArr","headersArr","arr","k","field","data1","showSavedImage","setShowSavedImage","showUpdatedImage","setShowUpdatedImage","imageUrl","setImageUrl","coordinatesSaved","setCoordinatesSaved","selectedImage","setSelectedImage","image","setImage","imageLoaded","setImageLoaded","isPolygonClosed","setIsPolygonClosed","showStartingPoint","setShowStartingPoint","CampusVal","GetZoneConfigDetails","SelectedZoneSideItems","setSelectedZoneSideItems","SelectedTrafficDirection","setSelectedTrafficDirection","LocVal","ZoneConfig","ZoneROI","Base64UploadedImage","base64Img","Image","selectedOption","URL","createObjectURL","Stage","getStage","getPointerPosition","firstPoint","Math","sqrt","Layer","RegularPolygon","sides","radius","fill","draggable","onDragEnd","handleDragEnd","updatedPoints","strokeWidth","Line","flatMap","Shape","sceneFunc","shape","beginPath","moveTo","lineTo","closePath","fillStyle","fillStrokeShape","DefaultPasswordChangeComponent","setErrors","handleChangePassword","validationErrors","newErrors","Object","keys","handleLogout","userData","editViolations","vehicleCount","registerDevice","registerVehicle","smtpSettings","challanSettings","userManagement","addUser","editDeleteUser","roleManagement","addRole","editDeleteRole","changePassword","deleteViolations","dashboard","violationLogs","maps","addZoneConfig","profile","violationsReport","defaultPasswordChange","userRoutes","path","component","Dashboard","requiredPermissions","ViolationLogs","Maps","SMTPSettings","ChallanSettings","UserRoles","UserProfile","ViolationsReport","exact","Redirect","authRoutes","Login","ForgetPwd","Register","Authmiddleware","Layout","isAuthProtected","Route","pathname","from","withTranslation","menu","setMenu","Dropdown","DropdownToggle","DropdownMenu","t","SimpleBar","setusername","DropdownItem","layoutType","showRightSidebar","leftMenu","leftSideBarType","toggleLeftmenu","setsearch","createmenu","setCreateMenu","navigator","userAgent","logo","logoLightPng","tToggle","ProfileMenu","scrollElement","currentPosition","offsetTop","innerHeight","getScrollElement","scrollTop","pathName","initMenu","MetisMenu","matchingMenuItem","getElementsByTagName","parent","parentElement","parent2El","childNodes","parent2","parent3","parent4","parent5","activateParentDropdown","recalculate","SidebarContent","Footer","fluid","changePreloader","preventDefault","layoutWidth","leftSideBarTheme","FormGroup","isPreloader","BreadcrumbData","Breadcrumb","notificationmsg","setnotifications","itemLength","violationsStrng","audio","Audio","sound","urlNotify","Notifications","notifications","lastNotId","msg","NotificationID","IncidentDescription","Campus","UpdatedAt","toast","POSITION","TOP_RIGHT","autoClose","loop","play","setlivenotifications","intViolationsCnt","setViolationData","intUserID","Sparklines","svgWidth","svgHeight","SparklinesBars","ToastContainer","capitalizeFirstLetter","string","charAt","toUpperCase","toggleMenuCallback","scrollTo","Header","Sidebar","Rightbar","NonAuthLayout","FirebaseAuthBackend","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","additionalUserInfo","details","firstName","given_name","first_name","lastName","family_name","last_name","fullName","picture","createdDtm","FieldValue","serverTimestamp","lastLoginTime","set","setLoggeedInUser","getAuthenticatedUser","initializeApp","onAuthStateChanged","_fireBaseBackend","getFirebaseBackend","ProtectedRoute","booleanValue","every","permission","config","apiKey","process","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","Auth","VerticalLayout","Router","route","Boolean","hostname","INIT_STATE","showSidebar","action","initialState","login","account","Calendar","filter","rootReducer","combineReducers","calendar","axiosApi","axios","create","baseURL","get","post","defaults","common","interceptors","use","postJwtProfile","postJwtRegister","postJwtLogin","postJwtLogout","postJwtForgetPwd","getEvents","addNewEvent","updateEvent","put","deleteEvent","delete","del","getCategories","call","registerUserSuccessful","watchUserRegister","takeEvery","accountSaga","all","fork","loginSuccess","authSaga","forgetUser","userForgetPasswordError","watchUserPasswordForget","forgetPasswordSaga","profileError","watchProfile","ProfileSaga","changeBodyAttribute","attribute","setAttribute","manageBodyClass","cssClass","remove","changeTopbarThemeAction","removeAttribute","changeSidebarTypeAction","changeLeftSidebarTheme","_ref3","_ref4","changeLeftSidebarType","_ref5","screen","watchChangeLayoutType","watchChangeLayoutWidth","watchChangeLeftSidebarTheme","watchChangeLeftSidebarType","watchChangeTopbarTheme","watchShowRightSidebar","LayoutSaga","fetchEvents","getEventsFail","onAddNewEvent","addEventSuccess","addEventFail","onUpdateEvent","updateEventSuccess","updateEventFail","onDeleteEvent","deleteEventSuccess","deleteEventFail","onGetCategories","getCategoriesFail","calendarSaga","sagaMiddleware","createSagaMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","run","AccountSaga","AuthSaga","ForgetSaga","app","BrowserRouter","forceRefresh","App","ReactDOM","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.eee67855.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","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\";","/* 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","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)","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","//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\nexport 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 {\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","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 \"RecordID\": props.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 || 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\n//export default GoogleApiWrapper({\r\n// apiKey: \"AIzaSyA2nB278fvP2ZsDAYTYMGYRE751Vew6cIg\",\r\n// libraries: [\"visualization\"]\r\n//})(MapContainer);\r\nexport default 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\n const GetViolationImage = (RecordID) => {\r\n if (RecordID != 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 \"RecordID\": 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 \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.ViolationData.RecordID);\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","export default __webpack_public_path__ + \"static/media/googleMap.91bee6a3.png\";","import React, { Component, createRef } from 'react';\r\nimport img2 from '../../assets/images/googleMap.png';\r\nimport { apiEndpoint } from 'helpers/url_helper';\r\nimport { Table } from \"reactstrap\";\r\nimport Blink from \"react-blink-text\";\r\n\r\nclass MapContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.mapRef = createRef();\r\n this.state = {\r\n collection: [],\r\n activeMarker: null,\r\n showingInfoWindow: false,\r\n selectedPlace: null,\r\n status: '',\r\n cpuTemp: '',\r\n cpuUsage: '',\r\n RamPer: '',\r\n UsagePer: '',\r\n LastUpadtedTime: '',\r\n mapBounds: {\r\n latMin: 10.0, // southernmost latitude\r\n latMax: 48.9, // northernmost latitude\r\n lngMin: 67.5, // westernmost longitude\r\n lngMax: 77.9, // easternmost longitude\r\n },\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchLocationData(this.props.CampusID);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.CampusID !== this.props.CampusID) {\r\n this.fetchLocationData(this.props.CampusID);\r\n }\r\n }\r\n\r\n fetchLocationData = (intCampusID) => {\r\n if (!intCampusID) return; // Prevent fetching if CampusID is undefined\r\n\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,\r\n strToken: sessionStorage.getItem('Clear_AuthUser'),\r\n }),\r\n })\r\n .then((res) => res.json())\r\n .then((result) => {\r\n const locations = JSON.parse(result.Locations || '[]');\r\n this.setState({ collection: locations });\r\n })\r\n .catch((error) => console.error('Error fetching locations:', error));\r\n };\r\n\r\n calculatePosition = (lat, lng) => {\r\n const { latMin, latMax, lngMin, lngMax } = this.state.mapBounds;\r\n const x = ((lng - lngMin) / (lngMax - lngMin)) * 100;\r\n const y = ((latMax - lat) / (latMax - latMin)) * 100;\r\n return { x, y };\r\n };\r\n\r\n onMarkerClick = (marker) => {\r\n const { x, y } = this.calculatePosition(marker.Latitude, marker.Longitude);\r\n\r\n this.setState({\r\n activeMarker: { ...marker, x, y },\r\n showingInfoWindow: true,\r\n });\r\n const url = apiEndpoint + '/GetLocationData';\r\n fetch(url, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n intLocationID: marker.LocationID,\r\n strToken: sessionStorage.getItem('Clear_AuthUser'),\r\n }),\r\n })\r\n .then((res) => res.json())\r\n .then((result) => {\r\n const data = JSON.parse(result.LocationDetails);\r\n console.log(\"Fetched Location Data:\", data); // Debugging log\r\n \r\n const status = data.status === \"Online\"\r\n ? \r\n : ;\r\n debugger;\r\n this.setState({\r\n\r\n selectedPlace: data.LocationName,\r\n cpuTemp: data.CPUTemperature + \"°C\",\r\n cpuUsage: data.CPUUsage + \"%\",\r\n RamPer: data.RamPerc + \"%\",\r\n UsagePer: data.DiskUsagePerc + \"%\",\r\n LastUpadtedTime: new Date(data.TimeStamp).toLocaleString(undefined, {\r\n timeZone: 'Asia/Kolkata', \r\n }),\r\n status: status,\r\n });\r\n })\r\n .catch((error) => console.error(error));\r\n };\r\n closeInfoWindow = () => {\r\n this.setState({\r\n showingInfoWindow: false,\r\n activeMarker: null,\r\n });\r\n };\r\n\r\n renderMarkers = () => {\r\n return this.state.collection.map((marker, index) => {\r\n const { x, y } = this.calculatePosition(marker.Latitude, marker.Longitude);\r\n\r\n return (\r\n this.onMarkerClick(marker)}\r\n >\r\n );\r\n });\r\n };\r\n\r\n renderInfoWindow = () => {\r\n const {\r\n selectedPlace,\r\n status,\r\n cpuTemp,\r\n cpuUsage,\r\n RamPer,\r\n UsagePer,\r\n LastUpadtedTime,\r\n activeMarker,\r\n showingInfoWindow,\r\n } = this.state;\r\n\r\n if (!showingInfoWindow || !activeMarker) return null;\r\n\r\n //const { x, y } = this.calculatePosition(\r\n // this.state.activeMarker.Latitude,\r\n // this.state.activeMarker.Longitude\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 \r\n
{selectedPlace}{status}Last Updated: {LastUpadtedTime}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CPU TempCPU UsageRAM UsedDisk Usage
{cpuTemp}{cpuUsage}{RamPer}{UsagePer}
\r\n
\r\n \r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n {this.renderMarkers()}\r\n {this.renderInfoWindow()}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default 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\nexport default DeviceMapContainer;\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 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 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\";\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 {\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","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 { 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 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":""}