{"version":3,"sources":["store/types.js","utils/TimeUtils.js","store/actions/daySummaryAction.js","elements/input.js","elements/infiniteLoader.js","elements/autoComplete.js","store/actions/tractorAction.js","store/actions/editGeofenceAction.js","assets/login/Long-arrow.svg","assets/area_icon.svg","assets/home-tractor/close.svg","elements/button.js","assets/landing_time.svg","assets/no_network.svg","assets/tractor-images/bhoomiputra_demo.png","assets/orange_pen.svg","assets/home-tractor/WhiteClose.svg","assets/Vector.svg","assets/add_geofence.png","assets/login/Logo-.svg","assets/login/person.svg","assets/login/person_add.svg","assets/login/support_agent.svg","assets/loader.svg","assets/spinner.svg","assets/home/Logo.svg","assets/home/notifications.svg","assets/home/person.svg","assets/phone.svg","assets/home/Filter.svg","assets/todayTractor.svg","assets/todayTime.svg","assets/todayDistance.svg","assets/expired.svg","assets/tractor-images/arjun.png","assets/tractor-images/bhoomiputra.png","assets/tractor-images/jivo.png","assets/tractor-images/john_deere.png","assets/tractor-images/massey_ferguson.png","assets/tractor-images/sarpanch.png","assets/tractor-images/sonalika.png","assets/tractor-images/swaraj_744.png","assets/tractor-images/swaraj_843.png","assets/tractor-images/swaraj_855_xm.png","assets/tractor-images/swaraj_963.png","assets/tractor-images/yuvo.png","assets/tractor-images/yuvraj.png","assets/distance.svg","assets/speedometer.svg","assets/lastActive.svg","assets/calendar.svg","assets/Replay.svg","assets/downArrow.svg","assets/upArrow.svg","assets/home-tractor/speedo-meter.svg","assets/home-tractor/low-fuel.svg","assets/home-tractor/high-fuel.svg","assets/Warning.svg","assets/cancel.svg","assets/contact.svg","store/actions/otpRequestAction.js","store/actions/loginAction.js","views/Login/index.js","store/actions/fetchNotificationAction.js","subcomponents/list.jsx","subcomponents/category.jsx","store/actions/realtimeRequestAction.js","utils/redirect.js","components/Navbar.jsx","store/actions/logoutAction.js","store/actions/selectDateAction.js","store/actions/localTractorNameAction.js","store/actions/updateUnitAction.js","utils/getTractorImages.js","components/tractor.jsx","components/ListTimeline.jsx","utils/getFuelMeterTank.js","components/TractorDesc/tractordesc.styles.js","models/DaySummary.ts","models/Patches.ts","models/Commutes.ts","models/PointsOnMap.ts","utils/MapUtils.js","apiConfig/index.js","store/reducers/otpRequestReducer.js","store/reducers/loginReducer.js","store/reducers/daySummaryReducer.js","store/reducers/tractorReducer.js","store/reducers/errorReducer.js","store/reducers/fetchNotificationReducer.js","store/reducers/getGromaxReducer.js","store/reducers/selectDateReducer.js","store/reducers/realtimeReducer.js","store/reducers/tractorDetailReducer.js","store/reducers/localTractorNameReducer.js","store/reducers/tractorCompanyReducer.js","store/reducers/tractorModelReducer.js","store/reducers/getAllGeofenceReducer.js","store/reducers/editGeofenceReducer.js","store/reducers/getTodayStatusReducer.js","store/reducers/getDayEventsReducer.js","store/reducers/updateUnitReducer.js","store/reducers/index.js","store/actions/errorAction.js","store/sagas/otpRequestSaga.js","config.js","firebase/index.js","store/sagas/loginSaga.js","utils/getImplementData.js","store/sagas/daySummarySaga.js","store/sagas/tractorSaga.js","store/actions/filterTractorAction.js","store/sagas/filterTractorSaga.js","store/sagas/fetchNotificationSaga.js","store/actions/getGromaxAction.js","store/sagas/getGromaxSaga.js","store/actions/updateTractorDataAction.js","store/sagas/updateSaga.js","store/sagas/realtimeSaga.js","store/actions/tractorDetailAction.js","store/sagas/tractorDetailSaga.js","store/actions/tractorCompanyAction.js","store/sagas/tractorCompanySaga.js","store/actions/tractorModelAction.js","store/sagas/tractorModelSaga.js","store/actions/getAllGeofenceAction.js","store/sagas/getAllGeofenceSaga.js","store/sagas/editGeofenceSaga.js","store/actions/getTodayStatusAction.js","store/sagas/getTodayStatusSaga.js","store/actions/getDayEventsAction.js","store/sagas/getDayEventsSaga.js","store/sagas/index.js","store/index.js","api/index.js","components/TractorDesc/index.js","elements/multiSelect.js","components/sidebar.jsx","components/SubscriptionExpired.jsx","views/Dashboard/index.js","App.js","index.js"],"names":["GET_ERRORS","CLEAR_ERRORS","OTP_REQUEST","OTP_REQUEST_SUCCESS","OTP_REQUEST_FAILURE","OTP_RESET","LOGIN_REQUEST","LOGIN_UPDATE","LOGIN_REQUEST_SUCCESS","LOGIN_REQUEST_FAILURE","LOGOUT_REQUEST","LOGOUT_REQUEST_SUCCESS","LOGOUT_REQUEST_FAILURE","FILTER_TRACTOR_REQUEST","FILTER_TRACTOR_SUCCESS","FILTER_TRACTOR_FAILURE","RESET_ALL_FILTERS","DAY_SUMMARY_REQUEST","DAY_SUMMARY_SUCCESS","DAY_SUMMARY_FAILURE","TRACTOR_REQUEST","TRACTOR_REQUEST_SUCCESS","TRACTOR_REQUEST_FAILURE","FETCH_NOTIFICATION_REQUEST","FETCH_NOTIFICATION_SUCCESS","FETCH_NOTIFICATION_FAILURE","GET_GROMAX_REQUEST","GET_GROMAX_SUCCESS","GET_GROMAX_FAILURE","SELECT_DATE","UPDATE_REQUEST","UPDATE_SUCCESS","UPDATE_FAILURE","REALTIME_REQUEST","REALTIME_SUCCESS","REALTIME_FAILURE","REALTIME_RESET","TRACTOR_DETAIL_REQUEST","TRACTOR_DETAIL_SUCCESS","TRACTOR_DETAIL_FAILURE","TRACTOR_DETAIL_RESET","LOCAL_TRACTOR_NAME","RESET_LOCAL_TRACTOR_NAME","TRACTOR_COMPANY_REQUEST","TRACTOR_COMPANY_SUCCESS","TRACTOR_COMPANY_FAILURE","TRACTOR_MODEL_REQUEST","TRACTOR_MODEL_SUCCESS","TRACTOR_MODEL_FAILURE","GET_ALL_GEOFENCE_REQUEST","GET_ALL_GEOFENCE_SUCCESS","GET_ALL_GEOFENCE_FAILURE","EDIT_GEOFENCE_REQUEST","EDIT_GEOFENCE_SUCCESS","EDIT_GEOFENCE_FAILURE","EDIT_GEOFENCE_RESET","GET_TODAY_STATUS_REQUEST","GET_TODAY_STATUS_SUCCESS","GET_TODAY_STATUS_FAILURE","GET_DAY_EVENTS_REQUEST","GET_DAY_EVENTS_SUCCESS","GET_DAY_EVENTS_FAILURE","GET_DAY_EVENTS_RESET","SELECTED_UNIT","tripTimeFromDaySummary","totalTime","dataToDisplay","secs","mins","Math","trunc","hours","push","join","getTimeDiff","deviceTime","deviceLastSeen","Date","diffInMs","getTime","diffTime","diffInMins","diffInHrs","diffInDays","diffInMonth","diffInYear","getTimeStatusDiff","formattedDate","date","month","getMonth","year","getFullYear","today","getDate","formattedSlashDate","parsedFuelAndStatus","realtime","tractor","parsed","status","int","parseInt","some","Number","toString","charArray","length","updateStatusReg","speed","time","fuel_range_params","start_fuel","end_fuel","fuel_accuracy","fuel","fuelInLitres","fuelMask","startFuel","endFuel","fuelAccuracy","rangeStart","computeFuelToDisplay","fuel_level_dashboard","app_mask_flags","timeDisplay","toLocaleTimeString","hour","minute","hour12","daySummaryRequest","realTime","newDate","type","types","payload","daySummarySuccess","area","kms","fuelLevel","lastActive","dailyStatus","commutes","patches","replay","patchesLatsCentroid","patchesLongsCentroid","patchesArea","patchesStartTime","patchesEndTime","beacon","daySummaryFailure","error","useStyles","makeStyles","theme","inputBox","display","alignItems","justifyContent","background","borderRadius","opacity","margin","outline","border","inputBoxIcon","padding","width","input","flex","fontSize","color","height","marginBottom","inputError","withTheme","props","classes","className","style","icon","iconPosition","src","alt","placeholder","value","undefined","onChange","name","spellCheck","wrapper","position","top","left","right","bottom","overflow","palette","primary","main","transition","div","animate","exit","Loader","autoCompleteBoxWrapper","maxWidth","placeContent","autoCompleteBox","minWidth","listbox","marginTop","zIndex","listStyle","backgroundColor","paper","maxHeight","cursor","optionItem","flexDirection","tags","gap","connect","state","dispatch","selectTractor","tractorRequest","daySummary","data","onPositionChange","setSelectedTractor","onShowTrips","show","setShow","useAutocomplete","id","options","filter","item","subscription","is_valid","getOptionLabel","option","index","device_pk","model","make","event","t","prev","realtimeList","find","rt","fb_key","getRootProps","getInputProps","getListboxProps","getOptionProps","groupedOptions","map","tractorRequestSuccess","dates","tractorRequestFailure","editGeofenceRequest","requestEditGeofence","editGeofenceSuccess","resEditGeofence","editGeofenceFailure","editGeofenceReset","module","exports","btn","btnFilled","btnOutlined","button","disabled","notDisabled","OutlinedButton","children","secondary","onClick","txtColor","otpRequestSuccess","otpSuccess","phone","loginRequest","otp","loginRequestSuccess","message","realTimes","loginRequestFailure","loginUpdate","tractors","otpSent","otpRequestReducer","otpResponse","otpNumber","loadingOtp","loading","errorOtp","loginReducer","isLoggedIn","loadingLogin","errorLogin","makeOtpRequest","otpRequest","makeLoginRequest","location","useLocation","history","useHistory","useEffect","localStorage","getItem","redirectTo","param","URLSearchParams","search","get","decodeURIComponent","Logo","initialValues","validate","values","errors","test","onSubmit","touched","handleSubmit","handleChange","setFieldValue","Person","numInputs","isInputNum","isInputSecure","inputStyle","focusStyle","containerStyle","errorStyle","shouldAutoFocus","hasErrored","separator","hasOwnProperty","Spinner","Arrow","PersonAdd","href","Support","fetchNotificationRequest","fetchNotificationSuccess","fetchNotificationFailure","e","column","nortification","nortificationHeader","cross","card","notify","fetchNotificationReducer","allTractors","localTracName","localTractorNameReducer","localTractorNameList","setNortificationOpen","Close","setSelected","nortificationOpen","notificationValue","tractorName","useState","notification","setNotification","allAlerts","flatMap","obj","Object","reduce","acc","val","fleet_category","scrollPaddingTop","Card","minHeight","boxShadow","filteredObject","element","i","toUpperCase","getName","device_id","time_stamp","split","reverse","marginLeft","setNotificationValue","securityCounter","setSecurityCounter","healthCounter","setHealthCounter","subscriptionCounter","setSubscriptionCounter","activiytCounter","setActivityCounter","otherCounter","setOtherCounter","count1","count2","count3","count4","count5","forEach","title","subtitle","count","key","realtimeRequest","realtimeRequestSuccess","realtimeData","redirect","pathname","pin","pin_name","queryParams","encodeURIComponent","nav","logo","navIcons","marginRight","overflowY","menuPaper","contactUs","privacy","contactUsHeader","contactUsDetail","textDecoration","lineHeight","privacyDetail","areaInputType","boxSizing","tractorReducer","loginTractors","loginId","mm_userid","auth_token","datesLoading","userId","logout","resetRealtime","selectDate","selectDateUtil","makeLoginUpdate","localNameAction","unitUpdateRequest","requestUnit","selectUnitAction","showTracking","anchorEl","setAnchorEl","selected","handleProfileMenuClose","contactUsOpen","setContactUsOpen","selectUnitOpen","setSelectUnitOpen","areaUnit","setAreaUnit","unit","Nortification","aria-controls","aria-haspopup","currentTarget","Menu","elevation","keepMounted","open","Boolean","onClose","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","Tooltip","MenuItem","window","pinName","Modal","aria-labelledby","aria-describedby","initial","duration","DarkClose","Phone","preventDefault","target","getTractorImages","toLowerCase","trim","includes","yuvraj","yuvo","jivo","arjun","sarpanch","bhoomiputra1","bhoomiputra","swaraj744","swaraj855","swaraj963","swaraj843","masseyFerguson","johnDeere","sonalika","tractorDisc","tractorActive","selectTractorDisc","engineOff","engineOn","engineOut","makeModel","textTransform","fontWeight","tractorNameText","imageBorderOut","imageBorderOn","imageBorderOff","subcriptionExpired","checkRealtime","realtimeReducer","selectedUnitReducer","selectedUnit","setShowAreaButton","drawingTool","shapes","setDrawingTool","setShapes","tractorImage","checkEngineText","stat","setMap","overlay","checkEngineStatus","checkEngine","NoNetwork","img","tractor_img_url","LandingTime","AreaIcon","toFixed","Expired","layoutId","accordion__section","accordion","accordion__title","accordion__icon","rotate","transform","accordion__content","accordion__text","active","ListItem","setActive","content","useRef","setHeight","upArrow","DownArrow","ref","borderLeft","getFuelMeterTank","maxFuel","fuelPercent","Low","Medium","High","tractorDescStyles","tractorDesc","imageBox","objectFit","objectPosition","tractorDetail","tractorDescHeader","statusDesc","fuelDesc","dateDesc","engineStatus","justifySelf","statusDescData","datePicker","summary","paddingTop","summaryIcon","summaryBlock","showTrips","dayWithDotContainer","dayWithDot","filterOptions","filterOptionsHeader","inputType","imgBorderOut","imgBorderOn","imgBorderOff","replayButton","edit","tractorWorkHeaader","subHeader","calendarHeader","geofenceHeader","geofenceWrapper","geofenceTab","geofenceTabTop","geofenceNewTab","DaySummary","$dateId","$date","$computationId","$idling_time","$job_time","$haulage_time","$distance","$total_fuel","$total_fuel_lit","$max_fuel","$min_fuel","$area","$device_fk_id","$details_flag","$patches","$commutes","dateId","computationId","idling_time","job_time","haulage_time","distance","total_fuel","total_fuel_lit","max_fuel","min_fuel","device_fk_id","details_flag","this","Patches","centroid_lat","centroid_lon","radius","patch_tag","Commutes","start","p20","p40","p60","p80","end","PointsOnMap","lats","lngs","ids","MAGIC_STRING","parseDaySummary","com","pat","commute","patch","running_time","patch_area","lat_centroid","lon_centroid","fuel_consumed","boundary_radius_avg","patch_tags","computation_id","fuel_params","max","min","parseDayDetails","commutesParsed","addArraysToDecompressedData","patchesParsed","replayParsed","ref_lat","ref_long","ref_lon","commute_lat_array","getFinalReplayArray","commute_lon_array","lons","ts","ref_time","output_array","getIntegerArray","finalData","convertNotificationTimeStampToMillis","getCompleteTripTimeStamp","ref_ts","holder","currentStatus","isDigit","updateStatusArray","getIntValue","x","indexOf","getTractorIgnitionStatus","addArraysToDecompressedReplay","formPointsFromCommutesOrPatches","lat","lon","points","formPointsFromReplay","trip_beacons","commutesOrPatches","commuteOrPatch","refArray","getFinalArray","timeStamp","inputStr","refArr","updateDoubleData","dataList","updated","getDifferenceData","originalArray","result","getBaseValueDiff","parseFloat","c","intValue","inputString","BASE","charAt","list","resultSum","pow","opArray","subStrArray","endIndexArr","start_ind","end_ind","sub_str","positions","unshift","substring","getSubStrings","tempArray","getDiffArray","subStr","pos_arr","end_ind_arr","diffArr","length_arr","getDifferenceToNextNumber","base_arr","temp","slice","j","sum","tempArr","shift","outArray","pop","opDoubleArray","a","API_ROUTES","API_BASE_URL","PARENT_URL","process","initialState","action","setItem","user_type","new_user","support_no","allRealTimes","dob","mm_is_reg","mm_phone","filterModels","filterMakers","filterNames","filtered","updateLoading","removeItem","sessionStorage","models","makers","names","daySummaryReducer","msg","errorReducer","getGromaxReducer","selectDateReducer","requestTractorDetail","tractorDataUpdated","requestMakeId","resTractorCompany","requestTractorModelId","resTractorModel","requestTractorId","resAllGeofence","requestUserID","resTodayStatus","requestDeviceID","resAllEvents","rootReducer","combineReducers","gromaxReducer","dateReducer","tractorUpdateReducer","nameList","found","requestLocalTractorName","tractorCompanyReducer","tractorModelReducer","getAllGeofenceReducer","editGeofenceReducer","getTodayStatusReducer","getDayEventsReducer","returnErrors","clearErrors","asyncOtpRequest","otpRequestSaga","put","call","_api","takeLatest","config","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","firebase","initializeApp","parseIndividualRealtimeString","presenceRef","database","presenceStatus","on","snapshot","dataSnap","currentCount","isInteger","set","onDisconnect","realtimeReadRef","once","firebaseStr","refLatLon","snapsho","firebaseRefLatLonStr","indiaLatMin","indiaLonMin","hexSum","intArray","valueArray","lastEndInd","finalArray","da","_temp","tempStr","latitude","longitude","lock_status","orientation","rpm","sts","asyncLoginRequest","asyncLoginUpdateRequest","asyncLogoutRequest","loginRequestSaga","loginUpdateSaga","logoutRequestSaga","phoneNumber","res","auth_tokens","access_token","refresh_token","realtimeTractorData","realCheckData","realTimesUpdate","goOffline","app","delete","then","getImplementData","replayTimeStamp","beaconData","implementType","timestamp","startTsMs","start_ts","endTsMs","end_ts","beacon_metadata","implement_type","asyncDaySummary","daySummaryRequestSaga","parsedData","deviceId","commutePatchesLength","keys","res2","beacons","asynctractorRequest","tractorRequestSaga","sort","filterTractorSuccess","asyncFilterTractorRequest","filterTractorSaga","getTractors","getRealTimes","select","filteredTractors","filteredRealTimes","asyncFetchNotificationSaga","fetchNotificationSaga","getGromaxSuccess","asyncGetGromaxRequestSaga","getGromaxRequestSaga","updateSuccess","asyncUpdateRequest","updateSaga","asyncRealtimeSaga","realtimeSaga","tractorDetailSuccess","asyncTractorDetailUpdateSaga","tractorDetailUpdateSaga","tractorCompanyRequest","tractorCompanySuccess","asyncTractorCompanySaga","tractorCompanySaga","tractorModelRequest","tractorModelSuccess","asyncTractorModelSaga","tractorModelSaga","getAllGeofenceRequest","getAllGeofenceSuccess","asyncGetAllGeofenceSaga","getAllGeofenceSaga","asyncEditGeofenceSaga","editGeofenceSaga","getTodayStatusRequest","getTodayStatusSuccess","asyncGetTodayStatusSaga","getTodayStatusSaga","getDayEventsRequest","getDayEventsSuccess","asyncGetDayEventsSaga","getDayEventsSaga","rootSaga","all","sagaMiddleware","createSagaMiddleware","store","createStore","composeWithDevTools","applyMiddleware","run","headerParams","platform","axios","defaults","baseURL","fetchTractorListData","post","fetchRealtimeTractorData","headers","response","getRefreshAccessToken","makeOTPRequestCall","debug","fetchDaySummary","dateValue","fetchDayDetail","fetchTripsDates","fetchNotification","getGromaxDevices","immobalizeDevice","updateTractorData","tractorCompanyAPI","method","url","tractorModelAPI","company","getAllGeofence","editGeofenceAPI","getTodayStatusAPI","getDayEventsAPI","callback","params","reload","variants","closed","selectedTractor","selectedRealtime","selectedDate","summaryLoading","gromaxDevices","trac","user_name","user_dob","tractorUpdateMessage","patchArea","tractorCompany","tractorModel","dayEvents","dealerHandle","allGeofenceData","editGeofenceData","updateTractorRequest","updateRequest","updateTractorDetailRequest","tractorDetailRequest","updateTractorName","localTractorNameAction","resetTractorUpdate","tractorCompanySubmit","tractorModelSubmit","dayEventsSubmit","dayEventsReset","editGeofenceSubmit","resetEditGeofence","onPositonChange","tractorList","realTimeList","showAreaButton","addGeofence","setAddGeofence","setCurrentGeofence","currentGeofence","newGeofence","setNewGeofence","setShowTracking","updateTractorRef","setSelectedDate","isGroMax","setIsGroMax","openTractorNameModal","setOpenTractorNameModal","showCalendar","setShowCalendar","timelineArray","setTimelineArray","geofenceFirst","setGeofenceFirst","geofenceSecond","setGeofenceSecond","geofenceToggleIndex","setGeofenceToggleIndex","isHovering","setIsHovering","getCompany","getModel","setUpdateTractorName","setTractorCompany","selectCompanyName","setSelectCompanyName","setTractorModel","selectCompanyModel","setSelectCompanyModel","b","current","clearInterval","setInterval","checkArray","event_title","event_icon_image","device_type","fleet_feature_enables","parse","isNaN","handleShowTrips","geo_id","lng","isLive","pattern","Noty","text","layout","progressBar","timeout","setTimeout","getFuel","handleGeofence","handleToggleGeofence","handleNewGeofence","handleMouseOver","handleMouseOut","Pencil","subscription_due_date","Skeleton","animation","getFuelMeterText","Speed","getSpeed","LastActive","Calendar","HourIcon","Distance","utils","DateFnsUtils","format","minDate","firstDate","pastDate","setDate","disablePastDates","size","autoOk","disableFuture","KeyboardButtonProps","renderDay","dayInCurrentMonth","dayComponent","parsedDate","Replay","AddGeofenceIcon","Vector","Switch","checked","inputProps","onMouseOver","onMouseOut","manufacturer","engine_hours","chassis","purchase_date","Swal","fire","inputPlaceholder","inputLabel","inputAttributes","autocapitalize","autocorrect","showCancelButton","confirmButtonText","showLoaderOnConfirm","preConfirm","password","Promise","resolve","reject","checkPasswordForImmobilize","Error","catch","showValidationMessage","JSON","stringify","allowOutsideClick","isLoading","isConfirmed","console","log","MultiSelect","items","label","selectAllLabel","noOptionsText","limitTags","selectedOptions","setSelectedOptions","filterRef","allSelected","handleToggleOption","handleClearOptions","handleSelectAll","isSelected","createFilterOptions","Autocomplete","multiple","disableCloseOnSelect","getOptionSelected","anotherOption","reason","renderOption","selectAllProps","Checkbox","checkedIcon","renderInput","TextField","defaultProps","selectedValues","GoogleMap","React","lazy","root","statusSidebar","todayStatusHeader","paddingBottom","todayStatusWrapper","todayStatusItem","todayStatusItemValue","todayStatusItemTitle","sidebar","filterOption","filterBtn","tractorListWrapper","googleMap","alignSelf","filterAutoComplete","sidebarEngineOff","sidebarEngineOn","userID","todayStatsLoading","todayStats","filterTractors","filterTractorRequest","resetFilter","selectRealtimeAPI","getOverAllStats","setposition","onSelectedTractorChanged","setshowTrips","tractorModels","setTractorModels","tractorMakers","setTractorMakers","setTractorName","nameValue","setNameValue","tableData","setTableData","setSortedTractors","useParams","maker","recentFilter","setRecentFilter","updateRealtimeTractorRef","intervalTimeRef","todayStatusRef","updatedName","startsWith","tr","Set","nameData","checkName","filterOpen","setFilterOpen","filterModel","setFilterModel","filterMake","setFilterMake","dealer_id","user_id","tractorsEngineStatus","filterRowValue","recentSearches","filteredData","recentFilterTableData","labelName","makeString","modelString","nameString","chipLabel","replace","fallback","selectedPosition","TodayTractor","filterMakes","activeTractorsCount","getActiveTractors","active_tractors","TodayHour","activeHoursCount","getActiveHours","total_job_time_seconds","TodayDistance","activeDistance","getActiveDistance","total_commute_distance_km","activeAcres","getActiveAcres","total_acres","h2","Filter","Chip","onDelete","variant","nameValueData","subscriptionTop","clear","subscriptionHeader","subscriptionMessage","supportNumber","subscriptionVertical","rechargeHeading","expiredTractorName","expiredTractorDate","tractorsLength","subscriptionOpen","setSubscriptionOpen","float","Cancel","Warning","Contact","subscriptionBottom","Dashboard","checkId","setCheckId","newPostion","hideShow","createMuiTheme","typography","fontFamily","errorMsg","getGromax","loggedIn","Fragment","ThemeProvider","CssBaseline","exact","path","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.d4f9f095.chunk.js","sourcesContent":["// ERROR TYPES\nexport const GET_ERRORS = 'GET_ERRORS'\nexport const CLEAR_ERRORS = 'CLEAR_ERRORS'\n\n// OTP REQUEST TYPES\nexport const OTP_REQUEST = 'OTP_REQUEST'\nexport const OTP_REQUEST_SUCCESS = 'OTP_REQUEST_SUCCESS'\nexport const OTP_REQUEST_FAILURE = 'OTP_REQUEST_FAILURE'\nexport const OTP_RESET = 'OTP_RESET'\n\n// LOGIN REQUEST TYPES\nexport const LOGIN_REQUEST = 'LOGIN_REQUEST'\nexport const LOGIN_UPDATE = 'LOGIN_UPDATE'\nexport const LOGIN_REQUEST_SUCCESS = 'LOGIN_REQUEST_SUCCESS'\nexport const LOGIN_REQUEST_FAILURE = 'LOGIN_REQUEST_FAILURE'\n\n// LOGIN REQUEST TYPES\nexport const LOGOUT_REQUEST = 'LOGOUT_REQUEST'\nexport const LOGOUT_REQUEST_SUCCESS = 'LOGOUT_REQUEST_SUCCESS'\nexport const LOGOUT_REQUEST_FAILURE = 'LOGOUT_REQUEST_FAILURE'\n\n// FILTER TRACTOR TYPES\nexport const FILTER_TRACTOR_REQUEST = 'FILTER_TRACTOR_REQUEST'\nexport const FILTER_TRACTOR_SUCCESS = 'FILTER_TRACTOR_SUCCESS'\nexport const FILTER_TRACTOR_FAILURE = 'FILTER_TRACTOR_FAILURE'\nexport const RESET_ALL_FILTERS = 'RESET_ALL_FILTERS'\n\n// FETCH TRACTOR TYPES\nexport const FETCH_TRACTOR_LIST = 'FETCH_TRACTOR_LIST'\nexport const FETCH_TRACTOR_LIST_SUCCESS = 'FETCH_TRACTOR_LIST_SUCCESS'\nexport const FETCH_TRACTOR_LIST_FAILURE = 'FETCH_TRACTOR_LIST_FAILURE'\n\n// FETCH DAY SUMMARY\nexport const DAY_SUMMARY_REQUEST = 'DAY_SUMMARY_REQUEST'\nexport const DAY_SUMMARY_SUCCESS = 'DAY_SUMMARY_SUCCESS'\nexport const DAY_SUMMARY_FAILURE = 'DAY_SUMMARY_FAILURE'\n\n// SELECTED TRACTOR DETAILS\nexport const TRACTOR_REQUEST = 'TRACTOR_REQUEST'\nexport const TRACTOR_REQUEST_SUCCESS = 'TRACTOR_REQUEST_SUCCESS'\nexport const TRACTOR_REQUEST_FAILURE = 'TRACTOR_REQUEST_FAILURE'\n\n//FETCH NOTIFICATION\nexport const FETCH_NOTIFICATION_REQUEST = 'FETCH_NOTIFICATION_REQUEST'\nexport const FETCH_NOTIFICATION_SUCCESS = 'FETCH_NOTIFICATION_SUCCESS'\nexport const FETCH_NOTIFICATION_FAILURE = 'FETCH_NOTIFICATION_FAILURE'\n\n// GROMAX DEVICES\nexport const GET_GROMAX_REQUEST = 'GET_GROMAX_REQUEST'\nexport const GET_GROMAX_SUCCESS = 'GET_GROMAX_SUCCESS'\nexport const GET_GROMAX_FAILURE = 'GET_GROMAX_FAILURE'\n\n//SELECT DATE\nexport const SELECT_DATE = 'SELECT_DATE'\n\nexport const UPDATE_REQUEST = 'UPDATE_REQUEST'\nexport const UPDATE_SUCCESS = 'UPDATE_SUCCESS'\nexport const UPDATE_FAILURE = 'UPDATE_FAILURE'\n\n//TRACTOR REALTIME\nexport const REALTIME_REQUEST = 'REALTIME_REQUEST'\nexport const REALTIME_SUCCESS = 'REALTIME_SUCCESS'\nexport const REALTIME_FAILURE = 'REALTIME_FAILURE'\nexport const REALTIME_RESET = 'REALTIME_RESET'\n\n// UPDATE TRACTOR DETAIL\nexport const TRACTOR_DETAIL_REQUEST = 'TRACTOR_DETAIL_REQUEST'\nexport const TRACTOR_DETAIL_SUCCESS = 'TRACTOR_DETAIL_SUCCESS'\nexport const TRACTOR_DETAIL_FAILURE = 'TRACTOR_DETAIL_FAILURE'\nexport const TRACTOR_DETAIL_RESET = 'TRACTOR_DETAIL_RESET'\n\n// LOCAL NAME UPDATE\nexport const LOCAL_TRACTOR_NAME = 'LOCAL_TRACTOR_NAME'\nexport const RESET_LOCAL_TRACTOR_NAME = 'RESET_LOCAL_TRACTOR_NAME'\n\n//TRACTOR COMPANY\nexport const TRACTOR_COMPANY_REQUEST = 'TRACTOR_COMPANY_REQUEST'\nexport const TRACTOR_COMPANY_SUCCESS = 'TRACTOR_COMPANY_SUCCESS'\nexport const TRACTOR_COMPANY_FAILURE = 'TRACTOR_COMPANY_FAILURE'\n\n//TRACTOR MODEL\nexport const TRACTOR_MODEL_REQUEST = 'TRACTOR_MODEL_REQUEST'\nexport const TRACTOR_MODEL_SUCCESS = 'TRACTOR_MODEL_SUCCESS'\nexport const TRACTOR_MODEL_FAILURE = 'TRACTOR_MODEL_FAILURE'\n\n//GET ALL GEOFENCE\nexport const GET_ALL_GEOFENCE_REQUEST = 'GET_ALL_GEOFENCE_REQUEST'\nexport const GET_ALL_GEOFENCE_SUCCESS = 'GET_ALL_GEOFENCE_SUCCESS'\nexport const GET_ALL_GEOFENCE_FAILURE = 'GET_ALL_GEOFENCE_FAILURE'\n\n//EDIT GEOFENCE\nexport const EDIT_GEOFENCE_REQUEST = 'EDIT_GEOFENCE_REQUEST'\nexport const EDIT_GEOFENCE_SUCCESS = 'EDIT_GEOFENCE_SUCCESS'\nexport const EDIT_GEOFENCE_FAILURE = 'EDIT_GEOFENCE_FAILURE'\nexport const EDIT_GEOFENCE_RESET = 'EDIT_GEOFENCE_RESET'\n\n//TODAY STATUS\nexport const GET_TODAY_STATUS_REQUEST = 'GET_TODAY_STATUS_REQUEST'\nexport const GET_TODAY_STATUS_SUCCESS = 'GET_TODAY_STATUS_SUCCESS'\nexport const GET_TODAY_STATUS_FAILURE = 'GET_TODAY_STATUS_FAILURE'\n\n//DAY EVENTS\nexport const GET_DAY_EVENTS_REQUEST = 'GET_DAY_EVENTS_REQUEST'\nexport const GET_DAY_EVENTS_SUCCESS = 'GET_DAY_EVENTS_SUCCESS'\nexport const GET_DAY_EVENTS_FAILURE = 'GET_DAY_EVENTS_FAILURE'\nexport const GET_DAY_EVENTS_RESET = 'GET_DAY_EVENTS_RESET'\n\n//UPDATE UNIT\nexport const SELECTED_UNIT = 'SELECTED_UNIT'\n","export const tripTimeFromDaySummary = (totalTime) => {\n let dataToDisplay = [];\n let secs = totalTime;\n let mins = Math.trunc(secs / 60);\n let hours = Math.trunc(mins / 60);\n\n if (hours < 10) {\n dataToDisplay.push(\"0\");\n dataToDisplay.push(hours);\n } else {\n dataToDisplay.push(hours);\n }\n\n dataToDisplay.push(\":\");\n mins %= 60;\n if (mins < 10) {\n dataToDisplay.push(\"0\");\n dataToDisplay.push(mins);\n } else {\n dataToDisplay.push(mins);\n }\n return dataToDisplay.join(\"\");\n};\n\nexport const getTimeDiff = (deviceTime) => {\n let deviceLastSeen = new Date(deviceTime);\n let currentTime = new Date();\n let diffInMs = currentTime.getTime() - deviceLastSeen.getTime();\n\n const diffTime = [];\n\n const msInDays = 1000 * 60 * 60 * 24;\n const msInHour = 1000 * 60 * 60;\n const msInMinute = 1000 * 60;\n\n let diffInMins = Math.trunc(diffInMs / msInMinute);\n let diffInHrs = Math.trunc(diffInMs / msInHour);\n let diffInDays = Math.trunc(diffInMs / msInDays);\n let diffInMonth = Math.trunc(diffInDays / 30);\n let diffInYear = Math.trunc(diffInMonth / 12);\n\n if (diffInMins < 60) {\n if (diffInMins > 1) {\n diffTime.push(diffInMins, \"Mins\", \" \", \"Ago\");\n } else if (diffInMins === 0) {\n diffTime.push(\"Just Now\");\n } else {\n diffTime.push(diffInMins, \"Min\", \" \", \"Ago\");\n }\n } else if (diffInHrs < 24) {\n if (diffInHrs > 1) {\n diffTime.push(diffInHrs, \"Hours\", \" \", \"Ago\");\n } else {\n diffTime.push(diffInHrs, \"Hour\", \" \", \"Ago\");\n }\n } else if (diffInDays < 30) {\n if (diffInDays > 1) {\n diffTime.push(diffInDays, \"Days\", \" \", \"Ago\");\n } else {\n diffTime.push(diffInDays, \"Day\", \" \", \"Ago\");\n }\n } else if (diffInMonth < 12) {\n if (diffInMonth > 1) {\n diffTime.push(diffInMonth, \"Months\", \" \", \"Ago\");\n } else {\n diffTime.push(diffInMonth, \"Month\", \" \", \"Ago\");\n }\n } else {\n if (diffInYear > 1) {\n diffTime.push(diffInYear, \"Years\", \" \", \"Ago\");\n } else {\n diffTime.push(diffInYear, \"Year \", \" \", \"Ago\");\n }\n }\n\n return diffTime.join(\" \");\n};\n\nexport const getTimeStatusDiff = (deviceTime) => {\n let deviceLastSeen = new Date(deviceTime);\n let currentTime = new Date();\n let diffInMs = currentTime.getTime() - deviceLastSeen.getTime();\n\n const msInMinute = 1000 * 60;\n\n let diffInMins = Math.trunc(diffInMs / msInMinute);\n return diffInMins;\n\n};\n\nexport const formattedDate = (date) => {\n let month = date.getMonth() + 1;\n let year = date.getFullYear();\n let today = date.getDate();\n if (month < 10) {\n month = \"0\" + month;\n }\n\n if (today < 10) {\n today = \"0\" + today;\n }\n\n return `${year}-${month}-${today}`;\n};\n\nexport const formattedEditDate = (date) => {\n let editDate=new Date(date);\n let month = editDate.getMonth() + 1;\n let year = editDate.getFullYear();\n let today = editDate.getDate();\n if (month < 10) {\n month = \"0\" + month;\n }\n\n if (today < 10) {\n today = \"0\" + today;\n }\n\n return `${year}-${month}-${today}`;\n};\n\nexport const formattedSlashDate = (date) => {\n let month = date.getMonth() + 1;\n let year = date.getFullYear();\n let today = date.getDate();\n if (month < 10) {\n month = \"0\" + month;\n }\n\n if (today < 10) {\n today = \"0\" + today;\n }\n\n return `${today}/${month}/${year}`;\n};\n\nexport const parsedFuelAndStatus = (realtime, tractor) => {\n const parsed = [];\n if (realtime.status >= 0) {\n let int = parseInt(realtime.status);\n let some = Number(int).toString(2);\n //pad 0 so that length is 32 and replace \" \" with 0\n const charArray = [...some];\n\n let status = updateStatusReg(charArray);\n if (status === \"NO\") {\n if (realtime.speed === 0) {\n status = \"IDLE\";\n } else if (realtime.time < 300000) {\n status = \"ON\";\n } else {\n status = \"--\";\n }\n }\n\n parsed.push(status);\n }\n\n const {\n fuel_range_params: { start_fuel, end_fuel, fuel_accuracy },\n } = tractor;\n\n const fuel = computeFuelToDisplay(\n realtime.fuel_level_dashboard,\n tractor.app_mask_flags.fuel,\n start_fuel,\n end_fuel,\n fuel_accuracy\n );\n parsed.push(fuel);\n\n return parsed;\n};\n\nfunction computeFuelToDisplay(\n fuelInLitres,\n fuelMask,\n startFuel,\n endFuel,\n fuelAccuracy\n) {\n if (fuelMask === 1) {\n //show Fuel\n if (fuelInLitres < startFuel) return \"< \" + startFuel;\n else if (fuelInLitres >= endFuel) return \"> \" + endFuel;\n else if (fuelAccuracy > 0) {\n let stepsToCover = fuelInLitres - startFuel;\n let remainderSteps = stepsToCover % fuelAccuracy;\n let rangeStart = fuelInLitres - remainderSteps;\n let rangeEnd = rangeStart + fuelAccuracy;\n return rangeStart + \" - \" + rangeEnd;\n } else {\n return fuelInLitres.toString();\n }\n } else {\n return \"-\";\n }\n}\n\nfunction updateStatusReg(charArray) {\n //0 - trip on/off\n //1 - ign on/off\n //2 - tractor status idle/running\n //3 - pto on/off\n //4 - ploughing on/off\n let status = \"\";\n if (charArray[charArray.length - 1] === \"1\") {\n if (charArray[charArray.length - 3] === \"1\") {\n status = \"ON\";\n } else {\n status = \"IDLE\";\n }\n } else {\n status = \"OFF\";\n }\n return status;\n}\n\nexport const timeDisplay = (time) => {\n let dateObject = new Date(time);\n let humanDateFormat = dateObject.toLocaleTimeString(\"en-US\");\n\n return humanDateFormat;\n};\n\nexport const dateDisplay = (time) => {\n let dateObject = new Date(time);\n let humanDate = dateObject.toLocaleDateString(\"en-IN\");\n\n return humanDate;\n};\n\nexport const timeCategory=(time)=>{\n const utcDate = new Date(time);\n const istHour = utcDate.getHours();\n let timeOfDay;\n if (istHour >= 6 && istHour < 12) {\n timeOfDay = 'morning';\n } else if (istHour >= 12 && istHour < 18) {\n timeOfDay = 'afternoon';\n } else {\n timeOfDay = 'evening';\n }\n\n return timeOfDay;\n}\n\nexport const getLocalTimeString =(time)=>{\n return time.toLocaleString('en-US', { timeZone: 'Asia/Kolkata' });\n}\n\nexport const getTime=(time)=>{\n const date = new Date(time);\n\n const dateString = date.toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true });\n\n return dateString;\n}","import * as types from '../types'\nimport { formattedDate } from '../../utils/TimeUtils'\n\nexport const daySummaryRequest = ({ realTime, tractor, date }) => {\n let newDate = date ? date : formattedDate(new Date())\n return {\n type: types.DAY_SUMMARY_REQUEST,\n payload: {\n realTime,\n tractor,\n date: newDate,\n },\n }\n}\n\nexport const daySummarySuccess = ({\n status,\n area,\n totalTime,\n kms,\n fuelLevel,\n lastActive,\n dailyStatus,\n commutes,\n patches,\n replay,\n patchesLatsCentroid,\n patchesLongsCentroid,\n patchesArea,\n patchesStartTime,\n patchesEndTime,\n beacon,\n}) => {\n return {\n type: types.DAY_SUMMARY_SUCCESS,\n payload: {\n status,\n area,\n totalTime,\n kms,\n fuelLevel,\n lastActive,\n dailyStatus,\n commutes,\n patches,\n replay,\n patchesLatsCentroid,\n patchesLongsCentroid,\n patchesArea,\n patchesStartTime,\n patchesEndTime,\n beacon,\n },\n }\n}\n\nexport const daySummaryFailure = (error) => {\n return {\n type: types.DAY_SUMMARY_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import React from 'react'\nimport { makeStyles, withTheme } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n inputBox: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n background: \"#FFFFFF\",\n borderRadius: \"4px\",\n opacity: 1,\n margin: \"1em 0\",\n\n \"&:focus-within\": {\n outline: \"none !important\",\n border: \"1px solid #4d4d4d\"\n }\n },\n inputBoxIcon: {\n padding: \"0.5em\",\n \"& > img\": {\n width: \"22px\"\n }\n },\n input: {\n flex: 1,\n outline: \"none\",\n border: \"none\",\n background: \"none\",\n fontSize: \"1em\",\n color: \"#333333\",\n height: \"100%\"\n },\n error: {\n fontSize: \"0.7em\",\n marginBottom: \"1em\",\n color: \"red\"\n },\n inputError: {\n border: \"1px solid red\",\n }\n}));\n\nfunction Input(props) {\n const classes = useStyles();\n return (\n <>\n \n {props.icon && !props.iconPosition && \"icon\"}\n \n\n {props.icon && props.iconPosition === \"right\" && \"icon\"}\n \n {props.error &&

*{props.error}

}\n \n )\n}\n\nexport default withTheme(Input);\n","import React from \"react\";\nimport { makeStyles, withTheme } from \"@material-ui/core/styles\";\nimport Loader from \"../assets/loader.svg\";\nimport { motion } from \"framer-motion\";\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: \"hidden\",\n background: theme.palette.primary.main,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 1s\",\n\n \"& > img\": {\n width: \"70px\",\n },\n },\n}));\n\nconst InfiniteLoader = () => {\n const classes = useStyles();\n\n return (\n \n \"loading...\"\n \n );\n};\n\nexport default withTheme(InfiniteLoader);\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport useAutocomplete from '@material-ui/lab/useAutocomplete'\n\nimport { connect } from 'react-redux'\n\nimport { tractorRequest } from '../store/actions/tractorAction'\nimport { daySummaryRequest } from '../store/actions/daySummaryAction'\n\nconst useStyles = makeStyles((theme) => ({\n autoCompleteBoxWrapper: {\n flex: 1,\n maxWidth: '600px',\n display: 'grid',\n placeContent: 'center',\n },\n autoCompleteBox: {\n minWidth: '300px',\n height: '32px',\n background: '#FFFFFF',\n borderRadius: '4px',\n },\n input: {\n width: '627px',\n height: '32px',\n outline: 'none',\n border: '1px solid #CCCCCC',\n borderRadius: '4px',\n padding: '0.5em',\n },\n listbox: {\n marginTop: '0.5em',\n borderRadius: '4px',\n width: '627px',\n margin: 0,\n padding: 0,\n zIndex: 1,\n position: 'absolute',\n listStyle: 'none',\n backgroundColor: theme.palette.background.paper,\n overflow: 'auto',\n maxHeight: 350,\n outline: 'none',\n '& li[data-focus=\"true\"]': {\n backgroundColor: theme.palette.primary.main,\n color: 'white',\n cursor: 'pointer',\n },\n '& li:active': {\n backgroundColor: '#ECBCC0',\n color: 'white',\n },\n },\n optionItem: {\n padding: '0.5em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n\n '& > h3': {\n margin: '0.3em 0',\n padding: 0,\n },\n },\n tags: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n\n '& > span': {\n background: 'rgba(0,0,0,0.1)',\n padding: '0.2em 0.7em',\n borderRadius: '10px',\n fontSize: '0.8em',\n },\n },\n}))\n\nfunction AutoComplete({\n data,\n onPositionChange,\n setSelectedTractor,\n onShowTrips,\n show,\n setShow,\n ...props\n}) {\n const classes = useStyles()\n const {\n getRootProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n } = useAutocomplete({\n id: 'use-autocomplete-demo',\n options: data.filter((item) => item?.subscription?.is_valid === true),\n getOptionLabel: (option, index) => {\n return (\n option.device_pk +\n ' - ' +\n option.name +\n ' (' +\n option.model +\n ' - ' +\n option.make +\n ')'\n )\n },\n onChange: (event, value) => {\n if (value) {\n let index\n for (let t = 0; t < data.length; t++) {\n if (data[t].device_pk === value.device_pk) {\n index = t\n break\n }\n }\n onPositionChange(index)\n setSelectedTractor((prev) => {\n if (\n !show &&\n prev &&\n prev.tractor.device_pk === value.device_pk\n ) {\n return prev\n } else {\n props.selectTractor({\n tractor: value,\n realTime:\n props.realtimeList.find(\n (rt) => rt.fb_key === value.fb_key\n ) ?? props.realtimeList[index],\n })\n props.daySummary({\n tractor: value,\n realTime:\n props.realtimeList.find(\n (rt) => rt.fb_key === value.fb_key\n ) ?? props.realtimeList[index],\n })\n\n setShow(false)\n onShowTrips(false)\n return {\n tractor: value,\n index,\n realTime:\n props.realtimeList.find(\n (rt) => rt.fb_key === value.fb_key\n ) ?? props.realtimeList[index],\n }\n }\n })\n }\n },\n })\n\n return (\n
\n
\n
\n \n
\n {groupedOptions.length > 0 ? (\n
    \n {groupedOptions.map((option, index) => (\n \n

    \n {option.name} - {option.device_pk}\n

    \n
    \n {option.model}\n {option.make}\n
    \n \n ))}\n
\n ) : null}\n
\n
\n )\n}\n\nconst mapStateToProps = (state) => ({})\n\nconst mapDispatchToProps = (dispatch) => ({\n selectTractor: ({ tractor, realTime }) => {\n dispatch(tractorRequest({ tractor, realTime }))\n },\n daySummary: ({ realTime, tractor, date }) => {\n dispatch(daySummaryRequest({ realTime, tractor, date }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AutoComplete)\n","import * as types from '../types'\n\nexport const tractorRequest = ({ tractor, realTime }) => {\n return {\n type: types.TRACTOR_REQUEST,\n payload: {\n tractor,\n realTime,\n },\n }\n}\n\nexport const tractorRequestSuccess = ({ dates }) => {\n return {\n type: types.TRACTOR_REQUEST_SUCCESS,\n payload: {\n dates,\n },\n }\n}\n\nexport const tractorRequestFailure = (error) => {\n return {\n type: types.TRACTOR_REQUEST_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import * as types from '../types'\n\nexport const editGeofenceRequest = ({ requestEditGeofence }) => {\n return {\n type: types.EDIT_GEOFENCE_REQUEST,\n payload: { requestEditGeofence },\n }\n}\n\nexport const editGeofenceSuccess = ({ resEditGeofence }) => {\n return {\n type: types.EDIT_GEOFENCE_SUCCESS,\n payload: {\n resEditGeofence,\n },\n }\n}\n\nexport const editGeofenceFailure = (error) => {\n return {\n type: types.EDIT_GEOFENCE_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const editGeofenceReset = () => {\n return {\n type: types.EDIT_GEOFENCE_RESET,\n }\n}\n","module.exports = __webpack_public_path__ + \"static/media/Long-arrow.5b38a708.svg\";","module.exports = __webpack_public_path__ + \"static/media/area_icon.89e9903e.svg\";","module.exports = __webpack_public_path__ + \"static/media/close.9a1a9237.svg\";","import React from 'react'\nimport { makeStyles, withTheme } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n btn: {\n outline: 'none',\n border: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderRadius: '4px',\n padding: '1em',\n gap: '10px',\n transition: '.5s',\n '&:hover': {\n // boxShadow: \"0px 5px 15px rgb(116 0 0 / 0.3)\",\n // background: \"rgb(227 29 48)\"\n },\n },\n btnFilled: {},\n btnOutlined: {\n border: `2px solid ${theme.palette.primary.button}`,\n },\n disabled: {\n cursor: 'not-allowed',\n },\n notDisabled: {\n cursor: 'pointer',\n },\n}))\n\nfunction Button({ children, ...props }) {\n const classes = useStyles()\n return (\n \n {children}\n \n )\n}\n\nconst OutlinedButton = withTheme(({ children, ...props }) => {\n const classes = useStyles()\n\n return (\n \n {children}\n \n )\n})\n\nexport { OutlinedButton }\n\nexport default withTheme(Button)\n","module.exports = __webpack_public_path__ + \"static/media/landing_time.993da973.svg\";","module.exports = __webpack_public_path__ + \"static/media/no_network.17bbee27.svg\";","module.exports = __webpack_public_path__ + \"static/media/bhoomiputra_demo.863d5feb.png\";","module.exports = __webpack_public_path__ + \"static/media/orange_pen.a5ecfcc7.svg\";","module.exports = __webpack_public_path__ + \"static/media/WhiteClose.1e488fb2.svg\";","module.exports = __webpack_public_path__ + \"static/media/Vector.0f9eac69.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFxSURBVHgB1ZXBUcMwEEW/hAtIB7gD0gF0gOjAdAB3iOXAHagg6QDRAXRgOjAd5E4iscpYJpZlwdg+wJuJsyNp96+l1Rr477DYpJFipnfIGMcpDOYGSGunkh6V1nhJ7tR6kMD2RggKvCJzhjiVMSj6hHho0OTigYI//yK4JWUMK/LJQ5MsEDzXBhID4AyPrFDXvQLbW5HZbDACo3GR3CvViHoZ5DHno6Vi9hdbY8/NFkdHwGbvqmQk+8rrCNBmCUyEYTjrCJBxjImgPTxxdtKoAnN/Yd9+++O7hTDektQZwXswJc0bMHsjvUP2M3OZBzJuQaVeOrt5Aw28YyLoon50BKh+XzEVHN2LRsaa/jYYC3XZRH43vnarkNRB9b7JDcZwXB4KtKqIJhSd3hMGQudYHAa3BOv8cyEkKUf7ko9NLFmqK3+8/4MjRcYNcvqYpIizqbdFhSbZD85O6JzMlMTmtVNFj5J6zpstDibV+OL4s3wB2Lt6pwfoPTgAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Logo-.035d6fb8.svg\";","module.exports = __webpack_public_path__ + \"static/media/person.526faeb8.svg\";","module.exports = __webpack_public_path__ + \"static/media/person_add.6e17aa36.svg\";","module.exports = __webpack_public_path__ + \"static/media/support_agent.34a7db4d.svg\";","module.exports = __webpack_public_path__ + \"static/media/loader.aad2b11b.svg\";","module.exports = __webpack_public_path__ + \"static/media/spinner.8ccdbe70.svg\";","module.exports = __webpack_public_path__ + \"static/media/Logo.f9e73810.svg\";","module.exports = __webpack_public_path__ + \"static/media/notifications.9530725b.svg\";","module.exports = __webpack_public_path__ + \"static/media/person.373c9aa1.svg\";","module.exports = __webpack_public_path__ + \"static/media/phone.c3a103d8.svg\";","module.exports = __webpack_public_path__ + \"static/media/Filter.bec856b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/todayTractor.eed8db0c.svg\";","module.exports = __webpack_public_path__ + \"static/media/todayTime.84d70f0a.svg\";","module.exports = __webpack_public_path__ + \"static/media/todayDistance.481d5e65.svg\";","module.exports = __webpack_public_path__ + \"static/media/expired.c313a50f.svg\";","module.exports = __webpack_public_path__ + \"static/media/arjun.31a97bcf.png\";","module.exports = __webpack_public_path__ + \"static/media/bhoomiputra.7c91b5d9.png\";","module.exports = __webpack_public_path__ + \"static/media/jivo.c533a921.png\";","module.exports = __webpack_public_path__ + \"static/media/john_deere.53dc7885.png\";","module.exports = __webpack_public_path__ + \"static/media/massey_ferguson.cf6f6aa3.png\";","module.exports = __webpack_public_path__ + \"static/media/sarpanch.ceacd01f.png\";","module.exports = __webpack_public_path__ + \"static/media/sonalika.1f66ddc0.png\";","module.exports = __webpack_public_path__ + \"static/media/swaraj_744.db91ed2b.png\";","module.exports = __webpack_public_path__ + \"static/media/swaraj_843.2de107ef.png\";","module.exports = __webpack_public_path__ + \"static/media/swaraj_855_xm.d96de10d.png\";","module.exports = __webpack_public_path__ + \"static/media/swaraj_963.8fcfc718.png\";","module.exports = __webpack_public_path__ + \"static/media/yuvo.7c5d010a.png\";","module.exports = __webpack_public_path__ + \"static/media/yuvraj.a654078f.png\";","module.exports = __webpack_public_path__ + \"static/media/distance.bf89347a.svg\";","module.exports = __webpack_public_path__ + \"static/media/speedometer.49fa6923.svg\";","module.exports = __webpack_public_path__ + \"static/media/lastActive.85604243.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar.aec3e5d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/Replay.b6148b05.svg\";","module.exports = __webpack_public_path__ + \"static/media/downArrow.be0f2510.svg\";","module.exports = __webpack_public_path__ + \"static/media/upArrow.f92afb85.svg\";","module.exports = __webpack_public_path__ + \"static/media/speedo-meter.9f39effe.svg\";","module.exports = __webpack_public_path__ + \"static/media/low-fuel.1f9d8fab.svg\";","module.exports = __webpack_public_path__ + \"static/media/high-fuel.9f95736d.svg\";","module.exports = __webpack_public_path__ + \"static/media/Warning.ddbdc6a1.svg\";","module.exports = __webpack_public_path__ + \"static/media/cancel.e75ae41f.svg\";","module.exports = __webpack_public_path__ + \"static/media/contact.06701ede.svg\";","import * as types from '../types'\n\nexport const otpRequest = (phone) => {\n return {\n type: types.OTP_REQUEST,\n payload: phone,\n }\n}\n\nexport const otpRequestSuccess = ({ otpSuccess, phone }) => {\n return {\n type: types.OTP_REQUEST_SUCCESS,\n payload: {\n otpSuccess,\n phone,\n },\n }\n}\n\nexport const otpRequestFailure = (error) => {\n return {\n type: types.OTP_REQUEST_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const otpReset = () => {\n return {\n type: types.OTP_RESET,\n }\n}\n","import * as types from '../types'\n\nexport const loginRequest = ({ phone, otp }) => {\n return {\n type: types.LOGIN_REQUEST,\n payload: { phone, otp },\n }\n}\n\nexport const loginRequestSuccess = ({ data, status, message, realTimes }) => {\n return {\n type: types.LOGIN_REQUEST_SUCCESS,\n payload: {\n data,\n },\n status,\n message,\n realTimes,\n }\n}\n\nexport const loginRequestFailure = (error) => {\n return {\n type: types.LOGIN_REQUEST_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const loginUpdate = ({ tractors }) => {\n return {\n type: types.LOGIN_UPDATE,\n payload: {\n tractors,\n },\n }\n}\n\n// export const loginDescUpdate = (data) => {\n// return {\n// type: types.LOGIN_DESC_UPDATE,\n// payload: {\n// data,\n// },\n// };\n// };\n","import React, { useEffect } from 'react'\nimport { Formik } from 'formik'\nimport { connect } from 'react-redux'\nimport { otpRequest } from '../../store/actions/otpRequestAction'\nimport { loginRequest } from '../../store/actions/loginAction'\n\nimport './login.css'\nimport Logo from '../../assets/login/Logo-.svg'\nimport Person from '../../assets/login/person.svg'\nimport PersonAdd from '../../assets/login/person_add.svg'\nimport Arrow from '../../assets/login/Long-arrow.svg'\nimport Support from '../../assets/login/support_agent.svg'\nimport { Input, Button } from '../../elements'\nimport Spinner from '../../assets/spinner.svg'\n\nimport OtpInput from 'react-otp-input'\nimport { useLocation, useHistory } from 'react-router-dom'\n\nconst Login = (props) => {\n const location = useLocation()\n const history = useHistory()\n\n const getQueryParam = (param) => {\n const queryParams = new URLSearchParams(location.search)\n return queryParams.get(param)\n }\n\n useEffect(() => {\n if (localStorage.getItem('loggedIn') === 'true') {\n const redirectTo = getQueryParam('redir')\n if (redirectTo) {\n history.push(decodeURIComponent(redirectTo))\n } else {\n history.push('/')\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.isLoggedIn])\n\n return (\n
\n
\n
\n
\n \n
\n
\n

Welcome Back

\n

Thank you for joining Simha Family

\n
\n {\n const errors = {}\n if (!values.phone) {\n errors.phone = '*Phone number is Required!'\n } else if (!/^\\d{10}$/.test(values.phone)) {\n errors.phone = 'Invalid Phone number'\n }\n if (props.otpSent && values.otp === '') {\n errors.otp = '*Please Enter OTP!'\n }\n return errors\n }}\n onSubmit={(values) => {\n if (!props.otpSent) {\n props.makeOtpRequest(values.phone)\n } else {\n props.makeLoginRequest({\n phone: values.phone,\n otp: values.otp.toString(),\n })\n }\n }}\n >\n {({\n values,\n errors,\n touched,\n handleSubmit,\n handleChange,\n setFieldValue,\n }) => (\n
\n

Log In

\n \n {values.phone &&\n values.phone.length === 10 &&\n values.phone === props.otpNumber &&\n props.otpResponse &&\n !props.otpSent && (\n \n You are not registered User\n \n )}\n {props.otpSent && (\n
\n

Enter OTP:

\n {\n setFieldValue('otp', otp, true)\n }}\n numInputs={4}\n isInputNum={true}\n isInputSecure={true}\n inputStyle=\"otpInput\"\n focusStyle=\"otpFous\"\n containerStyle=\"otpContainer\"\n errorStyle=\"otpError\"\n shouldAutoFocus={true}\n hasErrored={errors.otp}\n separator={\n \n *\n \n }\n />\n {errors.otp && (\n \n {errors.otp}\n \n )}\n {props.otpSent &&\n props.errorLogin?.hasOwnProperty(\n 'message'\n ) && (\n \n OTP is incorrect\n \n )}\n
\n )}\n \n \n )}\n \n\n
\n
\n \n \"person\n \n

Don't have an Account?

\n Request an Account\n
\n\n
\n \n \"support\"\n \n

Trouble Logging in?

\n Call Support\n
\n
\n
\n
\n
\n
\n )\n}\n\nconst mapStateToProps = (state) => ({\n otpSent: state.otpRequestReducer.otpSent,\n otpResponse: state.otpRequestReducer.otpSuccess,\n otpNumber: state.otpRequestReducer.phone,\n loadingOtp: state.otpRequestReducer.loading,\n errorOtp: state.otpRequestReducer.error,\n tractors: state.loginReducer.tractors,\n isLoggedIn: state.loginReducer.isLoggedIn,\n loadingLogin: state.loginReducer.loading,\n errorLogin: state.loginReducer.error,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n makeOtpRequest: (phone) => {\n dispatch(otpRequest(phone))\n },\n makeLoginRequest: ({ phone, otp }) => {\n dispatch(loginRequest({ phone, otp }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Login)\n","import * as types from '../types'\n\nexport const fetchNotificationRequest = ({ id }) => {\n return {\n type: types.FETCH_NOTIFICATION_REQUEST,\n payload: {\n id,\n },\n }\n}\n\nexport const fetchNotificationSuccess = ({ data, status }) => {\n return {\n type: types.FETCH_NOTIFICATION_SUCCESS,\n payload: {\n data,\n status,\n },\n }\n}\n\nexport const fetchNotificationFailure = ({ e }) => {\n return {\n type: types.FETCH_NOTIFICATION_FAILURE,\n payload: {},\n error: e,\n }\n}\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { connect } from 'react-redux'\nimport Card from '@material-ui/core/Card'\n\nconst useStyles = makeStyles((theme) => ({\n column: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n },\n nortification: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: '100vh',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n },\n nortificationHeader: {\n width: '420px',\n height: '60px',\n background: theme.palette.primary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#FFFFFF',\n position: 'fixed',\n\n padding: '0 1.3em',\n '& > p': {\n cursor: 'pointer',\n },\n },\n cross: {\n cursor: 'pointer',\n },\n card: {\n height: '30px',\n margin: '30px',\n },\n}))\n\nfunction List({\n setNortificationOpen,\n Close,\n setSelected,\n nortificationOpen,\n notificationValue,\n tractorName,\n ...props\n}) {\n const classes = useStyles()\n const [notification, setNotification] = useState([])\n\n useEffect(() => {\n const allAlerts = props.notify?.flatMap((obj) => Object.values(obj)[0])\n let data = allAlerts?.reduce((acc, val, index) => {\n if (notificationValue === val.fleet_category) {\n acc = [...acc, val]\n }\n return acc\n }, [])\n setNotification(data)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.notify])\n\n const getName = (id) => {\n let filteredObject = props.allTractors?.find(\n (element) => element.device_pk === id\n )\n if (props.localTracName) {\n for (let i = 0; i < props.localTracName.length; i++) {\n if (props.localTracName[i].id === filteredObject.id) {\n return props.localTracName[i].name.toUpperCase()\n }\n }\n return filteredObject?.['name']\n } else {\n return filteredObject?.['name']\n }\n }\n\n return (\n <>\n
\n

Alerts

\n {\n setNortificationOpen(!nortificationOpen)\n setSelected(false)\n }}\n >\n \"close\" Close\n

\n
\n
\n setSelected(false)}\n style={{ cursor: 'pointer', padding: '0.5em 1em' }}\n >\n Back to Category\n

\n {notification?.map((item) => {\n return (\n \n
{item?.message}
\n
{getName(item?.device_id)}
\n \n
{item?.time_stamp.split(' ')[1]}
\n
\n {' '}\n {item?.time_stamp\n .split(' ')[0]\n .split('-')\n .reverse()\n .join('-')}\n
\n
\n \n )\n })}\n {notification?.length === 0 && (\n

\n THERE ARE NO MESSAGES AVAILABLE CURRENTLY\n

\n )}\n \n \n )\n}\nconst mapStateToProps = (state) => ({\n notify: state.fetchNotificationReducer.data,\n allTractors: state.loginReducer.allTractors,\n localTracName: state.localTractorNameReducer.localTractorNameList,\n})\n\nconst mapDispatchToProps = (dispatch) => ({})\nexport default connect(mapStateToProps, mapDispatchToProps)(List)\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { connect } from 'react-redux'\nimport Card from '@material-ui/core/Card'\nimport ForumIcon from '@material-ui/icons/Forum'\n\nconst useStyles = makeStyles((theme) => ({\n column: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n },\n nortification: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: '100vh',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n },\n nortificationHeader: {\n width: '420px',\n height: '60px',\n background: theme.palette.primary.main,\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#FFFFFF',\n position: 'fixed',\n },\n cross: {\n cursor: 'pointer',\n },\n card: {\n height: '30px',\n margin: '30px',\n },\n tractor: {\n color: 'black',\n },\n}))\n\nfunction Category({\n setNortificationOpen,\n Close,\n nortificationOpen,\n setSelected,\n setNotificationValue,\n tractorName,\n index,\n ...props\n}) {\n const classes = useStyles()\n const [securityCounter, setSecurityCounter] = useState(0)\n const [healthCounter, setHealthCounter] = useState(0)\n const [subscriptionCounter, setSubscriptionCounter] = useState(0)\n const [activiytCounter, setActivityCounter] = useState(0)\n const [otherCounter, setOtherCounter] = useState(0)\n\n useEffect(() => {\n if (props.notify) {\n const allAlerts = props.notify?.flatMap(\n (obj) => Object.values(obj)[0]\n )\n let count1 = 0\n let count2 = 0\n let count3 = 0\n let count4 = 0\n let count5 = 0\n if (allAlerts) {\n allAlerts.forEach((val) => {\n if (val.fleet_category === 'Security Notifications') {\n count1 = count1 + 1\n } else if (val.fleet_category === 'Health Notifications') {\n count2 = count2 + 1\n } else if (val.fleet_category === 'Subscription Alert') {\n count3 = count3 + 1\n } else if (\n val.fleet_category === 'Activity Notifications'\n ) {\n count4 = count4 + 1\n } else if (val.fleet_category === 'Other Alert') {\n count5 = count5 + 1\n }\n })\n }\n setSecurityCounter(count1)\n setHealthCounter(count2)\n setSubscriptionCounter(count3)\n setActivityCounter(count4)\n setOtherCounter(count5)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.notify])\n\n const item = [\n {\n title: 'SECURITY NOTIFICATIONS',\n subtitle: 'Notification related to your trafic security',\n filter: 'Security Notifications',\n count: securityCounter,\n },\n {\n title: 'HEALTH NOTIFICATIONS',\n subtitle: 'Notification related to your Tractor Health',\n filter: 'Health Notifications',\n count: healthCounter,\n },\n {\n title: 'ACTIVITY NOTIFICATIONS',\n subtitle: 'Notification related to your Tractor Activity',\n filter: 'Activity Notifications',\n count: activiytCounter,\n },\n {\n title: 'SUBSCRIPTION NOTIFICATIONS',\n subtitle: 'Notification related to Simha Kit Subscription',\n filter: 'Subscription Alert',\n count: subscriptionCounter,\n },\n {\n title: 'OTHER NOTIFICATIONS',\n subtitle: 'Other Generic notifications',\n filter: 'Other Alert',\n count: otherCounter,\n },\n ]\n return (\n <>\n
\n \n \n Alerts\n

\n setNortificationOpen(!nortificationOpen)}\n className={classes.cross}\n >\n {' '}\n \"close\" Close\n \n
\n \n \n {item.map((val, key) => {\n return (\n {\n setSelected(true)\n setNotificationValue(val.filter)\n }}\n style={{\n cursor: 'pointer',\n margin: '30px',\n height: '80px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'start',\n border: 'groove',\n boxShadow: '3px 4px #888888',\n }}\n >\n \n
\n

\n {val.title} ({val.count})\n

\n

{val.subtitle}

\n
\n \n )\n })}\n \n \n )\n}\n\nconst mapStateToProps = (state) => ({\n notify: state.fetchNotificationReducer.data,\n})\n\nconst mapDispatchToProps = (dispatch) => ({})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Category)\n","import * as types from '../types'\n\nexport const realtimeRequest = ({ phone }) => {\n return {\n type: types.REALTIME_REQUEST,\n payload: { phone },\n }\n}\n\nexport const realtimeRequestSuccess = ({ realtimeData }) => {\n return {\n type: types.REALTIME_SUCCESS,\n payload: {\n realtimeData,\n },\n }\n}\n\nexport const realtimeRequestFailure = (error) => {\n return {\n type: types.REALTIME_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const realtimeReset = () => {\n return {\n type: types.REALTIME_RESET,\n }\n}\n","const redirect = (pathname, pin = '', pin_name = '') => {\n let redirectTo = pathname\n const queryParams = []\n\n if (pin) {\n queryParams.push(`pin=${encodeURIComponent(pin)}`)\n }\n if (pin_name) {\n queryParams.push(`pin_name=${encodeURIComponent(pin_name)}`)\n }\n\n if (queryParams.length > 0) {\n redirectTo += '?' + queryParams.join('&')\n }\n\n return encodeURIComponent(redirectTo)\n}\n\nexport default redirect\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles, withTheme } from '@material-ui/core/styles'\n// import Mahindra from \"../assets/mahindra.svg\";\nimport Logo from '../assets/home/Logo.svg'\nimport Nortification from '../assets/home/notifications.svg'\nimport Person from '../assets/home/person.svg'\nimport { AutoComplete } from '../elements'\nimport { connect } from 'react-redux'\nimport { logoutRequest } from '../store/actions/logoutAction'\nimport { loginUpdate } from '../store/actions/loginAction'\nimport { fetchNotificationRequest } from '../store/actions/fetchNotificationAction'\nimport { selectDate as selectDateUtil } from '../store/actions/selectDateAction'\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { Tooltip } from '@material-ui/core'\n\nimport Close from '../assets/home-tractor/WhiteClose.svg'\nimport DarkClose from '../assets/home-tractor/close.svg'\nimport Phone from '../assets/phone.svg'\n\nimport Modal from '@material-ui/core/Modal'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { List, Category } from '../subcomponents'\nimport { realtimeReset } from '../store/actions/realtimeRequestAction'\nimport { resetLocalTractorNameAction } from '../store/actions/localTractorNameAction'\nimport { selectUnitAction } from '../store/actions/updateUnitAction'\nimport redirect from '../utils/redirect'\nimport { useLocation } from 'react-router-dom'\n\nconst useStyles = makeStyles((theme) => ({\n nav: {\n width: '100%',\n height: '60px',\n background: theme.palette.primary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n logo: {\n marginLeft: '1.3em',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n navIcons: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '20px',\n marginRight: '1.3em',\n },\n icon: {\n width: '40px !important',\n height: '40px !important',\n borderRadius: '50%',\n display: 'grid',\n placeContent: 'center',\n cursor: 'pointer',\n },\n nortification: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: '100vh',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n overflowY: 'auto',\n },\n menuPaper: {\n boxShadow: 'rgba(0, 0, 0, 0.56) 0px 22px 70px 4px',\n },\n contactUs: {\n position: 'absolute',\n width: '400px',\n height: '120px',\n top: '20%',\n left: '35%',\n borderRadius: '4px',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n overflowY: 'auto',\n padding: '10px',\n display: 'flex',\n flexDirection: 'column',\n },\n privacy: {\n position: 'absolute',\n width: '700px',\n height: '600px',\n top: '10%',\n left: '35%',\n borderRadius: '4px',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n overflowY: 'auto',\n padding: '10px',\n display: 'flex',\n flexDirection: 'column',\n },\n contactUsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > p': {\n cursor: 'pointer',\n },\n },\n contactUsDetail: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n '& > a': {\n textDecoration: 'none',\n fontSize: '16px',\n cursor: 'pointer',\n lineHeight: '1.8',\n color: '#000',\n },\n },\n privacyDetail: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n areaInputType: {\n width: '100%',\n padding: '12px 20px',\n margin: '8px 2px',\n display: 'inline-block',\n border: '1px solid #ccc',\n borderRadius: '4px',\n boxSizing: 'border-box',\n },\n}))\n\nconst Navbar = ({\n tractors,\n realtimeList,\n onPositionChange,\n setSelectedTractor,\n onShowTrips,\n setShow,\n show,\n showTracking,\n ...props\n}) => {\n const classes = useStyles()\n\n const [anchorEl, setAnchorEl] = useState(null)\n const [selected, setSelected] = useState(false)\n const [notificationValue, setNotificationValue] = useState('')\n\n const handleProfileMenuClose = () => {\n setAnchorEl(null)\n }\n\n const handleProfileMenuClick = (e) => {\n setAnchorEl(e.currentTarget)\n }\n\n const [nortificationOpen, setNortificationOpen] = useState(false)\n const [contactUsOpen, setContactUsOpen] = useState(false)\n const [selectUnitOpen, setSelectUnitOpen] = useState(false)\n const [areaUnit, setAreaUnit] = useState('Acres')\n const location = useLocation()\n\n useEffect(() => {\n let requestUnit = {\n unit: areaUnit,\n }\n props.unitUpdateRequest({ requestUnit })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleAreaUnit = (e) => {\n e.preventDefault()\n setAreaUnit(e.target.value)\n let requestUnit = {\n unit: e.target.value,\n }\n props.unitUpdateRequest({ requestUnit })\n }\n\n const handleLogout = () => {\n const queryParams = new URLSearchParams(window.location.search)\n\n const pin = queryParams.get('pin')\n const pinName = queryParams.get('pin_name')\n\n props.resetRealtime()\n props.localNameAction()\n props.logout()\n\n window.location.href =\n '/login?redir=' + redirect(location.pathname, pin, pinName)\n }\n\n return (\n
\n
\n \"logo\"\n
\n {!showTracking && (\n \n )}\n
\n {\n setNortificationOpen(!nortificationOpen)\n props.notification(props.userId)\n }}\n >\n \"nortifications\"\n
\n \n \"profile\"\n
\n \n \n \n {\n window.open(\n `https://www.carnot-clientanalytics.com/dashboards`,\n '_blank'\n )\n handleProfileMenuClose()\n }}\n >\n Analytics Dashboard\n \n \n {\n setSelectUnitOpen(!selectUnitOpen)\n handleProfileMenuClose()\n }}\n >\n Select Unit\n \n {\n window.open(\n `https://amk-android-docs.s3.ap-south-1.amazonaws.com/AMKLegalDocs/Privacy+Policy+Krish-e+Smart+Kit+app.pdf`,\n '_blank'\n )\n handleProfileMenuClose()\n }}\n >\n Privacy Policy\n \n {\n setContactUsOpen(!contactUsOpen)\n handleProfileMenuClose()\n }}\n >\n Contact Us\n \n Logout\n \n \n setNortificationOpen(!nortificationOpen)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n \n {!selected ? (\n \n ) : (\n \n )}\n \n \n \n \n setContactUsOpen(!contactUsOpen)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n
\n Contact Us\n

setContactUsOpen(!contactUsOpen)}>\n \"dark-close\" close\n

\n
\n \n
\n \n setSelectUnitOpen(!selectUnitOpen)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n \n
\n Select Unit\n \n setSelectUnitOpen(!selectUnitOpen)\n }\n >\n \"dark-close\" close\n

\n
\n
\n \n \n \n \n \n
\n \n \n
\n \n )\n}\n\nconst mapStateToProps = (state) => ({\n notify: state.fetchNotificationReducer.data,\n id: state.tractorReducer?.tractor?.id,\n tractor: state.tractorReducer.tractor,\n\n loginTractors: state.loginReducer.tractors,\n allTractors: state.loginReducer.allTractors,\n status: state.loginReducer.status,\n message: state.loginReducer.message,\n loginId: state.loginReducer.id,\n name: state.loginReducer.name,\n phone: state.loginReducer.phone,\n mm_userid: state.loginReducer.phone,\n auth_token: state.loginReducer.auth_token,\n realTimes: state.loginReducer.realTimes,\n\n datesLoading: state.tractorReducer.loading,\n dates: state.tractorReducer.dates,\n userId: state.loginReducer.id,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n logout: () => {\n dispatch(logoutRequest())\n },\n resetRealtime: () => {\n dispatch(realtimeReset())\n },\n notification: (id) => {\n dispatch(fetchNotificationRequest({ id }))\n },\n selectDate: ({ date }) => {\n dispatch(selectDateUtil({ date }))\n },\n makeLoginUpdate: ({ tractors, id, name, phone, auth_token }) => {\n dispatch(loginUpdate({ tractors, id, name, phone, auth_token }))\n },\n localNameAction: () => {\n dispatch(resetLocalTractorNameAction())\n },\n unitUpdateRequest: ({ requestUnit }) => {\n dispatch(selectUnitAction({ requestUnit }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTheme(Navbar))\n","import * as types from '../types'\n\nexport const logoutRequest = () => {\n return {\n type: types.LOGOUT_REQUEST,\n }\n}\nexport const logoutRequestSuccess = () => {\n return {\n type: types.LOGOUT_REQUEST_SUCCESS,\n }\n}\n\nexport const logoutRequestFailure = (error) => {\n return {\n type: types.LOGOUT_REQUEST_FAILURE,\n error: error,\n }\n}\n","import * as types from '../types'\n\nexport const selectDate = ({ date }) => {\n return {\n type: types.SELECT_DATE,\n payload: {\n date,\n },\n }\n}\n","import * as types from '../types'\n\nexport const localTractorNameAction = ({ requestLocalTractorName }) => ({\n type: types.LOCAL_TRACTOR_NAME,\n payload: {\n requestLocalTractorName,\n },\n})\n\nexport const resetLocalTractorNameAction = () => ({\n type: types.RESET_LOCAL_TRACTOR_NAME,\n})\n","import * as types from '../types'\n\nexport const selectUnitAction = ({ requestUnit }) => ({\n type: types.SELECTED_UNIT,\n payload: {\n requestUnit,\n },\n})\n","import arjun from \"../assets/tractor-images/arjun.png\";\nimport bhoomiputra1 from \"../assets/tractor-images/bhoomiputra.png\";\nimport bhoomiputra from \"../assets/tractor-images/bhoomiputra_demo.png\";\nimport jivo from \"../assets/tractor-images/jivo.png\";\nimport johnDeere from \"../assets/tractor-images/john_deere.png\";\nimport masseyFerguson from \"../assets/tractor-images/massey_ferguson.png\";\nimport sarpanch from \"../assets/tractor-images/sarpanch.png\";\nimport sonalika from \"../assets/tractor-images/sonalika.png\";\nimport swaraj744 from \"../assets/tractor-images/swaraj_744.png\";\nimport swaraj843 from \"../assets/tractor-images/swaraj_843.png\";\nimport swaraj855 from \"../assets/tractor-images/swaraj_855_xm.png\";\nimport swaraj963 from \"../assets/tractor-images/swaraj_963.png\";\nimport yuvo from \"../assets/tractor-images/yuvo.png\";\nimport yuvraj from \"../assets/tractor-images/yuvraj.png\";\n\nfunction getTractorImages(model, make) {\n make = make ?? \"Mahindra\";\n model = model.toLowerCase().trim();\n make = make.toLowerCase().trim();\n if (make.includes(\"mahindra\")) {\n if (model.includes(\"yuvraj\")) {\n return yuvraj;\n } else if (model.includes(\"yuvo\")) {\n return yuvo;\n } else if (model.includes(\"jivo\")) {\n return jivo;\n } else if (model.includes(\"novo\") || model.includes(\"arjun\")) {\n return arjun;\n } else if (model.includes(\"sarpanch\")) {\n return sarpanch;\n } else if (model.includes(\"bhoomiputra\")) {\n return bhoomiputra1;\n } else if (model.includes(\"track harvester\")) {\n return bhoomiputra;\n } else {\n return bhoomiputra;\n }\n } else if (make.includes(\"swaraj\")) {\n if (model.includes(\"744\")) return swaraj744;\n else if (model.includes(\"855\")) return swaraj855;\n else if (model.includes(\"963\")) return swaraj963;\n else return swaraj843;\n } else if (make.includes(\"massey\")) {\n return masseyFerguson;\n } else if (make.includes(\"john\")) {\n return johnDeere;\n } else if (make.includes(\"sonalika\")) {\n return sonalika;\n } else {\n return bhoomiputra;\n }\n}\n\nexport default getTractorImages;\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { motion } from 'framer-motion'\nimport { connect } from 'react-redux'\nimport { tripTimeFromDaySummary, getTimeStatusDiff } from '../utils/TimeUtils'\nimport { tractorRequest } from '../store/actions/tractorAction'\nimport { daySummaryRequest } from '../store/actions/daySummaryAction'\nimport AreaIcon from '../assets/area_icon.svg'\nimport LandingTime from '../assets/landing_time.svg'\nimport Expired from '../assets/expired.svg'\nimport getTractorImages from '../utils/getTractorImages'\nimport NoNetwork from '../assets/no_network.svg'\n\nconst useStyles = makeStyles((theme) => ({\n tractor: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: '1em',\n margin: '0 0 1em 0',\n position: 'relative',\n zIndex: '4',\n cursor: 'pointer',\n },\n tractorDisc: {\n flex: 1,\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n cursor: 'pointer',\n '& > div': {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n },\n tractorActive: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n right: '0px',\n bottom: '0px',\n borderRadius: '4px',\n zIndex: '4',\n padding: '10px',\n },\n selectTractorDisc: {\n flex: 1,\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n cursor: 'pointer',\n margin: '5px 10px 5px 0px',\n '& > div': {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n },\n engineOff: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #FF0C22',\n '& > img': {\n width: '80%',\n },\n },\n engineOn: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #00c441',\n '& > img': {\n width: '80%',\n },\n },\n engineOut: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #808080',\n '& > img': {\n width: '80%',\n },\n },\n makeModel: {\n margin: '0 0 0.5em 0',\n textTransform: 'capitalize',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '19px',\n color: '#333333',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n flex: '1',\n },\n tractorNameText: {\n fontSize: '12px',\n fontWeight: '400',\n lineHeight: '16px',\n color: '#666666',\n },\n imageBorderOut: {\n position: 'absolute',\n right: '0',\n height: '27px',\n padding: '3px',\n background: '#fff',\n borderRadius: '0px 8px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageBorderOn: {\n position: 'absolute',\n right: '0',\n height: '20px',\n padding: '3px',\n background: '#00c441',\n borderRadius: '0px 0px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageBorderOff: {\n position: 'absolute',\n right: '0',\n height: '20px',\n padding: '3px',\n background: '#FF0C22',\n borderRadius: '0px 0px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n subcriptionExpired: {\n color: '#fff',\n width: '143px',\n },\n}))\n\nfunction Tractor({\n tractor,\n show,\n setShow,\n position,\n setSelectedTractor,\n index,\n realTime,\n onPositionChange,\n onShowTrips,\n setShowAreaButton,\n drawingTool,\n setDrawingTool,\n shapes,\n setShapes,\n ...props\n}) {\n const classes = useStyles()\n const tractorImage = getTractorImages(tractor.model, tractor.make)\n\n const checkEngineStatus = (stat) => {\n let value = getTimeStatusDiff(\n props.checkRealtime.data[`${tractor.device_pk}`]['time_stamp']\n )\n if ((stat & 1) === 1) {\n if (value > 10) {\n return classes.engineOut\n } else {\n return classes.engineOn\n }\n } else if ((stat & 1) === 0) {\n if (value > 120) {\n return classes.engineOut\n } else {\n return classes.engineOff\n }\n }\n }\n\n const checkEngine = (stat) => {\n let value = getTimeStatusDiff(\n props.checkRealtime.data[`${tractor.device_pk}`]['time_stamp']\n )\n if ((stat & 1) === 1) {\n if (value > 10) {\n return classes.imageBorderOut\n } else {\n return classes.imageBorderOn\n }\n } else if ((stat & 1) === 0) {\n if (value > 120) {\n return classes.imageBorderOut\n } else {\n return classes.imageBorderOff\n }\n }\n }\n\n const checkEngineText = (stat) => {\n let value = getTimeStatusDiff(\n props.checkRealtime.data[`${tractor.device_pk}`]['time_stamp']\n )\n if ((stat & 1) === 1) {\n if (value > 10) {\n return 'DIS'\n } else {\n return 'ON'\n }\n } else if ((stat & 1) === 0) {\n if (value > 120) {\n return 'DIS'\n } else {\n return 'OFF'\n }\n }\n }\n\n const getName = () => {\n if (props.localTracName) {\n for (let i = 0; i < props.localTracName.length; i++) {\n if (props.localTracName[i].id === tractor.id) {\n return props.localTracName[i].name.toLowerCase()\n }\n }\n }\n return tractor.name.toLowerCase()\n }\n\n return (\n {\n if (tractor?.subscription?.is_valid) {\n onPositionChange(index)\n setSelectedTractor((prev) => {\n props.selectTractor({ tractor, realTime })\n props.daySummary({ tractor, realTime })\n setShow(false)\n onShowTrips(false)\n setShowAreaButton(false)\n if (drawingTool) {\n drawingTool.setMap(null)\n }\n if (shapes && shapes.length > 0) {\n for (let i = 0; i < shapes.length; i++) {\n shapes[i].overlay.setMap(null)\n }\n }\n return { tractor, index, realTime }\n })\n }\n }}\n >\n {show && (\n <>\n \n \n

\n {props.checkRealtime &&\n checkEngineText(\n props.checkRealtime.data[\n `${tractor.device_pk}`\n ]['status']\n ) === 'DIS' ? (\n \n ) : (\n props.checkRealtime &&\n checkEngineText(\n props.checkRealtime.data[\n `${tractor.device_pk}`\n ]['status']\n )\n )}\n

\n \n \n \n \n {props.checkRealtime && (\n
\n
\n {tractor.make.toLowerCase()}{' '}\n {tractor.model.toLowerCase()}\n
\n
\n )}\n {props.checkRealtime &&\n tractor?.subscription?.is_valid ? (\n <>\n \n \n \n \n \n {tripTimeFromDaySummary(\n props.checkRealtime.data[\n `${tractor.device_pk}`\n ]['time']\n )}\n \n

Worked\n
\n
\n \n \n \n \n {props?.areaUnit?.unit ===\n 'Acres'\n ? props.checkRealtime.data[\n `${tractor.device_pk}`\n ]['acres'].toFixed(2)\n : (\n props.checkRealtime\n .data[\n `${tractor.device_pk}`\n ]['acres'] * 0.404686\n ).toFixed(2)}\n \n

\n {props?.areaUnit?.unit}\n
\n \n \n \n ) : (\n
\n \n \n Recharge Expired\n
\n \n )}\n
\n {getName()}\n
\n {index === position && (\n \n )}\n \n \n )}\n \n )\n}\n\nconst mapStateToProps = (state) => ({\n checkRealtime: state.realtimeReducer.realtimeData,\n localTracName: state.localTractorNameReducer.localTractorNameList,\n areaUnit: state.selectedUnitReducer.selectedUnit,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n selectTractor: ({ tractor, realTime }) => {\n dispatch(tractorRequest({ tractor, realTime }))\n },\n daySummary: ({ realTime, tractor, date }) => {\n dispatch(daySummaryRequest({ realTime, tractor, date }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Tractor)\n","import { makeStyles } from '@material-ui/core/styles'\nimport React, { useRef, useState } from 'react'\nimport DownArrow from '../assets/downArrow.svg'\nimport upArrow from '../assets/upArrow.svg'\n\nconst useStyles = makeStyles((theme) => ({\n accordion__section: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: '5px',\n },\n accordion: {\n backgroundColor: '#EDF7F6',\n cursor: 'pointer',\n padding: '5px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n border: 'none',\n outline: 'none',\n borderRadius: '4px',\n },\n accordion__title: {\n fontWeight: '400',\n fontSize: '12px',\n lineHeight: '16px',\n textTransform: 'capitalize',\n color: '#000',\n },\n accordion__icon: {\n marginLeft: 'auto',\n transition: 'transform 0.6s ease',\n },\n rotate: {\n transform: 'rotate(90deg)',\n },\n accordion__content: {\n backgroundColor: '#fff',\n border: '1px solid #CDEFEC',\n borderRadius: '4px',\n overflowY: 'scroll',\n },\n accordion__text: {\n fontWeight: '400',\n fontSize: '11px',\n lineHeight: '15px',\n color: '#333',\n display: 'flex',\n alignItems: 'center',\n // gap:\"5px\",\n width: '175px',\n justifyContent: 'space-evenly',\n padding: '10px',\n },\n active: {\n backgroundColor: '#edf7f6',\n },\n // vertical_line_wrapper:{\n // width:\"175px\",\n // display:\"flex\",\n // alignItems:\"center\",\n // justifyContent:\"space-evenly\",\n // },\n // vertical_line:{\n // borderLeft: \"1px solid green\",\n // height: \"20px\",\n // }\n}))\nconst ListItem = ({ ...props }) => {\n const classes = useStyles()\n const [active, setActive] = useState(false)\n const content = useRef(null)\n const [height, setHeight] = useState('0px')\n\n const toggleAccordion = () => {\n setActive(!active)\n setHeight(active ? '0px' : `300px`)\n }\n\n return (\n
\n \n

{props.title}

\n \n {active ? (\n \"up-arrow\"\n ) : (\n \"down-arrow\"\n )}\n \n
\n \n {props.content &&\n props.content.length > 0 &&\n props.content.map((item, index) => {\n return (\n <>\n \n \n {item.time}\n \n \n \n {item.title}\n \n \n {props.content.length - 1 !== index && (\n \n \n \n \n \n )}\n \n )\n })}\n \n \n )\n}\n\nexport default ListItem\n","import Medium from '../assets/home-tractor/speedo-meter.svg'\nimport Low from '../assets/home-tractor/low-fuel.svg'\nimport High from '../assets/home-tractor/high-fuel.svg'\n\nexport const getFuelMeterTank = (maxFuel, fuelInLitres) => {\n let fuelPercent = (fuelInLitres / maxFuel) * 100\n\n if (fuelPercent <= 30) {\n return Low\n } else if (fuelPercent <= 60) {\n return Medium\n } else {\n return High\n }\n}\n\nexport const getFuelMeterText = (maxFuel, fuelInLitres) => {\n let fuelPercent = (fuelInLitres / maxFuel) * 100\n\n if (fuelPercent <= 30) {\n return 'Low'\n } else if (fuelPercent <= 60) {\n return 'Medium'\n } else {\n return 'Full'\n }\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst tractorDescStyles = makeStyles((theme) => ({\n tractorDesc: {\n height: 'calc(100vh - 60px)',\n background: theme.palette.secondary.main,\n padding: '1em',\n overflowY: 'scroll',\n },\n imageBox: {\n height: '90px',\n background: '#F1F1F1',\n borderRadius: '4px',\n display: 'grid',\n placeContent: 'center',\n flex: '1',\n '& > img': {\n width: '95%',\n objectFit: 'cover',\n objectPosition: 'center',\n height: '100%',\n },\n },\n model: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n zIndex: 4,\n '& > p': {\n fontSize: '16px',\n fontWeight: '600',\n lineHeight: '22px',\n textTransform: 'capitalize',\n color: '#000000',\n },\n '& > span': {\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '16px',\n textTransform: 'capitalize',\n color: '#70367C',\n cursor: 'pointer',\n },\n },\n tractorDetail: {\n display: 'flex',\n flexDirection: 'column',\n '& > div > h2': {\n fontSize: '1.4em',\n textTransform: 'capitalize',\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n },\n },\n tractorDescHeader: {\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'column',\n justifyContent: 'space-between',\n flex: '2',\n height: '90px',\n fontSize: '14px',\n fontWeight: '400',\n textTransform: 'capitalize',\n color: '#333333',\n },\n status: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '10px',\n },\n statusDesc: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '10px',\n },\n\n fuelDesc: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '10px',\n },\n\n dateDesc: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n\n engineStatus: {\n marginLeft: 'auto',\n justifySelf: 'flex-end',\n },\n statusDescData: {\n '& > b': {\n fontSize: '12px',\n fontWeight: '600',\n lineHeight: '19px',\n },\n '& > p': {\n margin: 0,\n padding: 0,\n fontSize: '11px',\n fontWeight: '400',\n lineHeight: '16px',\n color: '#666666',\n },\n '& > h4': {\n margin: 0,\n padding: 0,\n fontSize: '1em',\n fontWeight: 'bold',\n display: 'block',\n },\n },\n engineOff: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #FF0C22',\n '& > img': {\n width: '80%',\n },\n },\n engineOn: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #00c441',\n '& > img': {\n width: '80%',\n },\n },\n engineOut: {\n position: 'relative',\n width: '90px',\n height: '90px',\n borderRadius: '8px',\n background: '#F1F1F1',\n display: 'grid',\n placeContent: 'center',\n margin: '5px 5px 5px 5px',\n border: '2px solid #808080',\n '& > img': {\n width: '80%',\n },\n },\n datePicker: {\n margin: '0px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n summary: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'center',\n gap: '1em',\n paddingTop: '0.8em',\n },\n split: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n summaryIcon: {\n width: '36px',\n height: '36px',\n },\n summaryBlock: {\n flex: 1,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: '1em',\n },\n showTrips: {\n width: '100%',\n margin: '1em 0',\n display: 'flex',\n flexDirection: 'column',\n '& > * + *': {\n marginTop: '1em',\n },\n },\n error: {\n fontSize: '0.7em',\n color: 'red',\n },\n dayWithDotContainer: {\n position: 'relative',\n },\n dayWithDot: {\n position: 'absolute',\n width: '5px',\n height: '5px',\n borderRadius: '50%',\n bottom: '10%',\n left: '50%',\n transform: 'translateX(-50%)',\n background: theme.palette.primary.main,\n },\n filterOptions: {\n position: 'absolute',\n width: '400px',\n height: '300px',\n top: '20%',\n left: '50%',\n transform: 'translate(-50%,0%)',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n borderRadius: '4px',\n padding: '20px',\n display: 'flex',\n flexDirection: 'column',\n },\n filterOptionsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > p': {\n cursor: 'pointer',\n },\n },\n inputType: {\n width: '100%',\n padding: '12px 20px',\n margin: '8px 2px',\n display: 'inline-block',\n border: '1px solid #ccc',\n borderRadius: '4px',\n boxSizing: 'border-box',\n },\n imgBorderOut: {\n position: 'absolute',\n right: '0',\n height: '27px',\n padding: '3px',\n background: '#fff',\n borderRadius: '0px 8px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n imgBorderOn: {\n position: 'absolute',\n right: '0',\n height: '20px',\n padding: '3px',\n background: '#00c441',\n borderRadius: '0px 0px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n imgBorderOff: {\n position: 'absolute',\n right: '0',\n height: '20px',\n padding: '3px',\n background: '#FF0C22',\n borderRadius: '0px 0px 0px 8px',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n replayButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n color: '#70367C',\n cursor: 'pointer',\n zIndex: 4,\n gap: '4px',\n textTransform: 'uppercase',\n },\n edit: {\n textTransform: 'uppercase',\n background: '#fff',\n color: '#FD7E50',\n width: '68px',\n height: '27px',\n border: '1px solid #FD7E50',\n borderRadius: '4px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '5px',\n cursor: 'pointer',\n },\n tractorWorkHeaader: {\n fontSize: '14px',\n fontWeight: '600',\n lineHeight: '19px',\n color: '#333333',\n },\n subHeader: {\n fontWeight: '600',\n fontSize: '14px',\n lineHeight: '19px',\n color: '#333333',\n },\n calendarHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '5px',\n fontSize: '12px',\n lineHeight: '16px',\n fontWeight: '600',\n marginBottom: '5px',\n width: '100px',\n height: '27px',\n border: '1px solid #FD7E50',\n padding: '4px 8px 4px 8px',\n borderRadius: '4px',\n color: '#FD7E50',\n cursor: 'pointer',\n },\n geofenceHeader: {\n fontSize: '14px',\n fontWeight: '600',\n marginBottom: '13px',\n lineHeight: '19px',\n marginTop: '35px',\n },\n geofenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '5px',\n },\n geofenceTab: {\n display: 'flex',\n flexDirection: 'column',\n width: '172px',\n height: '74px',\n background: '#EEE8F1',\n borderRadius: '4px',\n cursor: 'pointer',\n padding: '5px',\n gap: '5px',\n },\n geofenceTabTop: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '12px',\n },\n geofenceNewTab: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '5px',\n border: '1px solid #FD7E50',\n width: '172px',\n height: '74px',\n borderRadius: '4px',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '19.07px',\n cursor: 'pointer',\n },\n}))\n\nexport default tractorDescStyles\n","import Commutes from \"./Commutes\";\nimport Patches from \"./Patches\";\n\nexport default class DaySummary {\n private dateId: string; // yyyy-MM-dd \n private date: Date;\n private computationId: number;\n private idling_time: number;\n private job_time: number;\n private haulage_time: number;\n private distance: number;\n private total_fuel: number;\n private total_fuel_lit: number;\n private max_fuel: number;\n private min_fuel: number;\n private area: number;\n private device_fk_id: number;\n private details_flag: number;\n private patches: Patches[];\n private commutes: Commutes[];\n\n constructor(\n $dateId: string,\n $date: Date,\n $computationId: number,\n $idling_time: number,\n $job_time: number,\n $haulage_time: number,\n $distance: number,\n $total_fuel: number,\n $total_fuel_lit: number,\n $max_fuel: number,\n $min_fuel: number,\n $area: number,\n $device_fk_id: number,\n $details_flag: number,\n $patches: Patches[],\n $commutes: Commutes[]\n ) {\n this.dateId = $dateId;\n this.date = $date;\n this.computationId = $computationId;\n this.idling_time = $idling_time;\n this.job_time = $job_time;\n this.haulage_time = $haulage_time;\n this.distance = $distance;\n this.total_fuel = $total_fuel;\n this.total_fuel_lit = $total_fuel_lit;\n this.max_fuel = $max_fuel;\n this.min_fuel = $min_fuel;\n this.area = $area;\n this.device_fk_id = $device_fk_id;\n this.details_flag = $details_flag;\n this.patches = $patches;\n this.commutes = $commutes;\n }\n\n /**\n * Getter $dateId\n * @return {string}\n */\n public get $dateId(): string {\n return this.dateId;\n }\n\n /**\n * Getter $date\n * @return {Date}\n */\n public get $date(): Date {\n return this.date;\n }\n\n /**\n * Getter $computationId\n * @return {number}\n */\n public get $computationId(): number {\n return this.computationId;\n }\n\n /**\n * Getter $idling_time\n * @return {number}\n */\n public get $idling_time(): number {\n return this.idling_time;\n }\n\n /**\n * Getter $job_time\n * @return {number}\n */\n public get $job_time(): number {\n return this.job_time;\n }\n\n /**\n * Getter $haulage_time\n * @return {number}\n */\n public get $haulage_time(): number {\n return this.haulage_time;\n }\n\n /**\n * Getter $distance\n * @return {number}\n */\n public get $distance(): number {\n return this.distance;\n }\n\n /**\n * Getter $total_fuel\n * @return {number}\n */\n public get $total_fuel(): number {\n return this.total_fuel;\n }\n\n /**\n * Getter $total_fuel_lit\n * @return {number}\n */\n public get $total_fuel_lit(): number {\n return this.total_fuel_lit;\n }\n\n /**\n * Getter $max_fuel\n * @return {number}\n */\n public get $max_fuel(): number {\n return this.max_fuel;\n }\n\n /**\n * Getter $min_fuel\n * @return {number}\n */\n public get $min_fuel(): number {\n return this.min_fuel;\n }\n\n /**\n * Getter $area\n * @return {number}\n */\n public get $area(): number {\n return this.area;\n }\n\n /**\n * Getter $device_fk_id\n * @return {number}\n */\n public get $device_fk_id(): number {\n return this.device_fk_id;\n }\n\n /**\n * Getter $details_flag\n * @return {number}\n */\n public get $details_flag(): number {\n return this.details_flag;\n }\n\n /**\n * Getter $patches\n * @return {Array}\n */\n public get $patches(): Array {\n return this.patches;\n }\n\n /**\n * Getter $commutes\n * @return {Array}\n */\n public get $commutes(): Array {\n return this.commutes;\n }\n\n /**\n * Setter $dateId\n * @param {string} value\n */\n public set $dateId(value: string) {\n this.dateId = value;\n }\n\n /**\n * Setter $date\n * @param {Date} value\n */\n public set $date(value: Date) {\n this.date = value;\n }\n\n /**\n * Setter $computationId\n * @param {number} value\n */\n public set $computationId(value: number) {\n this.computationId = value;\n }\n\n /**\n * Setter $idling_time\n * @param {number} value\n */\n public set $idling_time(value: number) {\n this.idling_time = value;\n }\n\n /**\n * Setter $job_time\n * @param {number} value\n */\n public set $job_time(value: number) {\n this.job_time = value;\n }\n\n /**\n * Setter $haulage_time\n * @param {number} value\n */\n public set $haulage_time(value: number) {\n this.haulage_time = value;\n }\n\n /**\n * Setter $distance\n * @param {number} value\n */\n public set $distance(value: number) {\n this.distance = value;\n }\n\n /**\n * Setter $total_fuel\n * @param {number} value\n */\n public set $total_fuel(value: number) {\n this.total_fuel = value;\n }\n\n /**\n * Setter $total_fuel_lit\n * @param {number} value\n */\n public set $total_fuel_lit(value: number) {\n this.total_fuel_lit = value;\n }\n\n /**\n * Setter $max_fuel\n * @param {number} value\n */\n public set $max_fuel(value: number) {\n this.max_fuel = value;\n }\n\n /**\n * Setter $min_fuel\n * @param {number} value\n */\n public set $min_fuel(value: number) {\n this.min_fuel = value;\n }\n\n /**\n * Setter $area\n * @param {number} value\n */\n public set $area(value: number) {\n this.area = value;\n }\n\n /**\n * Setter $device_fk_id\n * @param {number} value\n */\n public set $device_fk_id(value: number) {\n this.device_fk_id = value;\n }\n\n /**\n * Setter $details_flag\n * @param {number} value\n */\n public set $details_flag(value: number) {\n this.details_flag = value;\n }\n\n /**\n * Setter $patches\n * @param {Array} value\n */\n public set $patches(value: Array) {\n this.patches = value;\n }\n\n /**\n * Setter $commutes\n * @param {Array} value\n */\n public set $commutes(value: Array) {\n this.commutes = value;\n }\n}\n","export default class Patches {\n private duration: number;\n private area: number;\n private centroid_lat: number;\n private centroid_lon: number;\n private id: number;\n private fuel: number;\n private radius: number;\n private patch_tag: string;\n\n constructor(\n duration: number,\n area: number,\n centroid_lat: number,\n centroid_lon: number,\n id: number,\n fuel: number,\n radius: number,\n patch_tag: string\n ) {\n this.duration = duration;\n this.area = area;\n this.centroid_lat = centroid_lat;\n this.centroid_lon = centroid_lon;\n this.id = id;\n this.fuel = fuel;\n this.radius = radius;\n this.patch_tag = patch_tag;\n }\n}\n","export default class Commutes {\n private start: Array;\n private p20: Array;\n private p40: Array;\n private p60: Array;\n private p80: Array;\n private end: Array;\n private id: number;\n\n constructor(\n start: Array,\n p20: Array,\n p40: Array,\n p60: Array,\n p80: Array,\n end: Array,\n id: number\n ) {\n this.start = start;\n this.p20 = p20;\n this.p40 = p40;\n this.p60 = p60;\n this.p80 = p80;\n this.end = end;\n this.id = id;\n }\n}\n","export default class PointsOnMap {\n lats!: any[];\n lngs!: any[];\n ids!: any[];\n}\n","import DaySummary from '../models/DaySummary'\nimport Patches from '../models/Patches'\nimport Commutes from '../models/Commutes'\nimport PointsOnMap from '../models/PointsOnMap'\n// import { isComputedPropertyName } from \"typescript\";\n// import { isInteger } from \"formik\";\n// import Replay from '../models/'\n\nconst MAGIC_STRING =\n '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*_+|:<>?-=.,/'\nconst BASE = 40\nconst STATUS_MAGIC_STRING =\n 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*_+|:<>?-=.,/'\nexport const parseDaySummary = (daySummary) => {\n const { data } = daySummary\n let commutes = []\n let patches = []\n let com = data.commutes\n let pat = data.patches\n for (let i = 0; i < com.id.length; i++) {\n let commute = new Commutes(\n com.start[i],\n com.p20[i],\n com.p40[i],\n com.p60[i],\n com.p80[i],\n com.end[i],\n com.id[i]\n )\n commutes.push(commute)\n }\n\n for (let i = 0; i < pat.id.length; i++) {\n let patch = new Patches(\n pat.running_time[i],\n pat.patch_area[i],\n pat.lat_centroid[i],\n pat.lon_centroid[i],\n pat.id[i],\n pat.fuel_consumed[i],\n pat.boundary_radius_avg[i],\n pat.patch_tags[i]\n )\n patches.push(patch)\n }\n\n let finalDaySummary = new DaySummary(\n data.device_fk_id + data.date,\n data.date,\n data.computation_id,\n data.idling_time,\n data.job_time,\n data.haulage_time,\n data.distance,\n data.total_fuel,\n data.total_fuel_lit,\n data.fuel_params.max,\n data.fuel_params.min,\n data.area,\n data.device_fk_id,\n data.details_flag,\n patches,\n commutes\n )\n\n return finalDaySummary\n}\n\nexport const parseDayDetails = (data) => {\n const commutesParsed = addArraysToDecompressedData(data.commutes)\n const patchesParsed = addArraysToDecompressedData(data.patches)\n const replayParsed = addArraysToDecompressedReplay(data.replay)\n data['commutes'] = formPointsFromCommutesOrPatches(commutesParsed)\n data['patches'] = formPointsFromCommutesOrPatches(patchesParsed)\n data['replay'] = formPointsFromReplay(replayParsed)\n data['beacons'] = data.trip_beacons\n return data\n}\n\n// export const parseDayDetails = (data) => {\n// const commutesParsed = addArraysToDecompressedData(data.commutes);\n// data[\"commutes\"] = formPointsFromCommutesOrPatches(commutesParsed);\n// const patchesParsed = addArraysToDecompressedData(data.patches);\n// data[\"patches\"] = formPointsFromCommutesOrPatches(patchesParsed);\n// let replayParsed;\n// // replayParsed = addArraysToDecompressedReplay(data.replay);\n// if (commutesParsed.id.length > 0 && patchesParsed.id.length > 0) {\n// replayParsed = addArraysToDecompressedReplay(data.replay);\n// data[\"replay\"] = formPointsFromReplay(replayParsed);\n// }\n// // data[\"replay\"] = formPointsFromReplay(replayParsed);\n// // data[\"replay\"] = formPointsFromReplay(replayParsed);\n// return data;\n// };\n\nfunction formPointsFromReplay(replay) {\n const lats = replay.lats\n const lngs = replay.lons\n\n const lat = []\n const lon = []\n const id = []\n const ts = replay.ts\n const status = replay.status\n // const speed = replay.speed;\n for (let i = 0; i < lats.length; i++) {\n lat.push(lats[i])\n lon.push(lngs[i])\n id.push(id[i])\n ts.push(ts[i])\n status.push(status[i])\n }\n const points = new PointsOnMap()\n points.lats = lat\n points.lngs = lon\n points.ids = id\n points.ts = ts\n points.status = status\n // points.speed = speed;\n return points\n}\nfunction formPointsFromCommutesOrPatches(commutesOrPatches) {\n const lats = commutesOrPatches.lat\n const lngs = commutesOrPatches.lon\n const ids = commutesOrPatches.id\n const lat = []\n const lon = []\n const id = []\n\n for (let i = 0; i < lats.length; i++) {\n lat.push(lats[i])\n lon.push(lngs[i])\n id.push(ids[i])\n }\n\n const points = new PointsOnMap()\n points.lats = lat\n points.lngs = lon\n points.ids = id\n\n return points\n}\n\nfunction addArraysToDecompressedReplay(replay) {\n let ref_lat = [replay.ref_lat]\n let ref_long = [replay.ref_lon]\n const commute_lat_array = getFinalReplayArray(replay.lats, ref_lat)\n const commute_lon_array = getFinalReplayArray(replay.lons, ref_long)\n const ts = getCompleteTripTimeStamp(replay.ts, replay.ref_ts)\n const status = getTractorIgnitionStatus(replay.status)\n // const speed=getCompleteSpeedStamp('AHAAAEMMJGHJHIIGIGIIHIHHGHHGIIFIKGFAAGEHAFHHGGIGFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAEHAIAAAAAAAAAAGGIJJAIAJILAAAIIHHIIHGGHHGHGHEHGIHHIHHHHHHGIGHGAAIGIHGFFHGHGHHHGGGIHHAFGFGHIFFHHEEHFGHGFGGGIGGGHHHGFHHEGFHFHHGHGHHHIHIAGEAAHFHGGFIHAHFIEHGFHGFIHHHHHHHHGHGHHHJKFJIIFIHIHGEIHGIHHJGIIHHHJHHIJHHIIFFIGHIFHFHFIIIHHHIGIHIHHGIAFJFHHIHIHGHHHHGGHIHGFAAAAHGGFHFGFFHFGGGHFGHGHHGFEHGGGHHFEIEGHHIGGFIEFEGEFGFFGFAFFAAGEDIIIJJIIHHHHJJGHIGJHJGEGIHHIHHFHGIIGGFGHIGHGHEIFHHJFFFFGGGHFGIIEIAAAAAAAALGIJIGGIJHHHHFHIGHIIIHHHIHHIAAAAAAGHFHGGHIHHEHGGFFDIHIJGIIIHHHFIJFHIIIIHHGHGIIAAAHHFHHFGHGEHGFAIAFGHHAEEAAAGFAEADAEFGAFDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARPLREHJT!#@YX@XAAAAAAAAQZZFPPUSOJQJAGOTLX~WSUWZYXZXYSXMPUVWJRV~!WSUIJRPNFU@~YYIHEUOGNUYSUJQVHNVY~QAAQQANQP#~POTYZ@##WMSQAAAAFHAGAAADAAAFGIN%^^^&&#^%SATM#Y#!G~Y%^EHMYOQ^%%%JLLMLTKQ');\n replay['lats'] = commute_lat_array\n replay['lons'] = commute_lon_array\n replay['ts'] = ts\n replay['status'] = status\n // replay[\"speed\"]=speed;\n delete replay['ref_lat']\n return replay\n}\n\nfunction addArraysToDecompressedData(commuteOrPatch) {\n let refArray = commuteOrPatch.ref\n let ref_lat = refArray[0]\n let ref_lon = refArray[1]\n const commute_lat_array = getFinalArray(commuteOrPatch.lat, ref_lat)\n const commute_lon_array = getFinalArray(commuteOrPatch.lon, ref_lon)\n commuteOrPatch['lat'] = commute_lat_array\n commuteOrPatch['lon'] = commute_lon_array\n delete commuteOrPatch['ref']\n return commuteOrPatch\n}\nfunction getCompleteTripTimeStamp(ts, ref_time) {\n let output_array = getIntegerArray(ts, 36)\n let finalData = []\n finalData.push(convertNotificationTimeStampToMillis(ref_time))\n for (let i = 1; i < output_array.length; i++) {\n finalData.push(finalData[i - 1] + output_array[i] * 1000)\n }\n return finalData\n}\n\n// function getCompleteSpeedStamp(speed) {\n// let output_array = getIntegerArray(speed, 36);\n// return output_array;\n// }\n\nconst convertNotificationTimeStampToMillis = (timeStamp) =>\n new Date(timeStamp + 'Z').getTime()\n\nfunction getFinalReplayArray(inputStr, refArr) {\n let outputArray = getIntegerArray(inputStr, 36)\n let diffOut = getBaseValueDiff(outputArray)\n let updateDoubleData = getDifferenceData(diffOut)\n let finalData = []\n finalData.push(refArr)\n for (let i = 1; i < updateDoubleData.length; i++) {\n finalData.push(\n parseFloat(finalData[i - 1]) + parseFloat(updateDoubleData[i])\n )\n }\n return finalData\n}\nfunction getTractorIgnitionStatus(status) {\n let count = []\n let holder = []\n let currentStatus = parseInt(status[0].toString())\n for (let i = 1; i < status.length; i++) {\n if (isDigit(status[i])) {\n updateStatusArray(getIntValue(holder), currentStatus, count)\n holder = []\n currentStatus = parseInt(status[i].toString())\n } else {\n let x = STATUS_MAGIC_STRING.indexOf(status[i])\n if (x < BASE) {\n holder.push(x)\n } else {\n holder.push(x - BASE)\n }\n if (i === status.length - 1) {\n updateStatusArray(getIntValue(holder), currentStatus, count)\n }\n }\n }\n return count\n}\nconst isDigit = (c) => '1234567890'.includes(c)\n\nfunction updateStatusArray(intValue, currentStatus, count) {\n for (let i = 0; i < intValue; i++) {\n count.push(currentStatus)\n }\n}\n\nfunction getIntegerArray(inputString, BASE) {\n let position = []\n let x\n let holder = []\n for (let i = 0; i < inputString.length; i++) {\n x = MAGIC_STRING.indexOf(inputString.charAt(i))\n if (x < BASE) {\n holder.push(x)\n } else {\n holder.push(x - BASE)\n position.push(getIntValue(holder))\n holder = []\n }\n }\n return position\n}\nfunction getBaseValueDiff(originalArray) {\n let result = []\n if (originalArray.length > 1) {\n for (let i = 0; i < originalArray.length; i++) {\n result.push(originalArray[i] - originalArray[0])\n }\n return result\n } else {\n return originalArray\n }\n}\nfunction getDifferenceData(dataList) {\n let updated = []\n for (let i = 0; i < dataList.length; i++) {\n let val = dataList[i] / 100000\n updated.push(val)\n }\n return updated\n}\nfunction getIntValue(list) {\n let resultSum = 0\n list.reverse()\n for (let i = 0; i < list.length; i++) {\n resultSum = resultSum + Math.pow(36, i) * list[i]\n }\n return resultSum\n}\n\nfunction getDifferenceToNextNumber(originalArray) {\n const result = []\n if (originalArray.length > 1) {\n for (let i = 1; i <= originalArray.length - 1; i++) {\n result.push(originalArray[i] - originalArray[i - 1])\n }\n return result\n } else {\n return originalArray\n }\n}\nfunction getFinalArray(inputStr, refArr) {\n const opArray = []\n\n const subStrArray = getSubStrings(inputStr)\n\n for (let i = 0; i < subStrArray.length; i++) {\n let subStr = subStrArray[i]\n let tempArray = getDiffArray(subStr, refArr[i])\n opArray.push(tempArray)\n }\n return opArray\n}\n\nfunction getDiffArray(subStr, refArr) {\n const pos_arr = []\n const end_ind_arr = []\n const diffArr = []\n\n for (let i = 0; i < subStr.length; i++) {\n pos_arr.push(MAGIC_STRING.indexOf(subStr.charAt(i)))\n }\n\n for (let i = 0; i < pos_arr.length; i++) {\n if (pos_arr[i] < BASE) {\n end_ind_arr.push(i)\n }\n }\n\n end_ind_arr.unshift(-1)\n\n let length_arr = getDifferenceToNextNumber(end_ind_arr)\n let start_ind = 0\n const base_arr = []\n\n for (let i = 0; i < length_arr.length; i++) {\n let end_ind = start_ind + length_arr[i]\n\n let temp = pos_arr.slice(start_ind, end_ind)\n\n for (let j = 0; j < temp.length - 1; j++) {\n temp[j] = temp[j] - BASE\n }\n base_arr.push(temp)\n start_ind = end_ind\n }\n\n for (let i = 0; i < base_arr.length; i++) {\n diffArr.push(0)\n }\n\n let sum = 0\n\n for (let i = 0; i < base_arr.length; i++) {\n let tempArr = base_arr[i]\n sum = 0\n for (let j = 0; j < tempArr.length; j++) {\n sum += tempArr[j] * Math.pow(BASE, tempArr.length - j - 1)\n }\n diffArr[i] = sum\n }\n\n let shift = diffArr[0]\n for (let i = 0; i < diffArr.length; i++) {\n diffArr[i] = diffArr[i] - shift\n }\n\n const outArray = []\n for (let i = 0; i < diffArr.length + 1; i++) {\n if (i === 0) {\n outArray.push(Math.trunc(refArr * 1000000))\n } else {\n outArray.push(0)\n }\n }\n\n for (let i = 1; i < diffArr.length; i++) {\n outArray[i] = Math.trunc(outArray[i - 1] + diffArr[i])\n }\n\n outArray.pop()\n const opDoubleArray = []\n for (let i = 0; i < outArray.length; i++) {\n let a = outArray[i] / 1000000\n opDoubleArray.push(a)\n }\n return opDoubleArray\n}\n\nfunction getSubStrings(inputStr) {\n const positions = []\n let endIndexArr = []\n const subStrArray = []\n let x\n\n for (let i = 0; i < inputStr.length; i++) {\n x = inputStr.charAt(i)\n\n if (x === MAGIC_STRING.charAt(2 * BASE + 1)) {\n positions.push(i)\n }\n }\n\n positions.unshift(-1)\n endIndexArr = positions\n let start_ind, end_ind\n let sub_str\n\n for (let i = 0; i < endIndexArr.length - 1; i++) {\n start_ind = endIndexArr[i] + 1\n end_ind = endIndexArr[i + 1]\n sub_str = inputStr.substring(start_ind, end_ind)\n subStrArray.push(sub_str)\n }\n\n return subStrArray\n}\n","export const API_ROUTES = {\n LOGIN: '/users/auth/verify/',\n DEALER_LOGIN: '/users/auth/dealer_verify/',\n REALTIME_TRACTOR_DATA: '/tractor/get_fleet_data/',\n OTP_REQUEST: '/users/auth/login/',\n DAY_SUMMARY_DATA: '/data/summary/day/',\n DAY_DETAIL_DATA: '/data/details/day/',\n TRIP_DATES: '/data/count/',\n NOTIFICATIONS: '/alerts/fleet/tractor/',\n GROMAX_DEVICES: '/devices/get/gromax_devices/',\n IMMOBILIZE_DEVICE: '/devices/send_immobilize/',\n TRACTOR_COMPANY: '/tractor/makes/',\n GET_ALL_GEOFENCE: '/fleet/get_all_geofences/',\n EDIT_GEOFENCE: '/fleet/edit_geofence/',\n TODAY_STATS: '/fleet/get_overall_status/',\n DAY_EVENTS: '/data/get_replay_event/',\n TODAY_DEALER_STATS: '/fleet/dealers_overall_status/',\n DEALER_REALTIME_TRACTOR_DATA: '/fleet/dealer_fleet_data/',\n REFRESH_ACCESS_TOKEN: '/users/refresh_access_token/',\n}\n\nexport const API_BASE_URL = {\n PARENT_URL: process.env.REACT_APP_PARENT_URL\n ? process.env.REACT_APP_PARENT_URL\n : 'https://production.carnot-traclytics.com',\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n otpSent: false,\n phone: null,\n otpSuccess: null,\n error: {},\n}\n\nconst otpRequestReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.OTP_REQUEST:\n return {\n ...state,\n phone: action.payload,\n otpSent: false,\n loading: true,\n error: {},\n }\n case types.OTP_REQUEST_SUCCESS:\n localStorage.setItem(\n 'user_type',\n action.payload.otpSuccess.data.user_type\n )\n return {\n ...state,\n loading: false,\n phone: action.payload.phone,\n otpSent: action.payload.otpSuccess.status,\n otpSuccess: action.payload.otpSuccess,\n error: {},\n }\n case types.OTP_REQUEST_FAILURE:\n return {\n ...state,\n loading: false,\n phone: null,\n otpSent: false,\n otpSuccess: null,\n error: action.error,\n }\n case types.OTP_RESET:\n return {\n ...state,\n loading: false,\n otpSent: false,\n otpSuccess: null,\n error: {},\n phone: null,\n }\n default:\n return state\n }\n}\n\nexport default otpRequestReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n isLoggedIn: false,\n status: null,\n message: null,\n id: null,\n name: null,\n new_user: null,\n phone: null,\n support_no: null,\n tractors: null,\n allTractors: null,\n realTimes: null,\n allRealTimes: null,\n dob: null,\n auth_token: null,\n mm_is_reg: null,\n mm_phone: null,\n mm_userid: null,\n error: {},\n filterModels: null,\n filterMakers: null,\n filterNames: null,\n filtered: false,\n updateLoading: false,\n}\n\nconst loginReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.LOGIN_REQUEST:\n return {\n ...state,\n loading: true,\n error: {},\n }\n case types.LOGIN_REQUEST_SUCCESS:\n localStorage.setItem('loggedIn', 'true')\n localStorage.setItem('phoneNumber', action.payload.data.phone)\n return {\n ...state,\n loading: false,\n isLoggedIn: true,\n status: action.status,\n message: action.message,\n id: action.payload.data.id,\n name: action.payload.data.name,\n new_user: action.payload.data.new_user,\n phone: action.payload.data.phone,\n support_no: action.payload.data.support_no,\n tractors: action.payload.data.tractors,\n allTractors: action.payload.data.tractors,\n dob: action.payload.data.dob,\n auth_token: action.payload.data.auth_token,\n mm_is_reg: action.payload.data.mm_is_reg,\n mm_phone: action.payload.data.mm_phone,\n mm_userid: action.payload.data.mm_userid,\n realTimes: action.realTimes,\n allRealTimes: action.realTimes,\n error: {},\n }\n case types.UPDATE_REQUEST:\n return {\n ...state,\n updateLoading: true,\n }\n\n case types.UPDATE_SUCCESS:\n return {\n ...state,\n updateLoading: false,\n realTimes: state.realTimes.map((rt) =>\n rt.fb_key === action.payload.realTime.fb_key\n ? action.payload.realTime\n : rt\n ),\n allRealTimes: state.allRealTimes.map((rt) =>\n rt.fb_key === action.payload.realTime.fb_key\n ? action.payload.realTime\n : rt\n ),\n }\n\n case types.LOGIN_REQUEST_FAILURE:\n localStorage.removeItem('loggedIn')\n localStorage.removeItem('phoneNumber')\n return {\n ...state,\n loading: false,\n isLoggedIn: false,\n error: action.error,\n }\n case types.LOGOUT_REQUEST:\n return {\n ...state,\n loading: true,\n }\n case types.LOGOUT_REQUEST_SUCCESS:\n localStorage.removeItem('loggedIn')\n localStorage.removeItem('phoneNumber')\n localStorage.removeItem('user_type')\n sessionStorage.removeItem('access_token')\n sessionStorage.removeItem('refresh_token')\n return {\n ...state,\n loading: false,\n isLoggedIn: false,\n status: null,\n message: null,\n id: null,\n name: null,\n new_user: null,\n phone: null,\n support_no: null,\n tractors: null,\n allTractors: null,\n realTimes: null,\n allRealTimes: null,\n dob: null,\n auth_token: null,\n mm_is_reg: null,\n mm_phone: null,\n mm_userid: null,\n error: {},\n }\n case types.LOGOUT_REQUEST_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.error,\n }\n case types.FILTER_TRACTOR_REQUEST:\n return {\n ...state,\n filterModels: action.payload.models,\n filterMakers: action.payload.makers,\n filterNames: action.payload.names,\n }\n case types.FILTER_TRACTOR_SUCCESS:\n return {\n ...state,\n tractors: action.payload.tractors,\n realTimes: action.payload.realTimes,\n filtered: true,\n }\n case types.RESET_ALL_FILTERS:\n return {\n ...state,\n tractors: state.allTractors,\n realTimes: state.allRealTimes,\n filtered: false,\n filterModels: null,\n filterMakers: null,\n filterNames: null,\n }\n default:\n return state\n }\n}\n\nexport default loginReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n date: null,\n realTime: null,\n tractor: null,\n area: null,\n totalTime: null,\n kms: null,\n status: null,\n fuelLevel: null,\n lastActive: null,\n dailyStatus: null,\n commutes: null,\n patches: null,\n replay: null,\n patchesLatsCentroid: null,\n patchesLongsCentroid: null,\n patchesArea: null,\n patchesStartTime: null,\n patchesEndTime: null,\n beacon: null,\n error: {},\n}\n\nconst daySummaryReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.DAY_SUMMARY_REQUEST:\n return {\n ...state,\n loading: true,\n tractor: action.payload.tractor,\n realTime: action.payload.realTime,\n date: action.payload.date,\n dailyStatus: null,\n error: {},\n }\n case types.DAY_SUMMARY_SUCCESS:\n return {\n ...state,\n loading: false,\n area: action.payload.area,\n totalTime: action.payload.totalTime,\n kms: action.payload.kms,\n status: action.payload.status,\n fuelLevel: action.payload.fuelLevel,\n lastActive: action.payload.lastActive,\n dailyStatus: action.payload.dailyStatus,\n commutes: action.payload.commutes,\n patches: action.payload.patches,\n replay: action.payload.replay,\n patchesLatsCentroid: action.payload.patchesLatsCentroid,\n patchesLongsCentroid: action.payload.patchesLongsCentroid,\n patchesArea: action.payload.patchesArea,\n patchesStartTime: action.payload.patchesStartTime,\n patchesEndTime: action.payload.patchesEndTime,\n beacon: action.payload.beacon,\n error: {},\n }\n case types.DAY_SUMMARY_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.error,\n }\n default:\n return state\n }\n}\n\nexport default daySummaryReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n tractor: null,\n realTime: null,\n dates: null,\n error: {},\n}\n\nconst tractorReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.TRACTOR_REQUEST:\n return {\n ...state,\n loading: true,\n tractor: action.payload.tractor,\n realTime: action.payload.realTime,\n error: {},\n }\n case types.TRACTOR_REQUEST_SUCCESS:\n return {\n ...state,\n loading: false,\n dates: action.payload.dates,\n error: {},\n }\n case types.TRACTOR_REQUEST_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.error,\n }\n default:\n return state\n }\n}\n\nexport default tractorReducer\n","import * as types from '../types'\n\nconst initialState = {\n msg: null,\n status: null,\n}\n\nconst errorReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.GET_ERRORS:\n return {\n ...state,\n msg: action.payload.msg,\n status: action.payload.status,\n }\n case types.CLEAR_ERRORS:\n return {\n ...state,\n msg: null,\n status: null,\n }\n default:\n return state\n }\n}\n\nexport default errorReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n data: [],\n status: null,\n error: {},\n}\n\nconst fetchNotificationReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.FETCH_NOTIFICATION_REQUEST:\n return {\n ...state,\n loading: true,\n error: {},\n }\n\n case types.FETCH_NOTIFICATION_SUCCESS:\n return {\n ...state,\n loading: false,\n data: action.payload.data,\n status: action.payload.status,\n }\n case types.FETCH_NOTIFICATION_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.error,\n }\n default:\n return state\n }\n}\n\nexport default fetchNotificationReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n data: null,\n error: {},\n}\n\nconst getGromaxReducer = (state = initialState, action) => {\n switch (action.type) {\n case types.GET_GROMAX_REQUEST:\n return {\n ...state,\n loading: true,\n error: {},\n }\n case types.GET_GROMAX_SUCCESS:\n return {\n ...state,\n loading: false,\n data: action.payload.data,\n error: {},\n }\n case types.GET_GROMAX_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.error,\n }\n default:\n return state\n }\n}\n\nexport default getGromaxReducer\n","import * as types from '../types'\n\nconst initialState = {\n date: new Date(),\n}\n\nconst selectDateReducer = (state = initialState, action) => {\n if (action.type === types.SELECT_DATE) {\n return {\n ...state,\n date: action.payload.date,\n }\n } else {\n return state\n }\n}\n\nexport default selectDateReducer\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n phone: null,\n realtimeData: null,\n error: null,\n}\n\nexport default function realtimeReducer(state = initialState, action) {\n switch (action.type) {\n case types.REALTIME_REQUEST:\n return {\n ...state,\n loading: true,\n phone: action.payload.phone,\n }\n\n case types.REALTIME_SUCCESS:\n return {\n ...state,\n loading: false,\n realtimeData: action.payload.realtimeData,\n }\n\n case types.REALTIME_FAILURE:\n return {\n ...state,\n loading: false,\n phone: null,\n realtimeData: null,\n error: action.payload.error,\n }\n\n case types.REALTIME_RESET:\n return {\n ...state,\n loading: false,\n phone: null,\n realtimeData: null,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestTractorDetail: null,\n tractorDataUpdated: null,\n error: null,\n}\n\nexport default function tractorDetailReducer(state = initialState, action) {\n switch (action.type) {\n case types.TRACTOR_DETAIL_REQUEST:\n return {\n ...state,\n loading: true,\n requestTractorDetail: action.payload.requestTractorDetail,\n }\n\n case types.TRACTOR_DETAIL_SUCCESS:\n return {\n ...state,\n loading: false,\n tractorDataUpdated: action.payload.tractorDataUpdated,\n }\n\n case types.TRACTOR_DETAIL_FAILURE:\n return {\n ...state,\n loading: false,\n requestTractorDetail: null,\n tractorDataUpdated: null,\n error: action.payload.error,\n }\n\n case types.TRACTOR_DETAIL_RESET:\n return {\n ...state,\n loading: false,\n requestTractorDetail: null,\n tractorDataUpdated: null,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n localTractorNameList: null,\n error: null,\n}\n\nexport default function localTractorNameReducer(state = initialState, action) {\n switch (action.type) {\n case types.LOCAL_TRACTOR_NAME:\n let nameList = state.localTractorNameList\n ? [...state.localTractorNameList]\n : []\n\n let found = nameList.find(\n (item) => item.id === action.payload.requestLocalTractorName.id\n )\n\n if (found) {\n nameList = nameList.filter(\n (item) =>\n item.id !== action.payload.requestLocalTractorName.id\n )\n }\n\n return {\n ...state,\n localTractorNameList: [\n ...nameList,\n action.payload.requestLocalTractorName,\n ],\n }\n\n case types.RESET_LOCAL_TRACTOR_NAME:\n return {\n ...state,\n localTractorNameList: null,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestMakeId: null,\n resTractorCompany: null,\n error: null,\n}\n\nexport default function tractorCompanyReducer(state = initialState, action) {\n switch (action.type) {\n case types.TRACTOR_COMPANY_REQUEST:\n return {\n ...state,\n loading: true,\n requestMakeId: action.payload.requestMakeId,\n }\n\n case types.TRACTOR_COMPANY_SUCCESS:\n return {\n ...state,\n loading: false,\n resTractorCompany: action.payload.resTractorCompany,\n }\n\n case types.TRACTOR_COMPANY_FAILURE:\n return {\n ...state,\n loading: false,\n requestMakeId: null,\n resTractorCompany: null,\n error: action.payload.error,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestTractorModelId: null,\n resTractorModel: null,\n error: null,\n}\n\nexport default function tractorModelReducer(state = initialState, action) {\n switch (action.type) {\n case types.TRACTOR_MODEL_REQUEST:\n return {\n ...state,\n loading: true,\n requestTractorModelId: action.payload.requestTractorModelId,\n }\n\n case types.TRACTOR_MODEL_SUCCESS:\n return {\n ...state,\n loading: false,\n resTractorModel: action.payload.resTractorModel,\n }\n\n case types.TRACTOR_MODEL_FAILURE:\n return {\n ...state,\n loading: false,\n requestTractorId: null,\n resTractorModel: null,\n error: action.payload.error,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestTractorId: null,\n resAllGeofence: null,\n error: null,\n}\n\nexport default function getAllGeofenceReducer(state = initialState, action) {\n switch (action.type) {\n case types.GET_ALL_GEOFENCE_REQUEST:\n return {\n ...state,\n loading: true,\n requestTractorId: action.payload.requestTractorId,\n }\n\n case types.GET_ALL_GEOFENCE_SUCCESS:\n return {\n ...state,\n loading: false,\n resAllGeofence: action.payload.resAllGeofence,\n }\n\n case types.GET_ALL_GEOFENCE_FAILURE:\n return {\n ...state,\n loading: false,\n requestTractorId: null,\n resAllGeofence: null,\n error: action.payload.error,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestEditGeofence: null,\n resEditGeofence: null,\n error: null,\n}\n\nexport default function editGeofenceReducer(state = initialState, action) {\n switch (action.type) {\n case types.EDIT_GEOFENCE_REQUEST:\n return {\n ...state,\n loading: true,\n requestEditGeofence: action.payload.requestEditGeofence,\n }\n\n case types.EDIT_GEOFENCE_SUCCESS:\n return {\n ...state,\n loading: false,\n resEditGeofence: action.payload.resEditGeofence,\n }\n\n case types.EDIT_GEOFENCE_FAILURE:\n return {\n ...state,\n loading: false,\n requestEditGeofence: null,\n resEditGeofence: null,\n error: action.payload.error,\n }\n case types.EDIT_GEOFENCE_RESET:\n return {\n ...state,\n loading: false,\n requestEditGeofence: null,\n resEditGeofence: null,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestUserID: null,\n resTodayStatus: null,\n error: null,\n}\n\nexport default function getTodayStatusReducer(state = initialState, action) {\n switch (action.type) {\n case types.GET_TODAY_STATUS_REQUEST:\n return {\n ...state,\n loading: true,\n requestUserID: action.payload.requestUserID,\n }\n\n case types.GET_TODAY_STATUS_SUCCESS:\n return {\n ...state,\n loading: false,\n resTodayStatus: action.payload.resTodayStatus,\n }\n\n case types.GET_TODAY_STATUS_FAILURE:\n return {\n ...state,\n loading: false,\n requestUserID: null,\n resTodayStatus: null,\n error: action.payload.error,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n loading: false,\n requestDeviceID: null,\n resAllEvents: null,\n error: null,\n}\n\nexport default function getDayEventsReducer(state = initialState, action) {\n switch (action.type) {\n case types.GET_DAY_EVENTS_REQUEST:\n return {\n ...state,\n loading: true,\n requestDeviceID: action.payload.requestDeviceID,\n }\n\n case types.GET_DAY_EVENTS_SUCCESS:\n return {\n ...state,\n loading: false,\n resAllEvents: action.payload.resAllEvents,\n }\n\n case types.GET_DAY_EVENTS_FAILURE:\n return {\n ...state,\n loading: false,\n requestDeviceID: null,\n resAllEvents: null,\n error: action.payload.error,\n }\n\n case types.GET_DAY_EVENTS_RESET:\n return {\n ...state,\n loading: false,\n requestDeviceID: null,\n resAllEvents: null,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as types from '../types'\n\nconst initialState = {\n selectedUnit: null,\n error: null,\n}\n\nexport default function selectedUnitReducer(state = initialState, action) {\n switch (action.type) {\n case types.SELECTED_UNIT:\n return {\n ...state,\n selectedUnit: action.payload.requestUnit,\n }\n\n default:\n return state\n }\n}\n","import { combineReducers } from 'redux'\nimport otpRequestReducer from './otpRequestReducer'\nimport loginReducer from './loginReducer'\nimport daySummaryReducer from './daySummaryReducer'\nimport tractorReducer from './tractorReducer'\nimport errorReducer from './errorReducer'\nimport fetchNotificationReducer from './fetchNotificationReducer'\nimport getGromaxReducer from './getGromaxReducer'\nimport selectDateReducer from './selectDateReducer'\nimport realtimeReducer from './realtimeReducer'\nimport tractorDetailReducer from './tractorDetailReducer'\nimport localTractorNameReducer from './localTractorNameReducer'\nimport tractorCompanyReducer from './tractorCompanyReducer'\nimport tractorModelReducer from './tractorModelReducer'\nimport getAllGeofenceReducer from './getAllGeofenceReducer'\nimport editGeofenceReducer from './editGeofenceReducer'\nimport getTodayStatusReducer from './getTodayStatusReducer'\nimport getDayEventsReducer from './getDayEventsReducer'\nimport selectedUnitReducer from './updateUnitReducer'\n\nconst rootReducer = combineReducers({\n loginReducer,\n otpRequestReducer,\n daySummaryReducer,\n tractorReducer,\n errorReducer,\n realtimeReducer,\n fetchNotificationReducer,\n gromaxReducer: getGromaxReducer,\n dateReducer: selectDateReducer,\n tractorUpdateReducer: tractorDetailReducer,\n localTractorNameReducer,\n tractorCompanyReducer,\n tractorModelReducer,\n getAllGeofenceReducer,\n editGeofenceReducer,\n getTodayStatusReducer,\n getDayEventsReducer,\n selectedUnitReducer,\n})\n\nexport default rootReducer\n","import * as types from '../types'\n\nexport const returnErrors = ({ msg, status }) => {\n return {\n type: types.GET_ERRORS,\n payload: { msg, status },\n }\n}\n\nexport const clearErrors = () => {\n return {\n type: types.CLEAR_ERRORS,\n }\n}\n","import { call, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n otpRequestFailure,\n otpRequestSuccess,\n} from '../actions/otpRequestAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\n\nfunction* asyncOtpRequest(action) {\n try {\n yield put(clearErrors())\n let otpSuccess = yield call(_api.makeOTPRequestCall, action.payload)\n yield put(\n otpRequestSuccess({\n otpSuccess,\n phone: action.payload,\n })\n )\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(otpRequestFailure(e))\n }\n}\n\nexport default function* otpRequestSaga() {\n yield takeLatest(types.OTP_REQUEST, asyncOtpRequest)\n}\n","// Your web app's Firebase configuration\nexport const config = {\n apiKey: 'AIzaSyAEXnSZr2mu--JzcXXjGAlbuuf1DOPE-HM',\n authDomain: 'traclytics.firebaseapp.com',\n databaseURL: 'https://traclytics-new.firebaseio.com',\n projectId: 'traclytics',\n storageBucket: 'traclytics.appspot.com',\n messagingSenderId: '470009066526',\n appId: '1:470009066526:web:3be2bd2c1911ec9e736a0f',\n}\n","import firebase from 'firebase'\nimport { config } from '../config'\nfirebase.initializeApp(config)\n\nexport const parseIndividualRealtimeString = async (fb_key) => {\n let presenceRef = firebase.database().ref('.info/connected')\n let presenceStatus = firebase.database().ref(`/status/${fb_key}`)\n\n presenceRef.on('value', function (snapshot) {\n if (snapshot.val()) {\n presenceStatus.on('value', function (dataSnap) {\n let currentCount = 0\n if (dataSnap.val() !== null) {\n if (\n Number.isInteger(dataSnap.val()) &&\n dataSnap.val() <= 0\n ) {\n presenceStatus.set(currentCount + 1)\n }\n } else {\n currentCount++\n presenceStatus.set(currentCount + 1)\n }\n presenceStatus.onDisconnect().set(0)\n })\n }\n })\n\n const realtimeReadRef = firebase.database().ref(`devices/${fb_key}`)\n const snapshot = await realtimeReadRef.once('value')\n\n const firebaseStr = snapshot.val()\n\n const refLatLon = firebase.database().ref(`references/${fb_key}`)\n const snapsho = await refLatLon.once('value')\n\n const firebaseRefLatLonStr = snapsho.val()\n\n const digits =\n '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n const indiaLatMin = firebaseRefLatLonStr\n ? firebaseRefLatLonStr['lat']\n : 8.872694\n const indiaLonMin = firebaseRefLatLonStr\n ? firebaseRefLatLonStr['lon']\n : 67.372945\n const base = 25\n const timeStampMin = 20190101000000\n const keyStart = 2 * base + 2\n let hexSum = 0.0\n\n const intArray = []\n\n for (let i = 0; i < firebaseStr.length; i++) {\n const x = firebaseStr.charAt(i)\n intArray.push(digits.indexOf(x))\n }\n\n const valueArray = []\n let lastEndInd = 0\n\n for (let i = 1; i < intArray.length; i++) {\n const temp = intArray[i]\n if (temp > keyStart) {\n let data = []\n data.push(...intArray.slice(lastEndInd + 1, i))\n valueArray.push(data)\n lastEndInd = i\n }\n }\n\n let data = []\n data.push(...intArray.slice(lastEndInd + 1, intArray.length))\n valueArray.push(data)\n const finalArray = []\n for (let i = 0; i < valueArray.length; i++) {\n hexSum = 0.0\n let temp = valueArray[i]\n let da = temp.reverse()\n\n for (let j = 0; j < da.length; j++) {\n hexSum += da[j] * Math.pow(base, j)\n }\n finalArray.push(hexSum)\n }\n\n let temp = finalArray[8]\n temp += timeStampMin\n let _temp = temp.toString()\n let tempStr =\n _temp.substring(0, 4) +\n '-' +\n _temp.substring(4, 6) +\n '-' +\n _temp.substring(6, 8) +\n 'T' +\n _temp.substring(8, 10) +\n ':' +\n _temp.substring(10, 12) +\n ':' +\n _temp.substring(12, 14) +\n 'Z'\n\n let realtime = {\n fuel_level_dashboard: finalArray[0] / 100,\n latitude: finalArray[1] / 1000000.0 + indiaLatMin,\n longitude: finalArray[3] / 1000000.0 + indiaLonMin,\n lock_status: finalArray[2],\n orientation: finalArray[4],\n rpm: finalArray[5],\n speed: finalArray[6],\n status: finalArray[7],\n time_stamp: tempStr,\n sts: tempStr,\n fb_key,\n }\n\n // alert(JSON.stringify(realtime));\n\n return realtime\n}\n\nexport const goOffline = () => {\n firebase.database().goOffline()\n firebase\n .app()\n .delete()\n .then(function () {\n firebase.initializeApp(config)\n })\n}\n\nexport const goOnline = () => {\n firebase.database().goOnline()\n}\n","import { call, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n loginRequestSuccess,\n loginRequestFailure,\n} from '../actions/loginAction'\nimport {\n logoutRequestSuccess,\n logoutRequestFailure,\n} from '../actions/logoutAction'\nimport { otpReset } from '../actions/otpRequestAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\n\nimport { goOffline } from '../../firebase'\n\nfunction* asyncLoginRequest(action) {\n try {\n yield put(clearErrors())\n const res = yield call(_api.fetchTractorListData, {\n phoneNumber: action.payload.phone,\n otp: action.payload.otp,\n })\n if (res.status && res.data.tractors.length > 0) {\n sessionStorage.setItem(\n 'access_token',\n res.data.auth_tokens.access_token\n )\n sessionStorage.setItem(\n 'refresh_token',\n res.data.auth_tokens.refresh_token\n )\n const realtimeTractorData = yield call(\n _api.fetchRealtimeTractorData,\n {\n phone: res.data.phone,\n }\n )\n let realCheckData = []\n if (realtimeTractorData && realtimeTractorData.status) {\n for (let i = 0; i < res.data.tractors.length; i++) {\n realCheckData.push({\n latitude:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['latitude'],\n longitude:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['longitude'],\n fuel_level_dashboard:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['fuel_level_dashboard'],\n lock_status:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['lock_status'],\n orientation:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['orientation'],\n rpm: realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['rpm'],\n speed: realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['speed'],\n status: realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['status'],\n time_stamp:\n realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['time_stamp'],\n sts: realtimeTractorData.data[\n res.data.tractors[i]['device_pk']\n ]['sts'],\n fb_key: res.data.tractors[i]['fb_key'],\n })\n }\n }\n yield put(\n loginRequestSuccess({\n data: res.data,\n status: res.status,\n message: res.message,\n realTimes: realCheckData,\n })\n )\n } else if (!res.status) {\n yield put(loginRequestFailure({ message: res.message }))\n } else if (res.data.new_user || res.data.tractors.length === 0) {\n yield put(\n loginRequestFailure({\n message:\n 'No Associated Tractor Found Please add tractor to your account from our app and then continue',\n })\n )\n } else {\n yield put(\n loginRequestSuccess({\n data: res.data,\n status: res.status,\n message: res.message,\n })\n )\n }\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(loginRequestFailure(e))\n }\n}\n\nfunction* asyncLoginUpdateRequest(action) {\n try {\n yield put(clearErrors())\n const realTimesUpdate = yield action.payload.tractors\n yield put(\n loginRequestSuccess({\n data: {\n id: action.payload.id,\n name: '',\n new_user: false,\n phone: action.payload.phone,\n support_no: 9152915200,\n dob: '',\n auth_token: action.payload.auth_token,\n mm_is_reg: false,\n mm_phone: -1,\n mm_userid: -1,\n tractors: action.payload.tractors,\n },\n status: action.payload.status,\n message: action.payload.message,\n realTimes: realTimesUpdate,\n })\n )\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(loginRequestFailure(e))\n }\n}\n\nfunction* asyncLogoutRequest(action) {\n try {\n goOffline()\n yield put(otpReset())\n yield put(logoutRequestSuccess())\n } catch (e) {\n yield put(logoutRequestFailure(e))\n }\n}\n\nexport default function* loginRequestSaga() {\n yield put(clearErrors())\n yield takeLatest(types.LOGIN_REQUEST, asyncLoginRequest)\n}\n\nexport function* loginUpdateSaga() {\n yield put(clearErrors())\n yield takeLatest(types.LOGIN_UPDATE, asyncLoginUpdateRequest)\n}\n\nexport function* logoutRequestSaga() {\n yield takeLatest(types.LOGOUT_REQUEST, asyncLogoutRequest)\n}\n","const getImplementData = (replayTimeStamp, beaconData) => {\n if (beaconData?.length > 0) {\n const implementType = []\n replayTimeStamp.forEach((timestamp) => {\n let found = false\n for (let item of beaconData) {\n const startTsMs = new Date(item.start_ts).getTime()\n const endTsMs = new Date(item.end_ts).getTime()\n if (timestamp >= startTsMs && timestamp <= endTsMs) {\n implementType.push(item.beacon_metadata.implement_type)\n found = true\n break\n }\n }\n if (!found) {\n implementType.push('No Implement')\n }\n })\n return implementType\n } else {\n return []\n }\n}\nexport default getImplementData\n","import { call, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n parsedFuelAndStatus,\n tripTimeFromDaySummary,\n getTimeDiff,\n} from '../../utils/TimeUtils'\nimport getImplementData from '../../utils/getImplementData'\nimport { parseDaySummary } from '../../utils/MapUtils.js'\n\nimport {\n daySummarySuccess,\n daySummaryFailure,\n} from '../actions/daySummaryAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\n\nconst SQR_MTS_ACRES = 0.000247105\n\nfunction* asyncDaySummary(action) {\n let area = '0',\n data = '0',\n totalTime = '0',\n kms = '0',\n status = '0',\n fuelLevel = '0',\n lastActive = '0',\n dailyStatus,\n commutes,\n patches,\n patchesLatsCentroid,\n patchesLongsCentroid,\n patchesArea,\n replay,\n patchesStartTime,\n beacon,\n patchesEndTime\n\n lastActive = action.payload.realTime\n ? getTimeDiff(action.payload.realTime.time_stamp)\n : '0'\n try {\n yield put(clearErrors())\n const parsedData = parsedFuelAndStatus(\n action.payload.realTime,\n action.payload.tractor\n )\n status = parsedData[0]\n fuelLevel = parsedData[1]\n const res = yield call(_api.fetchDaySummary, {\n deviceId: action.payload.tractor.device_pk,\n date: action.payload.date,\n tractor: action.payload.tractor,\n realTime: action.payload.realTime,\n })\n\n if (res && res.status) {\n let commutePatchesLength = 0\n for (let key of Object.keys(res.data.commutes)) {\n commutePatchesLength =\n commutePatchesLength + res.data.commutes[key].length\n }\n if (commutePatchesLength > 0) {\n dailyStatus = res.status\n data = parseDaySummary(res)\n area = (data.area * SQR_MTS_ACRES).toFixed(2)\n totalTime = tripTimeFromDaySummary(\n data.haulage_time + data.idling_time + data.job_time\n )\n kms = (data.distance / 1000).toFixed(2)\n const res2 = yield call(_api.fetchDayDetail, {\n deviceId: data.device_fk_id,\n date: action.payload.date,\n })\n\n commutes = res2.commutes\n patches = res2.patches\n replay = res2.replay\n if (res2.replay) {\n beacon = getImplementData(replay.ts, res2.beacons)\n }\n }\n patchesLatsCentroid = res.data['patches']['lat_centroid']\n patchesLongsCentroid = res.data['patches']['lon_centroid']\n patchesArea = res.data['patches']['patch_area']\n patchesStartTime = res.data['patches']['patch_start_ts']\n patchesEndTime = res.data['patches']['patch_end_ts']\n }\n yield put(\n daySummarySuccess({\n status,\n dailyStatus,\n area,\n totalTime,\n kms,\n fuelLevel,\n lastActive,\n commutes,\n patches,\n replay,\n patchesLatsCentroid,\n patchesLongsCentroid,\n patchesArea,\n patchesStartTime,\n patchesEndTime,\n beacon,\n })\n )\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(daySummaryFailure(e))\n }\n}\n\nexport default function* daySummaryRequestSaga() {\n yield takeLatest(types.DAY_SUMMARY_REQUEST, asyncDaySummary)\n}\n","import { call, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n tractorRequestSuccess,\n tractorRequestFailure,\n} from '../actions/tractorAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\n\nfunction* asynctractorRequest(action) {\n try {\n yield put(clearErrors())\n const res = yield call(_api.fetchTripsDates, {\n deviceId: action.payload.tractor.device_pk,\n tractor: action.payload.tractor,\n realTime: action.payload.realTime,\n })\n const dates = Object.keys(res).sort()\n yield put(tractorRequestSuccess({ dates }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n\n yield put(tractorRequestFailure(e))\n }\n}\n\nexport default function* tractorRequestSaga() {\n yield takeLatest(types.TRACTOR_REQUEST, asynctractorRequest)\n}\n","import * as types from '../types'\n\nexport const filterTractorRequest = ({ models, makers, names }) => {\n return {\n type: types.FILTER_TRACTOR_REQUEST,\n payload: {\n models,\n makers,\n names,\n },\n }\n}\n\nexport const filterTractorSuccess = ({ tractors, realTimes }) => {\n return {\n type: types.FILTER_TRACTOR_SUCCESS,\n payload: {\n tractors,\n realTimes,\n },\n }\n}\n\nexport const filterTractorFailure = (e) => {\n return {\n type: types.FILTER_TRACTOR_FAILURE,\n payload: {},\n error: e,\n }\n}\n\nexport const resetAllFilters = () => {\n return {\n type: types.RESET_ALL_FILTERS,\n }\n}\n","import { select, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n filterTractorSuccess,\n filterTractorFailure,\n} from '../actions/filterTractorAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\n\nexport const getTractors = (state) => state.loginReducer.allTractors\nexport const getRealTimes = (state) => state.loginReducer.allRealTimes\n\nfunction* asyncFilterTractorRequest(action) {\n try {\n yield put(clearErrors())\n const { makers, models, names } = action.payload\n let tractors = yield select(getTractors)\n let realTimes = yield select(getRealTimes)\n let filteredTractors = []\n let filteredRealTimes = []\n if (\n (makers && makers.length > 0) ||\n (models && models.length > 0) ||\n (names && names.length > 0)\n ) {\n if (makers?.length > 0 && models?.length > 0 && names?.length > 0) {\n tractors.forEach((t, i) => {\n if (\n makers.includes(t.make) &&\n models.includes(t.model) &&\n names.includes(t.name) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n } else if (\n makers?.length > 0 &&\n models?.length > 0 &&\n names?.length === 0\n ) {\n tractors.forEach((t, i) => {\n if (\n makers.includes(t.make) &&\n models.includes(t.model) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n } else if (\n makers?.length > 0 &&\n models?.length === 0 &&\n names?.length > 0\n ) {\n tractors.forEach((t, i) => {\n if (\n makers.includes(t.make) &&\n names.includes(t.name) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n } else if (\n makers?.length === 0 &&\n models?.length > 0 &&\n names?.length > 0\n ) {\n tractors.forEach((t, i) => {\n if (\n models.includes(t.model) &&\n names.includes(t.name) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n } else {\n if (makers && makers.length > 0) {\n tractors.forEach((t, i) => {\n if (\n makers.includes(t.make) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n }\n if (models && models.length > 0) {\n tractors.forEach((t, i) => {\n if (\n models.includes(t.model) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n }\n if (names && names.length > 0) {\n tractors.forEach((t, i) => {\n if (\n names.includes(t.name) &&\n !filteredTractors.includes(t)\n ) {\n filteredRealTimes.push(realTimes[i])\n filteredTractors.push(t)\n }\n })\n }\n }\n } else {\n filteredTractors = tractors\n }\n yield put(\n filterTractorSuccess({\n tractors: filteredTractors,\n realTimes: filteredRealTimes,\n })\n )\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(filterTractorFailure(e))\n }\n}\n\nexport default function* filterTractorSaga() {\n yield takeLatest(types.FILTER_TRACTOR_REQUEST, asyncFilterTractorRequest)\n}\n","import { put, takeLatest, call } from 'redux-saga/effects'\nimport * as types from '../types'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport {\n fetchNotificationFailure,\n fetchNotificationSuccess,\n} from '../actions/fetchNotificationAction'\nimport * as _api from '../../api'\n\nfunction* asyncFetchNotificationSaga(action) {\n try {\n yield put(clearErrors())\n const res = yield call(_api.fetchNotification, {\n id: action.payload.id,\n })\n if (res.status) {\n yield put(\n fetchNotificationSuccess({\n data: res.data,\n status: res.status,\n })\n )\n } else if (!res.status) {\n yield put(fetchNotificationFailure({ message: res.message }))\n }\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(fetchNotificationFailure(e))\n }\n}\nexport default function* fetchNotificationSaga() {\n yield put(clearErrors())\n yield takeLatest(\n types.FETCH_NOTIFICATION_REQUEST,\n asyncFetchNotificationSaga\n )\n}\n","import * as types from '../types'\n\nexport const getGromaxRequest = () => {\n return {\n type: types.GET_GROMAX_REQUEST,\n payload: {},\n }\n}\n\nexport const getGromaxSuccess = ({ data }) => {\n return {\n type: types.GET_GROMAX_SUCCESS,\n payload: {\n data,\n },\n }\n}\n\nexport const getGromaxFailure = (error) => {\n return {\n type: types.GET_GROMAX_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { call, put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport { getGromaxSuccess, getGromaxFailure } from '../actions/getGromaxAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\n\nfunction* asyncGetGromaxRequestSaga(action) {\n try {\n yield put(clearErrors())\n const res = yield call(_api.getGromaxDevices)\n yield put(getGromaxSuccess({ data: res.data }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(getGromaxFailure(e))\n }\n}\n\nexport default function* getGromaxRequestSaga() {\n yield takeLatest(types.GET_GROMAX_REQUEST, asyncGetGromaxRequestSaga)\n}\n","import * as types from '../types'\n\nexport const updateRequest = ({ fb_key }) => {\n return {\n type: types.UPDATE_REQUEST,\n payload: { fb_key },\n }\n}\n\nexport const updateSuccess = ({ realTime }) => {\n return {\n type: types.UPDATE_SUCCESS,\n payload: {\n realTime,\n },\n }\n}\n\nexport const updateFailure = (error) => {\n return {\n type: types.UPDATE_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { put, takeLatest } from 'redux-saga/effects'\nimport * as types from '../types'\nimport {\n updateSuccess,\n updateFailure,\n} from '../actions/updateTractorDataAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\n\nimport { parseIndividualRealtimeString } from '../../firebase'\n\nfunction* asyncUpdateRequest(action) {\n try {\n yield put(clearErrors())\n if (action.payload.fb_key) {\n const realTime = yield parseIndividualRealtimeString(\n action.payload.fb_key\n )\n yield put(\n updateSuccess({\n realTime,\n })\n )\n }\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(updateFailure(e))\n }\n}\n\nexport default function* updateSaga() {\n yield put(clearErrors())\n yield takeLatest(types.UPDATE_REQUEST, asyncUpdateRequest)\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n realtimeRequestFailure,\n realtimeRequestSuccess,\n} from '../actions/realtimeRequestAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncRealtimeSaga(action) {\n try {\n yield put(clearErrors())\n let realtimeData = yield call(_api.fetchRealtimeTractorData, {\n phone: action.payload.phone,\n })\n yield put(realtimeRequestSuccess({ realtimeData }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(realtimeRequestFailure({ error: e }))\n }\n}\nexport default function* realtimeSaga() {\n yield takeLatest(types.REALTIME_REQUEST, asyncRealtimeSaga)\n}\n","import * as types from '../types'\n\nexport const tractorDetailRequest = ({ requestTractorDetail }) => {\n return {\n type: types.TRACTOR_DETAIL_REQUEST,\n payload: { requestTractorDetail },\n }\n}\n\nexport const tractorDetailSuccess = ({ tractorDataUpdated }) => {\n return {\n type: types.TRACTOR_DETAIL_SUCCESS,\n payload: {\n tractorDataUpdated,\n },\n }\n}\n\nexport const tractorDetailFailure = (error) => {\n return {\n type: types.TRACTOR_DETAIL_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const tractorDetailReset = () => {\n return {\n type: types.TRACTOR_DETAIL_RESET,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n tractorDetailFailure,\n tractorDetailSuccess,\n} from '../actions/tractorDetailAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncTractorDetailUpdateSaga(action) {\n try {\n yield put(clearErrors())\n let tractorDataUpdated = yield call(_api.updateTractorData, {\n requestTractorDetail: action.payload.requestTractorDetail,\n })\n yield put(tractorDetailSuccess({ tractorDataUpdated }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(tractorDetailFailure({ error: e }))\n }\n}\nexport default function* tractorDetailUpdateSaga() {\n yield takeLatest(types.TRACTOR_DETAIL_REQUEST, asyncTractorDetailUpdateSaga)\n}\n","import * as types from '../types'\n\nexport const tractorCompanyRequest = ({ requestMakeId }) => {\n return {\n type: types.TRACTOR_COMPANY_REQUEST,\n payload: { requestMakeId },\n }\n}\n\nexport const tractorCompanySuccess = ({ resTractorCompany }) => {\n return {\n type: types.TRACTOR_COMPANY_SUCCESS,\n payload: {\n resTractorCompany,\n },\n }\n}\n\nexport const tractorCompanyFailure = (error) => {\n return {\n type: types.TRACTOR_COMPANY_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n tractorCompanySuccess,\n tractorCompanyFailure,\n} from '../actions/tractorCompanyAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncTractorCompanySaga(action) {\n try {\n yield put(clearErrors())\n let resTractorCompany = yield call(_api.tractorCompanyAPI, {\n requestMakeId: action.payload.requestMakeId,\n })\n yield put(tractorCompanySuccess({ resTractorCompany }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(tractorCompanyFailure({ error: e }))\n }\n}\nexport default function* tractorCompanySaga() {\n yield takeLatest(types.TRACTOR_COMPANY_REQUEST, asyncTractorCompanySaga)\n}\n","import * as types from '../types'\n\nexport const tractorModelRequest = ({ requestTractorModelId }) => {\n return {\n type: types.TRACTOR_MODEL_REQUEST,\n payload: { requestTractorModelId },\n }\n}\n\nexport const tractorModelSuccess = ({ resTractorModel }) => {\n return {\n type: types.TRACTOR_MODEL_SUCCESS,\n payload: {\n resTractorModel,\n },\n }\n}\n\nexport const tractorModelFailure = (error) => {\n return {\n type: types.TRACTOR_MODEL_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n tractorModelSuccess,\n tractorModelFailure,\n} from '../actions/tractorModelAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncTractorModelSaga(action) {\n try {\n yield put(clearErrors())\n let resTractorModel = yield call(_api.tractorModelAPI, {\n requestTractorModelId: action.payload.requestTractorModelId,\n })\n yield put(tractorModelSuccess({ resTractorModel }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(tractorModelFailure({ error: e }))\n }\n}\nexport default function* tractorModelSaga() {\n yield takeLatest(types.TRACTOR_MODEL_REQUEST, asyncTractorModelSaga)\n}\n","import * as types from '../types'\n\nexport const getAllGeofenceRequest = ({ requestTractorId }) => {\n return {\n type: types.GET_ALL_GEOFENCE_REQUEST,\n payload: { requestTractorId },\n }\n}\n\nexport const getAllGeofenceSuccess = ({ resAllGeofence }) => {\n return {\n type: types.GET_ALL_GEOFENCE_SUCCESS,\n payload: {\n resAllGeofence,\n },\n }\n}\n\nexport const getAllGeofenceFailure = (error) => {\n return {\n type: types.GET_ALL_GEOFENCE_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n getAllGeofenceSuccess,\n getAllGeofenceFailure,\n} from '../actions/getAllGeofenceAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncGetAllGeofenceSaga(action) {\n try {\n yield put(clearErrors())\n let resAllGeofence = yield call(_api.getAllGeofence, {\n requestTractorId: action.payload.requestTractorId,\n })\n yield put(getAllGeofenceSuccess({ resAllGeofence }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(getAllGeofenceFailure({ error: e }))\n }\n}\nexport default function* getAllGeofenceSaga() {\n yield takeLatest(types.GET_ALL_GEOFENCE_REQUEST, asyncGetAllGeofenceSaga)\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n editGeofenceFailure,\n editGeofenceSuccess,\n} from '../actions/editGeofenceAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncEditGeofenceSaga(action) {\n try {\n yield put(clearErrors())\n let resEditGeofence = yield call(_api.editGeofenceAPI, {\n requestEditGeofence: action.payload.requestEditGeofence,\n })\n yield put(editGeofenceSuccess({ resEditGeofence }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(editGeofenceFailure({ error: e }))\n }\n}\nexport default function* editGeofenceSaga() {\n yield takeLatest(types.EDIT_GEOFENCE_REQUEST, asyncEditGeofenceSaga)\n}\n","import * as types from '../types'\n\nexport const getTodayStatusRequest = ({ requestUserID }) => {\n return {\n type: types.GET_TODAY_STATUS_REQUEST,\n payload: { requestUserID },\n }\n}\n\nexport const getTodayStatusSuccess = ({ resTodayStatus }) => {\n return {\n type: types.GET_TODAY_STATUS_SUCCESS,\n payload: {\n resTodayStatus,\n },\n }\n}\n\nexport const getTodayStatusFailure = (error) => {\n return {\n type: types.GET_TODAY_STATUS_FAILURE,\n payload: {},\n error: error,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n getTodayStatusFailure,\n getTodayStatusSuccess,\n} from '../actions/getTodayStatusAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncGetTodayStatusSaga(action) {\n try {\n yield put(clearErrors())\n let resTodayStatus = yield call(_api.getTodayStatusAPI, {\n requestUserID: action.payload.requestUserID,\n })\n yield put(getTodayStatusSuccess({ resTodayStatus }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(getTodayStatusFailure({ error: e }))\n }\n}\nexport default function* getTodayStatusSaga() {\n yield takeLatest(types.GET_TODAY_STATUS_REQUEST, asyncGetTodayStatusSaga)\n}\n","import * as types from '../types'\n\nexport const getDayEventsRequest = ({ requestDeviceID }) => {\n return {\n type: types.GET_DAY_EVENTS_REQUEST,\n payload: { requestDeviceID },\n }\n}\n\nexport const getDayEventsSuccess = ({ resAllEvents }) => {\n return {\n type: types.GET_DAY_EVENTS_SUCCESS,\n payload: {\n resAllEvents,\n },\n }\n}\n\nexport const getDayEventsFailure = (error) => {\n return {\n type: types.GET_DAY_EVENTS_FAILURE,\n payload: {},\n error: error,\n }\n}\n\nexport const getDayEventsReset = () => {\n return {\n type: types.GET_DAY_EVENTS_RESET,\n }\n}\n","import { takeLatest, call, put } from 'redux-saga/effects'\nimport {\n getDayEventsSuccess,\n getDayEventsFailure,\n} from '../actions/getDayEventsAction'\nimport { returnErrors, clearErrors } from '../actions/errorAction'\nimport * as _api from '../../api'\nimport * as types from '../types'\n\nfunction* asyncGetDayEventsSaga(action) {\n try {\n yield put(clearErrors())\n let resAllEvents = yield call(_api.getDayEventsAPI, {\n requestDeviceID: action.payload.requestDeviceID,\n })\n yield put(getDayEventsSuccess({ resAllEvents }))\n } catch (e) {\n yield put(returnErrors({ msg: e.message, status: true }))\n yield put(getDayEventsFailure({ error: e }))\n }\n}\nexport default function* getDayEventsSaga() {\n yield takeLatest(types.GET_DAY_EVENTS_REQUEST, asyncGetDayEventsSaga)\n}\n","import { all } from 'redux-saga/effects'\nimport otpRequestSaga from './otpRequestSaga'\nimport loginRequestSaga, {\n logoutRequestSaga,\n loginUpdateSaga,\n} from './loginSaga'\nimport daySummaryRequestSaga from './daySummarySaga'\nimport tractorRequestSaga from './tractorSaga'\nimport filterTractorSaga from './filterTractorSaga'\nimport fetchNotificationSaga from './fetchNotificationSaga'\nimport getGromaxRequestSaga from './getGromaxSaga'\nimport updateSaga from './updateSaga'\nimport realtimeSaga from './realtimeSaga'\nimport tractorDetailUpdateSaga from './tractorDetailSaga'\nimport tractorCompanySaga from './tractorCompanySaga'\nimport tractorModelSaga from './tractorModelSaga'\nimport getAllGeofenceSaga from './getAllGeofenceSaga'\nimport editGeofenceSaga from './editGeofenceSaga'\nimport getTodayStatusSaga from './getTodayStatusSaga'\nimport getDayEventsSaga from './getDayEventsSaga'\n\nexport default function* rootSaga() {\n yield all([\n loginRequestSaga(),\n logoutRequestSaga(),\n loginUpdateSaga(),\n otpRequestSaga(),\n filterTractorSaga(),\n daySummaryRequestSaga(),\n tractorRequestSaga(),\n fetchNotificationSaga(),\n getGromaxRequestSaga(),\n updateSaga(),\n realtimeSaga(),\n tractorDetailUpdateSaga(),\n tractorCompanySaga(),\n tractorModelSaga(),\n getAllGeofenceSaga(),\n editGeofenceSaga(),\n getTodayStatusSaga(),\n getDayEventsSaga(),\n ])\n}\n","import { createStore, applyMiddleware } from 'redux'\nimport { composeWithDevTools } from 'redux-devtools-extension'\nimport createSagaMiddleware from 'redux-saga'\nimport rootReducer from './reducers'\nimport rootSaga from './sagas'\n\nconst sagaMiddleware = createSagaMiddleware()\n\nconst store = createStore(\n rootReducer,\n composeWithDevTools(applyMiddleware(sagaMiddleware))\n)\nsagaMiddleware.run(rootSaga)\n\nexport default store\n","import axios from 'axios'\nimport { parseDayDetails } from '../utils/MapUtils'\nimport { API_BASE_URL, API_ROUTES } from '../apiConfig'\nimport store from '../store'\nimport { realtimeRequest } from '../store/actions/realtimeRequestAction'\nimport { getTodayStatusRequest } from '../store/actions/getTodayStatusAction'\nimport { getDayEventsRequest } from '../store/actions/getDayEventsAction'\nimport { getAllGeofenceRequest } from '../store/actions/getAllGeofenceAction'\nimport { editGeofenceRequest } from '../store/actions/editGeofenceAction'\nimport { fetchNotificationRequest } from '../store/actions/fetchNotificationAction'\nimport { tractorCompanyRequest } from '../store/actions/tractorCompanyAction'\nimport { tractorModelRequest } from '../store/actions/tractorModelAction'\nimport { tractorRequest } from '../store/actions/tractorAction'\nimport { daySummaryRequest } from '../store/actions/daySummaryAction'\n\nconst headerParams = {\n 'app-build': 'fleet',\n 'app-version': '24.5',\n platform: 'web',\n}\naxios.defaults.baseURL = 'https://production.carnot-traclytics.com'\n\nexport const fetchTractorListData = async ({ phoneNumber, otp }) => {\n const demoNumbers = ['9423049272', '9634200177', '9627823355', '9628404040']\n\n if (demoNumbers.includes(phoneNumber) && otp === 1059) {\n otp = '6145'\n }\n try {\n if (localStorage.getItem('user_type') === 'dealer') {\n const { data } = await axios.post(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.DEALER_LOGIN}`,\n {\n phone: phoneNumber,\n otp: otp,\n }\n )\n\n return data\n } else {\n const { data } = await axios.post(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.LOGIN}`,\n {\n phone: phoneNumber,\n otp: otp,\n }\n )\n return data\n }\n } catch (error) {\n throw error\n }\n}\n\nexport const fetchRealtimeTractorData = async ({ phone }) => {\n try {\n if (localStorage.getItem('user_type') === 'dealer') {\n const { data } = await axios.post(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.DEALER_REALTIME_TRACTOR_DATA}`,\n {\n phone: phone,\n },\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n return data\n } else {\n const { data } = await axios.post(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.REALTIME_TRACTOR_DATA}`,\n {\n phone: phone,\n },\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n return data\n }\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(realtimeRequest, { phone })\n }\n throw error\n }\n}\n\nexport const makeOTPRequestCall = async (phoneNumber) => {\n try {\n let debugMode = false\n if (\n process.env.REACT_APP_DEBUG_MODE &&\n process.env.REACT_APP_DEBUG_MODE === 'true'\n ) {\n debugMode = true\n }\n const { data } = await axios.post(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.OTP_REQUEST}`,\n {\n phone: phoneNumber,\n debug: debugMode,\n }\n )\n return data\n } catch (error) {\n throw error\n }\n}\n\nexport const fetchDaySummary = async ({\n deviceId,\n date,\n tractor,\n realTime,\n}) => {\n try {\n let dateValue = date.split('-')\n\n const { data } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.DAY_SUMMARY_DATA}${deviceId}/${dateValue[0]}/${dateValue[1]}/${dateValue[2]}/0/`,\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(daySummaryRequest, {\n tractor,\n realTime,\n date,\n })\n }\n throw error\n }\n}\n\nexport const fetchDayDetail = async ({ deviceId, date, tractor, realTime }) => {\n try {\n let dateValue = date.split('-')\n const {\n data: { data },\n } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.DAY_DETAIL_DATA}${deviceId}/${dateValue[0]}/${dateValue[1]}/${dateValue[2]}/0/`,\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n return parseDayDetails(data)\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(daySummaryRequest, {\n tractor,\n realTime,\n date,\n })\n }\n throw error\n }\n}\n\nexport const fetchTripsDates = async ({ deviceId, tractor, realTime }) => {\n try {\n let date = new Date()\n let month = date.getMonth() + 1\n let year = date.getFullYear()\n let today = date.getDate()\n\n if (month < 10) {\n month = '0' + month\n }\n\n if (today < 10) {\n today = '0' + today\n }\n\n const {\n data: { data },\n } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.TRIP_DATES}${deviceId}/${year}/${month}/${today}/180/`,\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(tractorRequest, {\n tractor,\n realTime,\n })\n }\n throw error\n }\n}\n\nexport const fetchAddressFromPoints = async (points) => {\n const names = []\n for (let point of points) {\n const {\n data: { display_name },\n } = await axios.get(\n `https://nominatim.openstreetmap.org/reverse?format=json&lat=${point.realtime.latitude}&lon=${point.realtime.longitude}`\n )\n names.push(display_name)\n }\n\n return names\n}\n\nexport const fetchNotification = async ({ id }) => {\n // const notify;\n try {\n const { data } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.NOTIFICATIONS}${id}/`,\n {\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n }\n )\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(fetchNotificationRequest, {\n id,\n })\n }\n throw error\n }\n}\n\nexport const checkPasswordForImmobilize = ({ password }) => {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n if (password.toString() === '12345678') {\n resolve({ status: true, msg: 'Password Matched!!' })\n } else {\n reject({ status: false, msg: 'Incorrect Password!!' })\n }\n }, 1500)\n })\n}\n\nexport const getGromaxDevices = async () => {\n try {\n const { data } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.GROMAX_DEVICES}`\n )\n return data\n } catch (e) {\n throw e\n }\n}\n\nexport const immobalizeDevice = async ({ id }) => {\n try {\n const { data } = await axios.get(\n `${API_BASE_URL.PARENT_URL}${API_ROUTES.IMMOBILIZE_DEVICE}${id}/`\n )\n return data\n } catch (e) {\n throw e\n }\n}\n\n//Update Tractor Name\nexport const updateTractorData = async ({ requestTractorDetail }) => {\n try {\n const { data } = await axios.post(\n `/tractor/${requestTractorDetail.id}/details/`,\n requestTractorDetail\n )\n return data\n } catch (error) {\n throw error\n }\n}\n\nexport const satellitePatchData = async ({ requestPatch }) => {\n try {\n const { data } = await axios({\n method: 'post',\n url: `https://4gv48ymxwc.execute-api.us-east-2.amazonaws.com/dev/satellite/{patch_area}/{boundary_points}`,\n data: requestPatch,\n })\n return data\n } catch (error) {\n throw error\n }\n}\n\nexport const tractorCompanyAPI = async ({ requestMakeId }) => {\n try {\n const { data } = await axios({\n method: 'get',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.TRACTOR_COMPANY}${requestMakeId.deviceId}/`,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem('access_token')}`,\n },\n })\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(tractorCompanyRequest, {\n requestMakeId,\n })\n }\n throw error\n }\n}\n\nexport const tractorModelAPI = async ({ requestTractorModelId }) => {\n try {\n const { data } = await axios({\n method: 'get',\n url: `${API_BASE_URL.PARENT_URL}/tractor/${requestTractorModelId.company}/models/${requestTractorModelId.deviceId}/`,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem('access_token')}`,\n },\n })\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(tractorModelRequest, {\n requestTractorModelId,\n })\n }\n throw error\n }\n}\n\nexport const getAllGeofence = async ({ requestTractorId }) => {\n try {\n const { data } = await axios({\n method: 'get',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.GET_ALL_GEOFENCE}${requestTractorId.id}/`,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem('access_token')}`,\n },\n })\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(getAllGeofenceRequest, {\n requestTractorId,\n })\n }\n throw error\n }\n}\n\nexport const editGeofenceAPI = async ({ requestEditGeofence }) => {\n try {\n let id = requestEditGeofence.id\n delete requestEditGeofence['id']\n const { data } = await axios({\n method: 'post',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.EDIT_GEOFENCE}${id}/`,\n data: requestEditGeofence,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem('access_token')}`,\n },\n })\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(editGeofenceRequest, {\n requestEditGeofence,\n })\n }\n throw error\n }\n}\n\nexport const getTodayStatusAPI = async ({ requestUserID }) => {\n try {\n if (localStorage.getItem('user_type') === 'dealer') {\n const { data } = await axios({\n method: 'post',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.TODAY_DEALER_STATS}`,\n data: requestUserID,\n headers: {\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n })\n return data\n } else {\n const { data } = await axios({\n method: 'post',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.TODAY_STATS}`,\n data: requestUserID,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'access_token'\n )}`,\n },\n })\n return data\n }\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(getTodayStatusRequest, {\n requestUserID,\n })\n }\n throw error\n }\n}\n\nexport const getDayEventsAPI = async ({ requestDeviceID }) => {\n try {\n const { data } = await axios({\n method: 'post',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.DAY_EVENTS}`,\n // url: `https://traclytics-staging.herokuapp.com${API_ROUTES.DAY_EVENTS}`,\n data: requestDeviceID,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem('access_token')}`,\n },\n })\n return data\n } catch (error) {\n if (error?.response.status === 401) {\n await getRefreshAccessToken(getDayEventsRequest, {\n requestDeviceID,\n })\n }\n throw error\n }\n}\n\nexport const getRefreshAccessToken = async (callback, params) => {\n try {\n const { data } = await axios({\n method: 'post',\n url: `${API_BASE_URL.PARENT_URL}${API_ROUTES.REFRESH_ACCESS_TOKEN}`,\n headers: {\n ...headerParams,\n 'User-Auth': `Bearer ${sessionStorage.getItem(\n 'refresh_token'\n )}`,\n },\n })\n sessionStorage.setItem('access_token', data.access_token)\n store.dispatch(callback(params))\n } catch (error) {\n localStorage.removeItem('loggedIn')\n localStorage.removeItem('phoneNumber')\n localStorage.removeItem('user_type')\n sessionStorage.removeItem('access_token')\n sessionStorage.removeItem('refresh_token')\n window.location.reload()\n throw error\n }\n}\n","import React, { useState, useEffect, useRef } from 'react'\nimport { motion } from 'framer-motion'\nimport { connect } from 'react-redux'\nimport { daySummaryRequest } from '../../store/actions/daySummaryAction'\nimport AreaIcon from '../../assets/area_icon.svg'\nimport HourIcon from '../../assets/landing_time.svg'\nimport Distance from '../../assets/distance.svg'\nimport Speed from '../../assets/speedometer.svg'\nimport LastActive from '../../assets/lastActive.svg'\nimport Calendar from '../../assets/calendar.svg'\nimport Replay from '../../assets/Replay.svg'\nimport Skeleton from '@material-ui/lab/Skeleton'\nimport { Button } from '../../elements'\nimport { OutlinedButton } from '../../elements/button'\nimport Arrow from '../../assets/login/Long-arrow.svg'\nimport Pencil from '../../assets/orange_pen.svg'\nimport NoNetwork from '../../assets/no_network.svg'\nimport Vector from '../../assets/Vector.svg'\nimport AddGeofenceIcon from '../../assets/add_geofence.png'\nimport ListItem from '../ListTimeline'\n\nimport Swal from 'sweetalert2'\nimport {\n getTimeStatusDiff,\n getTimeDiff,\n formattedSlashDate,\n getTime,\n} from '../../utils/TimeUtils'\nimport {\n getFuelMeterTank,\n getFuelMeterText,\n} from '../../utils/getFuelMeterTank'\nimport tractorDescStyles from './tractordesc.styles'\nimport { checkPasswordForImmobilize, immobalizeDevice } from '../../api'\nimport { updateRequest } from '../../store/actions/updateTractorDataAction'\nimport { tractorDetailRequest } from '../../store/actions/tractorDetailAction'\nimport Noty from 'noty'\n\nimport Modal from '@material-ui/core/Modal'\nimport { localTractorNameAction } from '../../store/actions/localTractorNameAction'\nimport { Switch } from '@material-ui/core'\n\nimport {\n MuiPickersUtilsProvider,\n KeyboardDatePicker,\n} from '@material-ui/pickers'\nimport DateFnsUtils from '@date-io/date-fns'\nimport { formattedDate } from '../../utils/TimeUtils'\nimport { tractorDetailReset } from '../../store/actions/tractorDetailAction'\nimport { tractorCompanyRequest } from '../../store/actions/tractorCompanyAction'\nimport { tractorModelRequest } from '../../store/actions/tractorModelAction'\nimport getTractorImages from '../../utils/getTractorImages'\nimport {\n getDayEventsRequest,\n getDayEventsReset,\n} from '../../store/actions/getDayEventsAction'\n\nimport { getAllGeofenceRequest } from '../../store/actions/getAllGeofenceAction'\nimport {\n editGeofenceRequest,\n editGeofenceReset,\n} from '../../store/actions/editGeofenceAction'\n\nconst variants = {\n open: {\n opacity: 1,\n width: '400px',\n },\n closed: {\n opacity: 0,\n width: '0px',\n },\n}\n\nfunction Tractordesc({\n selectedTractor: tractor,\n setShow,\n selectedRealtime: realTime,\n onShowTrips,\n onPositonChange,\n tractorList,\n realTimeList,\n showTrips,\n gromaxDevices,\n time,\n trac,\n drawingTool,\n setDrawingTool,\n showAreaButton,\n setShowAreaButton,\n shapes,\n setShapes,\n addGeofence,\n setAddGeofence,\n currentGeofence,\n setCurrentGeofence,\n newGeofence,\n setNewGeofence,\n showTracking,\n setShowTracking,\n ...props\n}) {\n const classes = tractorDescStyles()\n let updateTractorRef = useRef(null)\n const tractorImage = getTractorImages(tractor.model, tractor.make)\n\n const [selectedDate, setSelectedDate] = useState(new Date())\n const [isGroMax, setIsGroMax] = useState(false)\n\n const [openTractorNameModal, setOpenTractorNameModal] = useState(false)\n const [showCalendar, setShowCalendar] = useState(false)\n const [timelineArray, setTimelineArray] = useState()\n\n const [geofenceFirst, setGeofenceFirst] = useState(false)\n const [geofenceSecond, setGeofenceSecond] = useState(false)\n const [geofenceToggleIndex, setGeofenceToggleIndex] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n\n const getName = () => {\n if (props.localTracName) {\n for (let i = 0; i < props.localTracName.length; i++) {\n if (props.localTracName[i].id === tractor.id) {\n return props.localTracName[i].name.toLowerCase()\n }\n }\n }\n return tractor.name.toLowerCase()\n }\n\n const getCompany = () => {\n if (props.localTracName) {\n for (let i = 0; i < props.localTracName.length; i++) {\n if (props.localTracName[i].id === tractor.id) {\n return props.localTracName[i].company\n }\n }\n }\n return tractor.make\n }\n\n const getModel = () => {\n if (props.localTracName) {\n for (let i = 0; i < props.localTracName.length; i++) {\n if (props.localTracName[i].id === tractor.id) {\n return props.localTracName[i].model\n }\n }\n }\n return tractor.model\n }\n\n const [updateTractorName, setUpdateTractorName] = useState(getName())\n const [tractorCompany, setTractorCompany] = useState()\n const [selectCompanyName, setSelectCompanyName] = useState(getCompany())\n const [tractorModel, setTractorModel] = useState()\n const [selectCompanyModel, setSelectCompanyModel] = useState(getModel())\n\n useEffect(() => {\n let requestTractorId = {\n id: tractor.id,\n }\n let requestMakeId = {\n deviceId: tractor.device_pk,\n }\n props.tractorCompanySubmit({ requestMakeId })\n props.getAllGeofence({ requestTractorId })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n if (props.tractorCompany) {\n props.tractorCompany.data.sort((a, b) =>\n a.value > b.value ? 1 : -1\n )\n setTractorCompany(props.tractorCompany.data)\n }\n }, [props.tractorCompany])\n\n useEffect(() => {\n if (selectCompanyName) {\n let requestTractorModelId = {\n deviceId: tractor.device_pk,\n company: selectCompanyName,\n }\n props.tractorModelSubmit({ requestTractorModelId })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectCompanyName])\n\n useEffect(() => {\n if (props.tractorModel) {\n props.tractorModel.data.sort((a, b) => (a.value > b.value ? 1 : -1))\n setTractorModel(props.tractorModel.data)\n }\n }, [props.tractorModel])\n\n useEffect(() => {\n if (tractor) {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n return () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tractor])\n\n useEffect(() => {\n if (gromaxDevices && tractor) {\n if (gromaxDevices.includes(tractor.device_pk)) {\n setIsGroMax(true)\n } else {\n setIsGroMax(false)\n }\n }\n }, [gromaxDevices, tractor])\n\n useEffect(() => {\n if (props.dayEvents) {\n let checkArray = []\n for (let i = 0; i < props.dayEvents.data.length; i++) {\n checkArray.push({\n title: props.dayEvents.data[i].event_title,\n icon: props.dayEvents.data[i].event_icon_image,\n time: getTime(props.dayEvents.data[i].time_stamp),\n })\n }\n if (checkArray && checkArray.length > 0) {\n setTimelineArray(checkArray)\n }\n }\n }, [props.dayEvents])\n\n useEffect(() => {\n if (tractor !== null) {\n let requestDeviceID = {\n device_id: tractor.device_pk,\n date: formattedDate(selectedDate),\n device_type: 'fleet',\n }\n if ((tractor.fleet_feature_enables & 1) === 1) {\n props.dayEventsSubmit({ requestDeviceID })\n }\n let timeStamp = Date.parse(selectedDate)\n if (!isNaN(timeStamp)) {\n props.daySummary({\n tractor,\n realTime,\n date: formattedDate(selectedDate),\n })\n }\n if (showTrips) {\n handleShowTrips()\n }\n }\n }, [selectedDate]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (!showTrips) {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n return () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showTrips])\n\n useEffect(() => {\n if (!addGeofence) {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n return () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addGeofence])\n\n useEffect(() => {\n if (!newGeofence) {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n return () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [newGeofence])\n\n useEffect(() => {\n if (props.allGeofenceData?.status) {\n setGeofenceFirst(props.allGeofenceData?.data?.[0]?.['isLive'])\n setGeofenceSecond(props.allGeofenceData?.data?.[1]?.['isLive'])\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.allGeofenceData])\n\n useEffect(() => {\n if (geofenceToggleIndex !== null) {\n let requestEditGeofence = {\n geo_id: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'geo_id'\n ],\n lat: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'lat'\n ],\n lng: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'lng'\n ],\n radius: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'radius'\n ], // kilometers\n status: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'status'\n ],\n isLive:\n geofenceToggleIndex === 0 ? geofenceFirst : geofenceSecond,\n name: props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'name'\n ],\n pattern:\n props.allGeofenceData?.data?.[geofenceToggleIndex]?.[\n 'pattern'\n ],\n id: tractor.id,\n }\n props.editGeofenceSubmit({ requestEditGeofence })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [geofenceToggleIndex])\n\n useEffect(() => {\n if (\n props.tractorUpdateMessage &&\n props.tractorUpdateMessage.status === true\n ) {\n new Noty({\n text: props.tractorUpdateMessage.message,\n layout: 'topRight',\n theme: 'bootstrap-v4',\n type: 'success',\n progressBar: true,\n timeout: 3000,\n }).show()\n\n setTimeout(() => {\n props.resetTractorUpdate()\n }, 3200)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.tractorUpdateMessage])\n\n useEffect(() => {\n if (props.editGeofenceData?.status === true) {\n new Noty({\n text: 'Geofence actions executed successfully.',\n layout: 'topRight',\n theme: 'bootstrap-v4',\n type: 'success',\n progressBar: true,\n timeout: 3000,\n }).show()\n\n let requestTractorId = {\n id: tractor.id,\n }\n props.getAllGeofence({ requestTractorId })\n setTimeout(() => {\n props.resetEditGeofence()\n }, 3200)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.editGeofenceData])\n\n const renderUpdatedDays = (\n date,\n selectedDate,\n dayInCurrentMonth,\n dayComponent\n ) => {\n let parsedDate = formattedDate(date)\n if (props.dates.includes(parsedDate) && dayInCurrentMonth) {\n return (\n
\n {dayComponent}\n
\n
\n )\n } else {\n return dayComponent\n }\n }\n\n const disablePastDates = () => {\n const firstDate = new Date(props.dates[0])\n\n let pastDate = new Date()\n pastDate.setDate(pastDate.getDate() - 180)\n if (firstDate < pastDate) {\n return pastDate\n } else {\n return firstDate\n }\n }\n const handleDateChange = (date) => {\n setSelectedDate(date)\n if (showTrips) {\n handleShowTrips()\n setShowAreaButton(false)\n if (shapes && shapes.length > 0) {\n for (let i = 0; i < shapes.length; i++) {\n shapes[i].overlay.setMap(null)\n }\n }\n if (drawingTool) {\n drawingTool.setMap(null)\n }\n }\n setShowCalendar(false)\n }\n\n const handleShowTrips = () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n updateTractorRef.current = null\n } else {\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n\n onShowTrips(!showTrips)\n }\n\n const lastActive = () => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n return time[i]['time_stamp']\n }\n }\n }\n\n const getFuel = () => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n return time[i]['fuel_level_dashboard']\n }\n }\n }\n\n const getSpeed = () => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n return time[i]['speed']\n }\n }\n }\n\n const handleImmobilize = () => {\n Swal.fire({\n title: 'Enter Password',\n input: 'password',\n inputPlaceholder: 'Enter your password',\n inputLabel: 'Password',\n inputAttributes: {\n autocapitalize: 'off',\n autocorrect: 'off',\n },\n showCancelButton: true,\n confirmButtonText: 'Submit',\n showLoaderOnConfirm: true,\n preConfirm: (password) => {\n return checkPasswordForImmobilize({ password: password })\n .then((res) => {\n if (!res.status) {\n throw new Error(res.msg)\n }\n return res\n })\n .catch((error) => {\n Swal.showValidationMessage(\n `Request failed: ${\n error.msg ?? JSON.stringify(error)\n }`\n )\n })\n },\n allowOutsideClick: () => !Swal.isLoading(),\n }).then((result) => {\n if (result.isConfirmed) {\n immobalizeDevice({ id: tractor.device_pk })\n .then((res) => {\n console.log(res)\n Swal.fire({\n icon: 'success',\n title: `Hurrah!`,\n text: `${res?.message}`,\n })\n })\n .catch((e) => {\n Swal.fire({\n icon: 'error',\n title: `oops!`,\n text: `${e?.msg}`,\n })\n console.log(e)\n })\n }\n })\n }\n\n const handleSubmit = () => {\n const requestTractorDetail = {\n name: updateTractorName === '' ? getName() : updateTractorName,\n manufacturer:\n selectCompanyName === '' ? getCompany() : selectCompanyName,\n model: selectCompanyModel === '' ? getModel() : selectCompanyModel,\n id: tractor.id,\n engine_hours: tractor.engine_hours,\n year: tractor.year,\n chassis: tractor.chassis,\n user_name: props.user_name,\n purchase_date: tractor.purchase_date,\n user_dob: props.user_dob,\n }\n\n const requestLocalTractorName = {\n name: updateTractorName === '' ? getName() : updateTractorName,\n company:\n selectCompanyName === '' ? getCompany() : selectCompanyName,\n model: selectCompanyModel === '' ? getModel() : selectCompanyModel,\n id: tractor.id,\n }\n\n props.updateTractorName({ requestLocalTractorName })\n props.updateTractorDetailRequest({ requestTractorDetail })\n setOpenTractorNameModal(!openTractorNameModal)\n }\n\n const checkEngineStatus = (stat) => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n let value = getTimeStatusDiff(time[i]['time_stamp'])\n if ((time[i]['status'] & 1) === 1) {\n if (value > 10) {\n return classes.engineOut\n } else {\n return classes.engineOn\n }\n } else if ((time[i]['status'] & 1) === 0) {\n if (value > 120) {\n return classes.engineOut\n } else {\n return classes.engineOff\n }\n }\n }\n }\n }\n\n const checkEngine = () => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n let value = getTimeStatusDiff(time[i]['time_stamp'])\n if ((time[i]['status'] & 1) === 1) {\n if (value > 10) {\n return classes.imgBorderOut\n } else {\n return classes.imgBorderOn\n }\n } else if ((time[i]['status'] & 1) === 0) {\n if (value > 120) {\n return classes.imgBorderOut\n } else {\n return classes.imgBorderOff\n }\n }\n }\n }\n }\n\n const checkEngineText = () => {\n for (let i = 0; i < time.length; i++) {\n if (time[i]['fb_key'] === realTime.fb_key) {\n let value = getTimeStatusDiff(time[i]['time_stamp'])\n if ((time[i]['status'] & 1) === 1) {\n if (value > 10) {\n return 'DIS'\n } else {\n return 'ON'\n }\n } else if ((time[i]['status'] & 1) === 0) {\n if (value > 120) {\n return 'DIS'\n } else {\n return 'OFF'\n }\n }\n }\n }\n }\n\n const handleNoDateClick = () => {\n setShowCalendar(true)\n }\n\n const handleGeofence = () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n updateTractorRef.current = null\n } else {\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n\n setAddGeofence(!addGeofence)\n }\n\n const handleToggleGeofence = (index) => {\n if (index === 0) {\n setGeofenceFirst(!geofenceFirst)\n setGeofenceToggleIndex(index)\n } else if (index === 1) {\n setGeofenceSecond(!geofenceSecond)\n setGeofenceToggleIndex(index)\n }\n }\n\n const handleNewGeofence = () => {\n if (updateTractorRef.current) {\n clearInterval(updateTractorRef.current)\n updateTractorRef.current = null\n } else {\n updateTractorRef.current = setInterval(() => {\n props.updateTractorRequest({ fb_key: tractor.fb_key })\n }, 2000)\n }\n\n setNewGeofence(!newGeofence)\n }\n\n const handleMouseOver = () => {\n setIsHovering(true)\n }\n\n const handleMouseOut = () => {\n setIsHovering(false)\n }\n\n return (\n \n
\n

\n {getCompany()} {getModel()}\n

\n {!showTracking && (\n {\n setShow(true)\n setNewGeofence(false)\n setAddGeofence(false)\n props.dayEventsReset()\n onShowTrips(false)\n }}\n >\n Close\n \n )}\n
\n
\n \n
\n
\n

\n {checkEngineText() === 'DIS' ? (\n \n ) : (\n checkEngineText()\n )}\n

\n
\n \n
\n
\n \n
{getName()}
\n {localStorage.getItem('user_type') !== 'dealer' &&\n !showTracking && (\n \n setOpenTractorNameModal(\n !openTractorNameModal\n )\n }\n >\n \"pencil-icon\"\n Edit\n
\n )}\n
\n Device ID: {tractor.device_pk}\n \n Subscription Due Date:{' '}\n {tractor.subscription_due_date}\n \n
\n \n
\n
\n
\n
\n \n
\n
\n {props.summaryLoading ? (\n \n ) : (\n \n {getFuelMeterText(\n tractor.fuel_range_params.end_fuel,\n getFuel()\n )}\n \n )}\n

Fuel Level

\n
\n
\n
\n
\n \"Speed\"\n
\n
\n {getSpeed()} km/h\n

Speed

\n
\n
\n
\n
\n \"last-active\"\n
\n
\n {getTimeDiff(lastActive())}\n

Last Active

\n
\n
\n
\n
\n \n \n Tractor Work\n \n {!showTracking && (\n \n \"calendar\"\n \n {formattedSlashDate(selectedDate) ===\n formattedSlashDate(new Date())\n ? 'TODAY'\n : formattedSlashDate(selectedDate)}\n \n \n )}\n \n
\n
\n
\n
\n \"hours\"\n
\n
\n {props.summaryLoading ? (\n \n ) : (\n {props.totalTime}\n )}\n

Worked

\n
\n
\n
\n
\n \"area\"\n
\n
\n {props.summaryLoading ? (\n \n ) : (\n \n {props?.areaUnit?.unit === 'Acres'\n ? props.area\n : (props.area * 0.404686).toFixed(\n 2\n )}\n \n )}\n

{props?.areaUnit?.unit}

\n
\n
\n
\n
\n \"distance\"\n
\n
\n {props.summaryLoading ? (\n \n ) : (\n {props.kms} KM\n )}\n

Distance

\n
\n
\n
\n
\n {showCalendar && (\n
\n {props.datesLoading ? (\n \n \n
\n ) : (\n <>\n \n setShowCalendar(false)}\n minDate={disablePastDates()}\n open={showCalendar}\n size=\"small\"\n autoOk\n disableFuture\n KeyboardButtonProps={{\n 'aria-label': 'change date',\n }}\n renderDay={renderUpdatedDays}\n disabled={\n !props.dates ||\n props.dates.length === 0\n ? true\n : false\n }\n style={{\n width: '10px',\n height: '10px',\n }}\n />\n \n \n )}\n \n )}\n {!showTracking && (\n \n \n {(tractor.fleet_feature_enables & 1) === 1\n ? 'Timeline'\n : ''}\n \n {} : handleShowTrips\n }\n >\n \"replay\" Trips Replay\n \n \n )}\n {(tractor.fleet_feature_enables & 1) === 1 && (\n 0\n ? 'Timeline'\n : 'Timeline - No Trips'\n }\n content={timelineArray}\n />\n )}\n {localStorage.getItem('user_type') !== 'dealer' &&\n props.allGeofenceData?.status &&\n !showTracking && (\n Geofence\n )}\n {localStorage.getItem('user_type') !== 'dealer' &&\n !showTracking &&\n props.allGeofenceData?.status && (\n
\n {props.allGeofenceData?.data[0][\n 'is_default_geofence'\n ] ? (\n {\n setCurrentGeofence(0)\n handleNewGeofence()\n }}\n >\n \"\"\n ADD GEOFENCE\n
\n ) : (\n
\n
\n \n \n \n \n \n \n {\n props.allGeofenceData\n ?.data?.[0]?.[\n 'name'\n ]\n }\n \n \n
\n \n handleToggleGeofence(0)\n }\n color=\"primary\"\n inputProps={{\n 'aria-label': 'controlled',\n }}\n />\n
\n {!isHovering ? (\n \n \n Radius:{' '}\n \n {props.allGeofenceData?.data?.[0]?.[\n 'radius'\n ]?.toFixed(2)}{' '}\n Km\n \n \n \n ) : (\n {\n setCurrentGeofence(0)\n handleGeofence()\n }}\n >\n \n Edit\n \n )}\n \n )}\n {!props.allGeofenceData?.data[0][\n 'is_default_geofence'\n ] && (\n <>\n {props.allGeofenceData?.data[1][\n 'is_default_geofence'\n ] ? (\n {\n setCurrentGeofence(1)\n handleNewGeofence()\n }}\n >\n \"\"\n ADD GEOFENCE\n \n ) : (\n
\n \n \n \n \n \n \n \n {\n props\n .allGeofenceData\n ?.data?.[1]?.[\n 'name'\n ]\n }\n \n \n
\n \n handleToggleGeofence(1)\n }\n color=\"primary\"\n inputProps={{\n 'aria-label':\n 'controlled',\n }}\n />\n \n {!isHovering ? (\n \n \n Radius:{' '}\n \n {props.allGeofenceData?.data?.[1]?.[\n 'radius'\n ]?.toFixed(2)}{' '}\n Km\n \n \n \n ) : (\n {\n setCurrentGeofence(1)\n handleGeofence()\n }}\n >\n \n Edit\n \n )}\n \n )}\n \n )}\n \n )}\n {openTractorNameModal && (\n \n setOpenTractorNameModal(!openTractorNameModal)\n }\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n
\n \n Update Tractor Details:\n \n {\n setSelectCompanyName(getCompany())\n setSelectCompanyModel(getModel())\n setUpdateTractorName(getName())\n setOpenTractorNameModal(\n !openTractorNameModal\n )\n }}\n >\n Close\n \n
\n \n setSelectCompanyName(e.target.value)\n }\n className={classes.inputType}\n >\n \n {tractorCompany &&\n tractorCompany.map((name, index) => (\n \n ))}\n \n \n setSelectCompanyModel(e.target.value)\n }\n className={classes.inputType}\n >\n \n {tractorModel &&\n tractorModel.map((name, index) => (\n \n ))}\n \n \n setUpdateTractorName(e.target.value)\n }\n className={classes.inputType}\n />\n
\n \n

Update

\n \n \"arrow\"\n \n \n
\n
\n \n )}\n
\n {isGroMax && (\n \n

Immobilize

\n \n )}\n
\n \n \n )\n}\n\nconst mapStateToProps = (state) => ({\n datesLoading: state.tractorReducer.loading,\n selectedTractor: state.tractorReducer.tractor,\n selectedRealtime: state.tractorReducer.realTime,\n dates: state.tractorReducer.dates,\n selectedDate: state.dateReducer.date,\n summaryLoading: state.daySummaryReducer.loading,\n dailyStatus: state.daySummaryReducer.dailyStatus,\n area: state.daySummaryReducer.area,\n totalTime: state.daySummaryReducer.totalTime,\n kms: state.daySummaryReducer.kms,\n engineStatus: state.daySummaryReducer.status,\n fuelLevel: state.daySummaryReducer.fuelLevel,\n gromaxDevices: state.gromaxReducer.data,\n commutes: state.daySummaryReducer.commutes,\n patches: state.daySummaryReducer.patches,\n time: state.loginReducer.realTimes,\n trac: state.loginReducer.tractors,\n user_name: state.loginReducer.name,\n user_dob: state.loginReducer.dob,\n tractorUpdateMessage: state.tractorUpdateReducer.tractorDataUpdated,\n localTracName: state.localTractorNameReducer.localTractorNameList,\n patchArea: state.daySummaryReducer.patchesArea,\n tractorCompany: state.tractorCompanyReducer.resTractorCompany,\n tractorModel: state.tractorModelReducer.resTractorModel,\n dayEvents: state.getDayEventsReducer.resAllEvents,\n dealerHandle: state.otpRequestReducer.otpSuccess,\n allGeofenceData: state.getAllGeofenceReducer.resAllGeofence,\n editGeofenceData: state.editGeofenceReducer.resEditGeofence,\n areaUnit: state.selectedUnitReducer.selectedUnit,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n daySummary: ({ realTime, tractor, date }) => {\n dispatch(daySummaryRequest({ realTime, tractor, date }))\n },\n updateTractorRequest: ({ fb_key }) => {\n dispatch(updateRequest({ fb_key }))\n },\n updateTractorDetailRequest: ({ requestTractorDetail }) => {\n dispatch(tractorDetailRequest({ requestTractorDetail }))\n },\n updateTractorName: ({ requestLocalTractorName }) => {\n dispatch(localTractorNameAction({ requestLocalTractorName }))\n },\n resetTractorUpdate: () => {\n dispatch(tractorDetailReset())\n },\n tractorCompanySubmit: ({ requestMakeId }) =>\n dispatch(tractorCompanyRequest({ requestMakeId })),\n tractorModelSubmit: ({ requestTractorModelId }) =>\n dispatch(tractorModelRequest({ requestTractorModelId })),\n dayEventsSubmit: ({ requestDeviceID }) =>\n dispatch(getDayEventsRequest({ requestDeviceID })),\n dayEventsReset: () => {\n dispatch(getDayEventsReset())\n },\n getAllGeofence: ({ requestTractorId }) =>\n dispatch(getAllGeofenceRequest({ requestTractorId })),\n editGeofenceSubmit: ({ requestEditGeofence }) =>\n dispatch(editGeofenceRequest({ requestEditGeofence })),\n resetEditGeofence: () => {\n dispatch(editGeofenceReset())\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Tractordesc)\n","import React, { useState, useRef } from 'react'\nimport TextField from '@material-ui/core/TextField'\nimport Autocomplete, {\n createFilterOptions,\n} from '@material-ui/lab/Autocomplete'\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'\nimport CheckBoxIcon from '@material-ui/icons/CheckBox'\nimport { Checkbox } from '@material-ui/core'\n\nconst MultiSelect = ({\n items,\n label,\n placeholder,\n selectAllLabel,\n noOptionsText,\n limitTags,\n onChange,\n}) => {\n const [selectedOptions, setSelectedOptions] = useState([])\n const filterRef = useRef(null)\n const allSelected = items.length === selectedOptions.length\n const handleToggleOption = (selectedOptions) =>\n setSelectedOptions(selectedOptions)\n const handleClearOptions = () => setSelectedOptions([])\n const getOptionLabel = (option) => `${option.label}`\n\n const handleSelectAll = (isSelected) => {\n if (isSelected) {\n setSelectedOptions(filterRef.current)\n } else {\n handleClearOptions()\n }\n }\n\n const handleToggleSelectAll = () => {\n handleSelectAll && handleSelectAll(!allSelected)\n }\n\n const handleChange = (event, selectedOptions, reason) => {\n if (reason === 'select-option' || reason === 'remove-option') {\n if (\n selectedOptions.find((option) => option.value === 'select-all')\n ) {\n handleToggleSelectAll()\n return onChange(filterRef.current)\n } else {\n handleToggleOption && handleToggleOption(selectedOptions)\n return onChange(selectedOptions)\n }\n } else if (reason === 'clear') {\n handleClearOptions && handleClearOptions()\n }\n }\n const optionRenderer = (option, { selected }) => {\n const selectAllProps =\n option.value === 'select-all' ? { checked: allSelected } : {}\n return (\n <>\n }\n checkedIcon={}\n style={{ marginRight: 8 }}\n checked={selected}\n {...selectAllProps}\n />\n {getOptionLabel(option)}\n \n )\n }\n const inputRenderer = (params) => (\n \n )\n const getOptionSelected = (option, anotherOption) =>\n option.value === anotherOption.value\n const filter = createFilterOptions()\n return (\n {\n const filtered = filter(options, params)\n filterRef.current = filtered\n return [\n { label: selectAllLabel, value: 'select-all' },\n ...filtered,\n ]\n }}\n onChange={handleChange}\n renderOption={optionRenderer}\n renderInput={inputRenderer}\n />\n )\n}\n\nMultiSelect.defaultProps = {\n limitTags: 2,\n items: [],\n selectedValues: [],\n getOptionLabel: (value) => value,\n}\n\nexport default MultiSelect\n","import React, { Suspense, useState, useEffect, useRef } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Filter from '../assets/home/Filter.svg'\nimport Arrow from '../assets/login/Long-arrow.svg'\nimport TodayTractor from '../assets/todayTractor.svg'\nimport TodayHour from '../assets/todayTime.svg'\nimport AreaIcon from '../assets/area_icon.svg'\nimport TodayDistance from '../assets/todayDistance.svg'\nimport Skeleton from '@material-ui/lab/Skeleton'\nimport Tractor from './tractor'\nimport { AnimateSharedLayout, motion } from 'framer-motion'\nimport Tractordesc from './TractorDesc'\nimport { Button, InfiniteLoader } from '../elements'\nimport { connect } from 'react-redux'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport TextField from '@material-ui/core/TextField'\nimport {\n filterTractorRequest,\n resetAllFilters,\n} from '../store/actions/filterTractorAction'\nimport Modal from '@material-ui/core/Modal'\nimport Close from '../assets/home-tractor/close.svg'\nimport Chip from '@material-ui/core/Chip'\nimport { realtimeRequest } from '../store/actions/realtimeRequestAction'\nimport { getTodayStatusRequest } from '../store/actions/getTodayStatusAction'\nimport { tripTimeFromDaySummary, getTimeStatusDiff } from '../utils/TimeUtils'\nimport MultiSelect from '../elements/multiSelect'\nimport { tractorRequest } from '../store/actions/tractorAction'\nimport { daySummaryRequest } from '../store/actions/daySummaryAction'\nimport { useLocation, useParams } from 'react-router-dom'\n\nconst GoogleMap = React.lazy(() => import('./GoogleMap/GoogleMap'))\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n },\n statusSidebar: {\n overflowY: 'scroll',\n height: '150px',\n background: theme.palette.secondary.main,\n padding: '1em',\n marginTop: '1em',\n position: 'absolute',\n right: '0',\n borderRadius: '8px 0px 0px 8px',\n },\n todayStatusHeader: {\n fontWeight: '600',\n fontSize: '16px',\n lineHeight: '22px',\n textTransform: 'capitalize',\n color: '#333333',\n paddingBottom: '10px',\n },\n todayStatusWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '9px',\n },\n todayStatusItem: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n flex: 1,\n justifyContent: 'flex-start',\n gap: '5px',\n margin: '10px 0px 0px 0px',\n },\n todayStatusItemValue: {\n fontWeight: '700',\n fontSize: '20px',\n lineHeight: '27px',\n textTransform: 'uppercase',\n color: '#000',\n },\n todayStatusItemTitle: {\n fontWeight: '400',\n fontSize: '12px',\n lineHeight: '16px',\n color: '#666',\n },\n sidebar: {\n overflowY: 'scroll',\n height: 'calc(95vh - 220px)',\n background: theme.palette.secondary.main,\n padding: '0 1em',\n //To make Zoom Visible Remove below code\n marginTop: '13.5em',\n position: 'absolute',\n right: '0',\n borderRadius: '8px 0px 0px 8px',\n },\n filterOption: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > h2': {\n fontSize: '1.2em',\n },\n padding: '1em 0',\n },\n filterBtn: {\n display: 'flex',\n alignItems: 'center',\n outline: 'none',\n background: 'none',\n padding: '0.3em 1em',\n fontSize: '12px',\n gap: '7px',\n border: 'none',\n color: '#000',\n textTransform: 'uppercase',\n cursor: 'pointer',\n },\n tractorListWrapper: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n },\n googleMap: {\n alignSelf: 'flex-start',\n height: 'calc(100vh - 60px)',\n overflowY: 'auto',\n flex: 1,\n position: 'relative',\n },\n filterOptions: {\n position: 'absolute',\n width: '800px',\n height: '650px',\n top: '5%',\n left: '50%',\n transform: 'translate(-50%,0%)',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n borderRadius: '4px',\n padding: '2em',\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'scroll',\n },\n filterAutoComplete: {\n margin: '2em 0',\n display: 'flex',\n flexDirection: 'column',\n gap: '2em',\n '& > * ': {\n flex: 1,\n },\n },\n filterOptionsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > p': {\n cursor: 'pointer',\n },\n },\n sidebarEngineOff: {\n width: '15px',\n height: '15px',\n borderRadius: '50%',\n background: '#FF0C22',\n position: 'relative',\n zIndex: 4,\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: '-4px',\n left: '-4px',\n bottom: '-4px',\n right: '-4px',\n background: '#BE1E2D',\n zIndex: 1,\n borderRadius: '50%',\n opacity: '0.3',\n },\n },\n sidebarEngineOn: {\n width: '15px',\n height: '15px',\n borderRadius: '50%',\n background: '#00c441',\n position: 'relative',\n zIndex: 4,\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: '-4px',\n left: '-4px',\n bottom: '-4px',\n right: '-4px',\n background: '#007c29',\n zIndex: 1,\n borderRadius: '50%',\n opacity: '0.3',\n },\n },\n}))\n\nconst variants = {\n open: { width: '400px' },\n closed: { width: '125px' },\n}\n\nfunction Sidebar({\n tractors,\n realtimeList,\n show,\n setShow,\n selectedTractor,\n setSelectedTractor,\n position,\n setposition,\n showTrips,\n setshowTrips,\n onSelectedTractorChanged,\n onShowTrips,\n showTracking,\n setShowTracking,\n ...props\n}) {\n const classes = useStyles()\n const [tractorModels, setTractorModels] = useState(null)\n const [tractorMakers, setTractorMakers] = useState(null)\n const [tractorName, setTractorName] = useState(null)\n const [drawingTool, setDrawingTool] = useState()\n const [showAreaButton, setShowAreaButton] = useState(false)\n const [shapes, setShapes] = useState()\n\n const [addGeofence, setAddGeofence] = useState(false)\n const [currentGeofence, setCurrentGeofence] = useState(null)\n\n const [newGeofence, setNewGeofence] = useState(false)\n const [nameValue, setNameValue] = useState([])\n const [tableData, setTableData] = useState([])\n const [sortedTractors, setSortedTractors] = useState([])\n\n const location = useLocation()\n const { id, date } = useParams()\n\n const [recentFilter, setRecentFilter] = useState([\n {\n id: '',\n maker: [],\n model: [],\n name: [],\n },\n ])\n\n let updateRealtimeTractorRef = useRef(null)\n let intervalTimeRef = useRef(0)\n let todayStatusRef = useRef(0)\n\n const getName = (tractor) => {\n const updatedName = props.localTracName?.find(\n (item) => item.id === tractor.id\n )\n if (updatedName) {\n return updatedName.name\n } else {\n return tractor.name\n }\n }\n\n useEffect(() => {\n if (location.pathname.startsWith('/tracking')) {\n setShowTracking(true)\n if (realtimeList && tractors) {\n let tractor, realTime\n tractor = tractors.find((tr) => tr.device_pk === parseInt(id))\n if (tractor) {\n realTime = realtimeList.find(\n (rt) => rt.fb_key === tractor.fb_key\n )\n }\n props.selectTractor({ tractor, realTime })\n props.daySummary({ tractor, realTime, date: date })\n setShow(false)\n onShowTrips(true)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location, realtimeList, tractors])\n\n useEffect(() => {\n setTractorModels([\n ...new Set(props.allTractors.map((tractor) => tractor.model)),\n ])\n setTractorMakers([\n ...new Set(props.allTractors.map((tractor) => tractor.make)),\n ])\n let nameData = []\n for (let i = 0; i < props.allTractors.length; i++) {\n let checkName = getName(props.allTractors[i])\n nameData.push({\n label: checkName,\n value: props.allTractors[i]['name'],\n })\n }\n setTractorName(nameData)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.allTractors])\n\n useEffect(() => {\n if (props.localTracName) {\n let nameData = []\n for (let i = 0; i < props.allTractors.length; i++) {\n let checkName = getName(props.allTractors[i])\n nameData.push({\n label: checkName,\n value: props.allTractors[i]['name'],\n })\n }\n setTractorName(nameData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.localTracName])\n\n const [filterOpen, setFilterOpen] = useState(false)\n const [filterModel, setFilterModel] = useState('')\n const [filterMake, setFilterMake] = useState('')\n\n const onFilterSubmit = () => {\n let list = recentFilter\n let nameValueData = []\n for (let i = 0; i < nameValue.length; i++) {\n nameValueData.push(nameValue[i]['value'])\n }\n const data = JSON.parse(localStorage.getItem('recentFilterData'))\n if (data) {\n list = data\n }\n list = [\n ...list,\n {\n id: props.userID,\n maker: filterMake,\n model: filterModel,\n name: nameValueData,\n },\n ]\n setRecentFilter(list)\n localStorage.setItem('recentFilterData', JSON.stringify(list))\n props.filterTractors({\n models: filterModel,\n makers: filterMake,\n names: nameValueData,\n })\n recentSearches()\n setFilterOpen(!filterOpen)\n }\n\n useEffect(() => {\n setFilterOpen(filterOpen && show)\n }, [show, filterOpen])\n\n useEffect(() => {\n if (tractors) {\n let requestUserID\n if (localStorage.getItem('user_type') === 'dealer') {\n requestUserID = {\n dealer_id: props.userID,\n }\n } else {\n requestUserID = {\n user_id: props.userID,\n }\n }\n\n props.getOverAllStats({ requestUserID })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tractors])\n\n useEffect(() => {\n if (tractors) {\n if (todayStatusRef.current) {\n clearInterval(todayStatusRef.current)\n }\n let requestUserID\n if (localStorage.getItem('user_type') === 'dealer') {\n requestUserID = {\n dealer_id: props.userID,\n }\n } else {\n requestUserID = {\n user_id: props.userID,\n }\n }\n todayStatusRef.current = setInterval(() => {\n props.getOverAllStats({ requestUserID })\n }, 30000)\n }\n return () => {\n if (todayStatusRef.current) {\n clearInterval(todayStatusRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tractors])\n\n useEffect(() => {\n if (tractors) {\n if (tractors.length > 0 && tractors.length < 30) {\n intervalTimeRef.current = 30000\n } else if (tractors.length > 30 && tractors.length < 100) {\n intervalTimeRef.current = 60000\n } else if (tractors.length > 100 && tractors.length < 500) {\n intervalTimeRef.current = 180000\n } else if (tractors.length > 500 && tractors.length < 1000) {\n intervalTimeRef.current = 300000\n } else if (tractors.length > 1000) {\n intervalTimeRef.current = 600000\n }\n props.selectRealtimeAPI({\n phone: localStorage.getItem('phoneNumber'),\n })\n if (intervalTimeRef.current > 0) {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n }\n updateRealtimeTractorRef.current = setInterval(() => {\n props.selectRealtimeAPI({\n phone: localStorage.getItem('phoneNumber'),\n })\n }, intervalTimeRef.current)\n }\n }\n return () => {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tractors])\n\n useEffect(() => {\n if (!addGeofence) {\n if (intervalTimeRef.current > 0) {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n updateRealtimeTractorRef.current = null\n }\n updateRealtimeTractorRef.current = setInterval(() => {\n props.selectRealtimeAPI({\n phone: localStorage.getItem('phoneNumber'),\n })\n }, intervalTimeRef.current)\n }\n }\n return () => {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addGeofence])\n\n useEffect(() => {\n if (!newGeofence) {\n if (intervalTimeRef.current > 0) {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n updateRealtimeTractorRef.current = null\n }\n updateRealtimeTractorRef.current = setInterval(() => {\n props.selectRealtimeAPI({\n phone: localStorage.getItem('phoneNumber'),\n })\n }, intervalTimeRef.current)\n }\n }\n return () => {\n if (updateRealtimeTractorRef.current) {\n clearInterval(updateRealtimeTractorRef.current)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [newGeofence])\n\n const checkEngineText = (item) => {\n let value = getTimeStatusDiff(\n props.checkRealtime.data[`${item.device_pk}`]['time_stamp']\n )\n if (\n (props.checkRealtime.data[`${item.device_pk}`]['status'] && 1) === 1\n ) {\n if (value > 10) {\n //DIS\n return 3\n } else {\n // ON\n return 1\n }\n } else if (\n (props.checkRealtime.data[`${item.device_pk}`]['status'] && 1) === 0\n ) {\n if (value > 120) {\n // DIS\n return 3\n } else {\n // OFF\n return 2\n }\n }\n }\n\n useEffect(() => {\n if (props.checkRealtime?.data) {\n let tractorsEngineStatus = tractors.map((obj) => ({\n ...obj,\n engineStatus: checkEngineText(obj),\n }))\n tractorsEngineStatus.sort((a, b) => a.engineStatus - b.engineStatus)\n setSortedTractors(tractorsEngineStatus)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.checkRealtime])\n\n const getActiveTractors = () => {\n let activeTractorsCount = 0\n for (let i = 0; i < tractors.length; i++) {\n if (\n tripTimeFromDaySummary(\n props.checkRealtime.data?.[`${tractors[i].device_pk}`][\n 'time'\n ]\n ) !== '00:00'\n ) {\n activeTractorsCount++\n }\n }\n return activeTractorsCount\n }\n\n const getActiveHours = () => {\n let activeHoursCount = 0\n for (let i = 0; i < tractors.length; i++) {\n activeHoursCount +=\n props.checkRealtime.data[`${tractors[i].device_pk}`]['time']\n }\n return tripTimeFromDaySummary(activeHoursCount)\n }\n\n const getActiveDistance = () => {\n let activeDistance = 0\n for (let i = 0; i < tractors.length; i++) {\n activeDistance +=\n props.checkRealtime.data[`${tractors[i].device_pk}`]['kms']\n }\n return activeDistance.toFixed(2)\n }\n\n const getActiveAcres = () => {\n let activeAcres = 0\n for (let i = 0; i < tractors.length; i++) {\n activeAcres +=\n props.checkRealtime.data[`${tractors[i].device_pk}`]['acres']\n }\n return props?.areaUnit?.unit === 'Acres'\n ? activeAcres.toFixed(2)\n : (activeAcres * 0.404686).toFixed(2)\n }\n\n const filterRowValue = (search) => {\n if (search === '' || !search.length) {\n return '-'\n } else {\n return search.join(', ')\n }\n }\n\n const recentSearches = () => {\n const data = JSON.parse(localStorage.getItem('recentFilterData'))\n let recentFilterTableData = []\n let filteredData\n if (data?.length > 1) {\n filteredData = data.filter((item) => item.id === props.userID)\n for (let i = 0; i < filteredData.length; i++) {\n recentFilterTableData.push({\n id: filteredData[i]['id'],\n maker: filterRowValue(filteredData[i]['maker']),\n model: filterRowValue(filteredData[i]['model']),\n name: filterRowValue(filteredData[i]['name']),\n })\n }\n }\n setTableData(recentFilterTableData)\n }\n\n const labelName = (data) => {\n let makeString = data.maker === '-' ? '' : data.maker\n let modelString = data.model === '-' ? '' : data.model\n let nameString = data.name === '-' ? '' : data.name\n\n let label = `${makeString} ${modelString} ${nameString}`\n\n let chipLabel = label\n .replace(/\\bundefined\\b/g, '')\n .replace(/\\s+/g, ' ')\n .trim()\n\n if (chipLabel.length < 25) {\n return chipLabel\n } else {\n return `${chipLabel.slice(0, 25)}...`\n }\n }\n\n return (\n
\n
\n }>\n \n \n
\n {show && !showTracking && (\n \n \n Today's Status\n \n
\n
\n \"today-stats-tractor\"\n {props.todayStatsLoading &&\n props.todayStats === null ? (\n \n ) : (\n \n {props.filterNames?.length > 0 ||\n props.filterMakes?.length > 0 ||\n props.filterModels?.length > 0\n ? getActiveTractors()\n : props.todayStats &&\n props.todayStats.data.active_tractors}\n \n )}\n \n Active Today\n \n
\n
\n \"today-stats-time\"\n {props.todayStatsLoading &&\n props.todayStats === null ? (\n \n ) : (\n \n {props.filterNames?.length > 0 ||\n props.filterMakes?.length > 0 ||\n props.filterModels?.length > 0\n ? getActiveHours()\n : props.todayStats &&\n tripTimeFromDaySummary(\n props.todayStats.data\n .total_job_time_seconds\n )}\n \n )}\n \n Hrs:MM\n \n
\n
\n \n {props.todayStatsLoading &&\n props.todayStats === null ? (\n \n ) : (\n \n {props.filterNames?.length > 0 ||\n props.filterMakes?.length > 0 ||\n props.filterModels?.length > 0\n ? getActiveDistance()\n : (\n props.todayStats &&\n props.todayStats.data\n .total_commute_distance_km\n )?.toFixed(2)}\n \n )}\n \n Kms commute\n \n
\n
\n \n {props.todayStatsLoading &&\n props.todayStats === null ? (\n \n ) : (\n \n {props.filterNames?.length > 0 ||\n props.filterMakes?.length > 0 ||\n props.filterModels?.length > 0\n ? getActiveAcres()\n : props?.areaUnit?.unit === 'Acres'\n ? (\n props.todayStats &&\n props.todayStats.data.total_acres\n )?.toFixed(2)\n : (\n props.todayStats &&\n props.todayStats.data\n .total_acres * 0.404686\n )?.toFixed(2)}\n \n )}\n \n Total {props?.areaUnit?.unit}\n \n
\n
\n \n )}\n {show && !showTracking && (\n \n \n \n All Tractors - {tractors.length ?? 0}\n \n {\n setFilterOpen(!filterOpen)\n recentSearches()\n }}\n >\n \"filter\"\n Filter by\n \n \n {props.filtered && (\n {\n setFilterMake('')\n setFilterModel('')\n setNameValue([])\n props.resetFilter()\n }}\n variant=\"outlined\"\n />\n )}\n {filterOpen && (\n setFilterOpen(!filterOpen)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n
\n

Filter By:

\n \n setFilterOpen(!filterOpen)\n }\n >\n \"close\" close\n

\n
\n
\n option}\n onChange={(event, value) =>\n setFilterMake(value)\n }\n renderInput={(params) => (\n \n )}\n />\n option}\n onChange={(event, value) =>\n setFilterModel(value)\n }\n renderInput={(params) => (\n \n )}\n />\n \n
\n \n Recent Searches\n \n \n {tableData?.map((data, index) => (\n {\n props.filterTractors({\n models:\n data['model'] === '-'\n ? ''\n : data['model']\n ?.split(',')\n .map((item) =>\n item.trim()\n ),\n makers:\n data['maker'] === '-'\n ? ''\n : data['maker']\n ?.split(',')\n .map((item) =>\n item.trim()\n ),\n names:\n data['name'] === '-'\n ? ''\n : data['name']\n ?.split(',')\n .map((item) =>\n item.trim()\n ),\n })\n recentSearches()\n setFilterOpen(!filterOpen)\n }}\n onDelete={undefined}\n variant=\"outlined\"\n />\n ))}\n
\n
\n \n

Filter

\n \n \"arrow\"\n \n \n
\n
\n \n )}\n
\n \n {tractors?.map((tractor, index) => (\n \n rt.fb_key === tractors.fb_key\n ) ?? realtimeList[index]\n }\n tractor={tractor}\n show={show}\n setShow={setShow}\n onShowTrips={onShowTrips}\n setSelectedTractor={setSelectedTractor}\n onPositionChange={onSelectedTractorChanged}\n setShowAreaButton={setShowAreaButton}\n drawingTool={drawingTool}\n setDrawingTool={setDrawingTool}\n shapes={shapes}\n setShapes={setShapes}\n addGeofence={addGeofence}\n setAddGeofence={setAddGeofence}\n />\n ))}\n \n
\n {tractors.length === 0 && (\n
\n \n \n

No Tractors Found

\n
\n \n \n )}\n \n )}\n {(!show || showTracking) && (\n \n )}\n \n )\n}\n\nconst mapStateToProps = (state) => ({\n filterModels: state.loginReducer.filterModels,\n filterMakers: state.loginReducer.filterMakers,\n filterNames: state.loginReducer.filterNames,\n allTractors: state.loginReducer.allTractors,\n userID: state.loginReducer.id,\n filtered: state.loginReducer.filtered,\n checkRealtime: state.realtimeReducer.realtimeData,\n todayStatsLoading: state.getTodayStatusReducer.loading,\n todayStats: state.getTodayStatusReducer.resTodayStatus,\n dealerHandle: state.otpRequestReducer.otpSuccess,\n localTracName: state.localTractorNameReducer.localTractorNameList,\n areaUnit: state.selectedUnitReducer.selectedUnit,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n filterTractors: ({ models, makers, names }) => {\n dispatch(filterTractorRequest({ models, makers, names }))\n },\n resetFilter: () => {\n dispatch(resetAllFilters())\n },\n selectRealtimeAPI: ({ phone }) => {\n dispatch(realtimeRequest({ phone }))\n },\n getOverAllStats: ({ requestUserID }) => {\n dispatch(getTodayStatusRequest({ requestUserID }))\n },\n selectTractor: ({ tractor, realTime }) => {\n dispatch(tractorRequest({ tractor, realTime }))\n },\n daySummary: ({ realTime, tractor, date }) => {\n dispatch(daySummaryRequest({ realTime, tractor, date }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Sidebar)\n","import React, { useState } from 'react'\nimport { makeStyles, withTheme } from '@material-ui/core/styles'\nimport Warning from '../assets/Warning.svg'\nimport Cancel from '../assets/cancel.svg'\nimport Contact from '../assets/contact.svg'\nimport Modal from '@material-ui/core/Modal'\nimport getTractorImages from '../utils/getTractorImages'\n\nconst useStyles = makeStyles((theme) => ({\n subscription: {\n width: '525px',\n height: '586px',\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n background: '#FFFFFF',\n outline: 'none',\n border: 'none',\n overflowY: 'scroll',\n borderRadius: '16px',\n padding: '25px',\n },\n subscriptionTop: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n clear: 'both',\n },\n subscriptionHeader: {\n fontWeight: '400',\n fontSize: '28px',\n lineHeight: '32px',\n marginTop: '10px',\n },\n subscriptionMessage: {\n fontWeight: '400',\n fontSize: '20px',\n lineHeight: '23.44px',\n marginTop: '10px',\n },\n supportNumber: {\n color: '#652078',\n fontWeight: '700',\n fontSize: '24px',\n lineHeight: '28.31px',\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n subscriptionVertical: {\n width: '100%',\n height: '1px',\n background: '#D7D7D7',\n marginTop: '30px',\n },\n rechargeHeading: {\n fontWeight: '400',\n fontSize: '16px',\n lineHeight: '18.75px',\n margin: '10px 0px',\n },\n expiredTractorName: {\n fontWeight: '400',\n fontSize: '18px',\n lineHeight: '21px',\n },\n expiredTractorDate: {\n fontWeight: '400',\n fontSize: '16px',\n lineHeight: '18.75px',\n },\n}))\n\nconst SubscriptionExpired = ({ tractors, ...props }) => {\n const classes = useStyles()\n const tractorsLength = tractors?.filter(\n (trac) => trac?.subscription?.is_valid === false\n )\n const [subscriptionOpen, setSubscriptionOpen] = useState(true)\n\n return (\n setSubscriptionOpen(!subscriptionOpen)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n setSubscriptionOpen(!subscriptionOpen)}\n >\n \"cancel\"\n
\n
\n \"Warning\"\n
\n Recharge expired for {tractorsLength?.length} tractors.\n
\n
\n Please contact on the support helpline number\n
\n
\n \n \"contact\"\n 9152-915200\n \n
\n
\n
\n
\n
\n Recharge expired for :\n
\n {tractors?.map((tractor, index) =>\n !tractor?.subscription?.is_valid ? (\n \n
\n \n
\n \n \n {tractor.name}\n \n \n Recharge expired on :{' '}\n {tractor?.subscription_due_date}\n \n
\n \n ) : null\n )}\n \n \n \n )\n}\n\nexport default withTheme(SubscriptionExpired)\n","import React, { useEffect, useState } from 'react'\nimport Navbar from '../../components/Navbar'\nimport Sidebar from '../../components/sidebar'\nimport SubscriptionExpired from '../../components/SubscriptionExpired'\nimport { useParams, useLocation } from 'react-router-dom'\n\nconst Dashboard = ({\n tractors,\n realtimeList,\n showTracking,\n setShowTracking,\n}) => {\n const { id } = useParams()\n const location = useLocation()\n const [show, setShow] = useState(true)\n const [selectedTractor, setSelectedTractor] = useState(null)\n const [checkId, setCheckId] = useState(false)\n\n const [position, setposition] = useState(0)\n const [showTrips, setshowTrips] = useState(false)\n\n const onSelectedTractorChanged = (newPostion) => {\n setposition(newPostion)\n }\n\n useEffect(() => {\n if (location.pathname.startsWith('/tracking')) {\n if (tractors.find((tr) => tr.device_pk === parseInt(id))) {\n setSelectedTractor({\n tractor: tractors[0],\n index: 0,\n realTime:\n realtimeList.find(\n (rt) => rt.fb_key === tractors[0].fb_key\n ) ?? realtimeList[0],\n })\n } else {\n setCheckId(true)\n }\n } else {\n setSelectedTractor({\n tractor: tractors[0],\n index: 0,\n realTime:\n realtimeList.find(\n (rt) => rt.fb_key === tractors[0].fb_key\n ) ?? realtimeList[0],\n })\n }\n }, [location, id, tractors, realtimeList])\n\n const onShowTrips = (hideShow) => {\n setshowTrips(hideShow)\n }\n\n const tractorsLength = tractors?.filter(\n (trac) => trac?.subscription?.is_valid === false\n )\n\n return (\n <>\n {!checkId && (\n
\n \n \n {tractorsLength?.length > 0 && !showTracking && (\n \n )}\n
\n )}\n {checkId && (\n \n

\n Oops! We couldn't find that Device ID\n

\n \n )}\n \n )\n}\n\nexport default Dashboard\n","import React, { useEffect, useState } from 'react'\nimport './App.css'\nimport Login from './views/Login'\nimport Dashboard from './views/Dashboard'\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport { connect } from 'react-redux'\nimport { loginRequest, loginUpdate } from './store/actions/loginAction'\nimport { InfiniteLoader } from './elements'\nimport { AnimatePresence } from 'framer-motion'\nimport { getGromaxRequest } from './store/actions/getGromaxAction'\nimport {\n BrowserRouter as Switch,\n Route,\n useLocation,\n useHistory,\n} from 'react-router-dom'\nimport redirect from './utils/redirect'\n\nimport Noty from 'noty'\nimport 'noty/lib/noty.css'\nimport 'noty/lib/themes/bootstrap-v4.css'\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: '#BE1E2D',\n button: '#FD7E50',\n },\n secondary: {\n main: '#FFFFFF',\n },\n\n typography: {\n button: {\n textTransform: 'none',\n },\n fontFamily: \"'Noto Sans', sans-serif\",\n },\n },\n})\n\nconst App = (props) => {\n const [showTracking, setShowTracking] = useState(false)\n const location = useLocation()\n const history = useHistory()\n\n useEffect(() => {\n const loggedIn = localStorage.getItem('loggedIn') === 'true'\n const phoneNumber = loggedIn ? localStorage.getItem('phoneNumber') : ''\n if (!props.gromaxDevices) {\n props.getGromax()\n }\n if (loggedIn && phoneNumber.length === 10) {\n props.makeLoginRequest({ phone: phoneNumber, otp: '6145' })\n }\n if (loggedIn) {\n if (location.pathname === '/login') {\n history.push('/')\n }\n } else {\n if (location.pathname !== '/login') {\n const queryParams = new URLSearchParams(window.location.search)\n\n const pin = queryParams.get('pin')\n const pinName = queryParams.get('pin_name')\n\n window.location.href =\n '/login?redir=' + redirect(location.pathname, pin, pinName)\n }\n }\n }, [location.pathname, history]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (props.errorMsg && props.errorMsg !== '') {\n new Noty({\n text: props.errorMsg,\n layout: 'topRight',\n theme: 'bootstrap-v4',\n type: 'error',\n progressBar: true,\n timeout: 1000,\n }).show()\n }\n }, [props.errorMsg])\n\n return (\n \n \n \n\n {localStorage.getItem('loggedIn') === 'true' &&\n props.loadingLogin && }\n \n \n \n {props.isLoggedIn && (\n \n )}\n \n \n {props.isLoggedIn && (\n \n )}\n \n \n \n \n \n \n \n \n )\n}\n\nconst mapStateToProps = (state) => ({\n tractors: state.loginReducer.tractors,\n realTimes: state.loginReducer.realTimes,\n isLoggedIn: state.loginReducer.isLoggedIn,\n loadingLogin: state.loginReducer.loading,\n errorMsg: state.errorReducer.msg,\n gromaxDevices: state.gromaxReducer.data,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n getGromax: () => {\n dispatch(getGromaxRequest())\n },\n makeLoginRequest: ({ phone, otp }) => {\n dispatch(loginRequest({ phone, otp }))\n },\n makeLoginUpdate: ({ tractors, id, name, phone, auth_token }) => {\n dispatch(loginUpdate({ tractors, id, name, phone, auth_token }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App)\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport { Provider } from 'react-redux'\nimport store from './store'\nimport { BrowserRouter as Router } from 'react-router-dom'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n)\n"],"sourceRoot":""}