{"version":3,"sources":["components/SMIGrid/GridCustomTemplates.js","GridHelper.js","reducers/Map.js","pages/Mobile/SwitchCommunity.js","components/SMIGrid/GridCustomFilters.js","components/SMIGrid/SMIActionColumn.js","Utils/SortHelper.js","images/smi_logo.png","Utils/AudioUtil.js","pages/Mobile/HardwareAssignment.js","pages/Mobile/HardwareRegistrationPage.js","components/SMIGrid/LoadingPanel.js","pages/Shared/Map/DrawableRoute.js","pages/Shared/Map/MapComponentPresentation.js","pages/Shared/Map/MapComponent.js","Utils/Util.js","pages/Settings/ChangePassword/PasswordContext.js","pages/Settings/ChangePassword/ChangePasswordPresentation.js","pages/Settings/ChangePassword/ChangePassword.js","Utils/ScheduleUtil.js","images/Location_Icon_18x27.png","components/PageWrapper/PageWrapper.js","Utils/MapHelper.js","reducers/SimulatorReducer.js","pages/System/Diagnostics/VehicleDiagnostics/ReduxAction.js","pages/Shared/Map/VehicleMarker.js","pages/System/Diagnostics/VehicleDiagnostics/ReduxReducer.js","reducers/Auth.js","reducers/Comment.js","reducers/Index.js","images/smi_logo_2.png","images/alert_info.png","images/view.png","images/maintain.png","images/system.png","images/reports.png","images/add-alert.png","images/loader.gif","Utils/DateUtil.js","Utils/DialogUtil.js","SystemSettingContext.js","OfflineFunctinality.js","components/Login/LoginPresentation.js","components/Login/LoginHeaderPresentation.js","components/Login/ForgotPasswordPresentation.js","components/Login/CompatibilityTaglinePresentation.js","components/Login/SMILoginPresentation.js","components/Login/Login.js","components/MobileRoutes/MobileRoutes.js","components/MobileRoutes/MobileMainPage.js","pages/View/ReduxIncidentListing/UploadIncidentAttachment.js","registerServiceWorker.js","index.js","App.js","components/ErrorBoundary/ErrorBoundaryPresentation.js","components/ErrorBoundary/ErrorBoundary.js","components/ErrorBoundary/Storage.js","components/Routes/SafeRoute.js","components/Routes/PortalRoutes.js","components/MainPage/SubmenuPresentation.js","components/MainPage/NavMenuPresentation.js","components/MainPage/HomepageMenu/HomepageMenuPresentation.js","components/MainPage/HomepageMenu/HomepageMenu.js","pages/Reports/ReportEngine.js","components/MainPage/NotificationMenu.js","components/MainPage/MainPagePresentation.js","pages/Maintain/Scheduling/ScheduleEdit/ScheduleEdit.js","components/MainPage/Emergencies/EmergencyPresentation.js","components/MainPage/Emergencies/Emergencies.js","components/Support/Video.js","components/SendMessage/MSGRecipientType.js","components/SendMessage/MessageRecipients.js","components/SendMessage/RecipientPresentation.js","components/MessageInbox/MessageInbox.js","components/SendMessage/CannedMessages.js","components/SendMessage/CurrentRecipients.js","components/SendMessage/MessageComposition.js","components/SendMessage/SendMessage.js","components/MessageInbox/DetailComponent.js","components/MyAlerts/MyAlertPresentation.js","components/MyAlerts/AlertComponent/PresentationContainer.js","components/MyAlerts/IncidentAlert/IncidentAlertPresentation.js","components/MyAlerts/NormalAlert/ZoneTypePresentation.js","components/MyAlerts/NormalAlert/ThresholdTypePresentation.js","components/MyAlerts/NormalAlert/HardwareTypePresentation.js","components/MyAlerts/NormalAlert/NormalAlertPresentation.js","components/MyAlerts/SegmentAlert/SegmentAlertPresentation.js","components/MyAlerts/AlertDetailsContainer.js","components/MyAlerts/MyAlerts.js","components/MakeAnnouncement/AnnouncementComposition.js","components/MakeAnnouncement/MakeAnnouncement.js","components/AlertInbox/AlertsInboxPresentation.js","components/AlertInbox/AlertsInbox.js","components/AlertInbox/AlertOutbox.js","components/MainPage/MainPage.js","components/LoadingMask/LoadingMask.js","components/SMIGrid/SMIGridSearch.js","components/SMIGrid/SMIColumnMenu.js","components/SMIGrid/SMIGridPresentation.js","components/SMIGrid/SMIGridRenderers.js","components/SMIGrid/SMIGrid.js"],"names":["__webpack_require__","d","__webpack_exports__","DateTime","Date","Time","roundToPrecision","Color","Enum","CSV","YesNoBinary","XM36HourTime","FormatMinutes","AudioField","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","n","react__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_1___default","_telerik_kendo_intl__WEBPACK_IMPORTED_MODULE_2__","_Utils_AudioUtil__WEBPACK_IMPORTED_MODULE_3__","_Utils_Util__WEBPACK_IMPORTED_MODULE_4__","_Utils_DateUtil__WEBPACK_IMPORTED_MODULE_5__","shortDateFormat","shortTimeFormat","dateFormat","replace","dataItem","field","dataValue","formatDate","concat","timeFormat","indexOf","precision","Util","a","createElement","className","style","backgroundColor","data","dataValueField","dataTextField","inheritanceCallback","isInherited","listData","searchedData","filter","length","$","isArray","join","splitStr","split","s","map","val","i","parseInt","baseDateField","shortFormatXM36hour","formatMinutes","audioCallback","speechSynthesizerRate","smiMapService","onClick","event","stopPropagation","playButton","target","classList","add","audio","failsafeTimeout","setTimeout","remove","playAudio","clearTimeout","triggerPlayAudio","sortNaturalAlphaNumeric","_Utils_Util__WEBPACK_IMPORTED_MODULE_0__","b","isNullOrUndefined","ax","bx","toLowerCase","Math","max","undefined","t","as","substr","bs","an","bn","isNaN","toString","MapActionTypes","SELECT_MULTIPLE_STOPS","SELECT_ROUTE","SELECT_STOP","ADD_MARKER_GROUP","REMOVE_MARKER_GROUP","ADD_TRIP_DATA","VEHICLE_POSITION","VEHICLE_FIXTAKEN","VEHICLE_AUDIT_LOGS","CLUSTER_MARKERS","VEHICLE_MARKER","HISTORY_ROUTE_LINES","STOP_MARKERS","ROUTE_LINES","CIRCLE_MARKERS","MAP_ZOOM_POSITION","BOUND_POSITION","POLYGONS","DRAWABLE_ROUTES","CLEAR_MAP","SET_MAP_REF","initialState","SelectedStop","Route","MarkerGroups","TripPoints","VehiclePosition","VehicleFixTaken","VehicleAuditLogs","ClusterMarkers","VehicleMarker","HistoryRouteLines","StopMarkers","RouteLines","CircleMarkers","MapZoomPosition","BoundPosition","Polygons","Stops","MapRef","state","arguments","action","type","Object","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","stops","route","stop","push","Name","name","Markers","markers","ShouldZoom","shouldZoom","g","tripData","vehiclePosition","vehicleFixTaken","vehicleAuditLogs","clusterMarkers","vehicleMarker","historyRouteLines","stopMarkers","routeLines","circleMarkers","zoomPosition","boundPosition","polygons","DrawableRoutes","drawableRoutes","mapRef","actions","setMultipleStops","setRoute","setSeletedStop","addMarkerGroup","removeMarkerGroup","addTripData","setVehiclePosition","setVehicleFixTaken","setVehicleAuditLogs","setClusterMarkers","setVehicleMarker","setHistoryRouteLines","setStopMarkers","setRouteLines","setCircleMarkers","setMapZoomPosition","setBoundPosition","setPolygons","setDrawableRoutes","setMapRef","clearMap","SwitchCommunity","communityList","loading","loggedInUser","headers","Content-Type","Access-Control-Allow-Origin","baseUrl","history","createBrowserHistory","basename","_this","_this2","this","currentUser","JSON","parse","localStorage","getItem","username","console","log","axios","get","then","result","communityItem","menuTree","subMenu","find","title","setState","catch","e","response","status","window","location","origin","url","_this3","parsedUrl","URL","encodeURIComponent","hostname","ticket","test","href","alert","err","reload","_this4","pathname","react__WEBPACK_IMPORTED_MODULE_5___default","_components_MainPage_MainPage__WEBPACK_IMPORTED_MODULE_11__","_Mobile_HardwareRegistrationPage__WEBPACK_IMPORTED_MODULE_12__","communities","c","key","goToCommunity","id","react_router_dom__WEBPACK_IMPORTED_MODULE_8__","react_router_dom__WEBPACK_IMPORTED_MODULE_9__","updatePage","to","display","src","require","React","Component","Dropdown","operator","props","value","dataSearchResult","_progress_kendo_react_dropdowns__WEBPACK_IMPORTED_MODULE_6__","onChange","syntheticEvent","textField","dataItemKey","disabled","preventDefault","text","binaryFilter","current","SelectList","cellValue","filterValue","escapedValue","RegExp","findIndex","x","_React$Component","_temp","_getPrototypeOf2","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_len","args","Array","_key","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","call","apply","shown","selectedOptions","togglePopup","checkboxChange","isChecked","checked","selectedIndex","newSelectedOptions","slice","splice","propagateFilter","clearFilter","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__","selectedOptionsText","forEach","checkboxList","margin","ref","button","anchor","textAlign","justifyContent","overflow","width","textOverflow","_progress_kendo_react_popup__WEBPACK_IMPORTED_MODULE_8__","show","popupClass","padding","maxHeight","overflowY","marginTop","_Component","DateFilter","_getPrototypeOf3","_len2","_key2","dateIsInRange","_progress_kendo_react_dateinputs__WEBPACK_IMPORTED_MODULE_7__","defaultValue","format","formatPlaceholder","_Component2","TimeFilter","_getPrototypeOf4","_this5","_len3","_key3","isTimeSame","_this6","currentDate","selectedDate","getFullYear","getMonth","getDate","getHours","getMinutes","DateTimeRange","formatStr","_Component3","DateTimeRangeFilterCell","_getPrototypeOf5","_this7","_len4","_key4","clear","setMin","min","inRange","setMax","position","left","values","LabeledNumberFilter","label","_Component4","NumberFilter","_getPrototypeOf6","_this8","_len5","_key5","_operator","_this9","react__WEBPACK_IMPORTED_MODULE_5__","_progress_kendo_react_inputs__WEBPACK_IMPORTED_MODULE_9__","placeholder","SMIActionColumn","displayName","defaultProps","filterable","groupable","_Util__WEBPACK_IMPORTED_MODULE_0__","SortHelper","sortArrayNaturalAlphaNumeric","arr","sort","module","exports","audioSnippets","onLoadedCallback","rate","queryString","voice","ttsUrl","soundEmbedContainer","document","getElementById","visibility","height","body","append","firstChild","removeChild","soundEmbed","onplaying","pause","play","HardwareAssignment","assemblyStatuses","hardwares","unassignedVehicleList","assignableVehicles","selectedHardware","selectedVehicle","canTestSignSound","sendingSignSoundCommand","hardwareSelected","h","vehicleId","testSignSound","post","commandParams","repetitions","commandType","hardwareIds","selectedVehicleChanged","_hardwares","vehicleName","hardwareId","formattedHardwares","trim","vehicleID","hVehicleResponse","formattedHVehicles","sortHelper","prevProps","prevState","v","isSaving","r","unassignedVehicle","notes","item","children","subOptions","generateAssemblyOption","react_default","MainPage","HardwareRegistrationPage_HardwareRegistrationPage","hardwareOptions","vehicleOptions","react_router","react_router_dom","hasCommunities","saveClicked","HardwareRegistrationPage","vehicles","hardware","hardwareVehicle","_hardware","_vehicles","hardwareVehicles","_unassignedVehicleList","hardwareAssemblyStatuses","getChildren","assemblyStatusId","allAssemblyStatuses","parentAssemblyStatusID","hardwareAssemblyStatusID","description","selectedAssemblyStatus","hardwareAssemblyNotes","unassignedVehicleIndex","open","HardwareAssignment_HardwareAssignment","assemblyOptions","communityName","hardwareVehicleOptions","vehicleSelected","unassignedVehicleChnaged","assemblyStatusSelected","notesUpdated","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","_ref","identifier","loadingPanel","gridContent","querySelector","ReactDOM","createPortal","onMarkerMouseOver","openPopup","DrawableRoute","interStopPoints","polylines","pathPoints","color","clickHandler","startsWith","stopIndex","posArr","polylineArr","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","point","lat","lng","_ret","startStop","endStop","Polyline","positions","stroke","return","getPolyLines","routeColor","onPathClick","stopIcons","stopSvg","seq","icon","L","divIcon","html","iconAnchor","Marker","onMouseOver","Popup","stopName","stopCode","Fragment","forwardRef","centerPosition","zoom","showArial","mapTiles","toggleAerial","showArialMapView","drawableRouteElements","useMemo","assign","markersFromGroups","markerGroups","reduce","group","m","leafletElement","addLayer","attr","es_Map","center","maxZoom","showVehicleInfoBox","openStreetAttribution","azureMapAttribution","MapComponentUnconnected","useRef","_useState","useState","_useState2","slicedToArray","setShowArial","_useState3","_useState4","bingLayer","setBingLayer","_useState5","_useState6","mapAttribution","SetMapAttribution","dispatch","SystemSettings","useContext","SystemSettingContext","mapCenterLatitude","mapCenterLongitude","mapCenterZoom","TileLayer","attribution","useMapTiles","mapTileUrl","useEffect","fitBounds","mapZoomPosition","flyTo","animate","mapActions","bindActionCreators","MapComponentPresentation","oncontextmenu","options","removeLayer","_layer","aerialMapView","tileLayer","subscriptionKey","azureMapSubscriptionKey","tilesetId","language","view","bing","bingMapsKey","bingMapKey","imagerySet","callback","addTo","getZoom","setZoom","connect","mapReducer","vehicleLogs","isConnected","areSameObject","obj1","obj2","_equals","stringify","extend","isNullOrWhitespace","str","match","_padTo2","num","strContains","containsVal","caseInsensitive","valToCheck","endsWith","endsWithVal","showMessage","divtitle","boxtitle","visible","toggleDialog","react__WEBPACK_IMPORTED_MODULE_6___default","react__WEBPACK_IMPORTED_MODULE_6__","_progress_kendo_react_dialogs__WEBPACK_IMPORTED_MODULE_7__","onClose","showMessage1","mWindow","content","kendoWindow","animation","effects","duration","close","draggable","modal","resizable","$closeButton","click","insertAfter","last","charLimit","limit","substring","multiplier","pow","round","flatDataToHierarchical","idFieldName","parentIdFieldName","parentIdentifier","hierarchicalDataArr","newItem","populateHierarchicalChildren","parentItem","subItems","items","flattenHierarchicalData","childrenArrayName","flatDataArr","childArr","getQueryStringParameterByName","decodeURI","search","o_reg","matches","splitFirstKey","shift","indexIsObject","parent","j","kvp","splitKey","objToCheck","k","subKey","results","exec","decodeURIComponent","getDistanceBetweenLatLngPoints","lat1","lng1","lat2","lng2","deltaLat","degreeToRadian","deltaLng","sin","cos","atan2","sqrt","angle","PI","radianToDegree","findDistanceToLineSegment","x1","y1","x2","y2","pointX","pointY","isLatLng","diffX","diffY","findDistanceBetweenLineSegments","l1x1","l1y1","l1x2","l1y2","l2x1","l2y1","l2x2","l2y2","checkIfLinesIntersect","x3","y3","x4","y4","y","char","escapedChar","escapeStringForRegExp","regexStr","startsWithVal","lastIndexOf","loadingOn","currentlyLoading","self","addClass","_loadingOnCancelTimer","loadingOff","error","removeClass","setCookie","c_name","exdays","exdate","setDate","c_value","escape","toUTCString","cookie","getCookie","ARRcookies","unescape","copyTextToClipboard","element","appendChild","focus","setSelectionRange","execCommand","lastDummyIdUsed","getNewDummyId","getCopyName","itemToCopy","nameField","otherFieldsToMatch","cleanName","namePattern","copyCount","otherFieldsMatch","fieldToMatch","deepCopy","object","formatDataSize","unit","roundedVal","formatKBDataSize","valInKB","milisecondsToTimeStr","ms","seconds","secondsToTimeStr","secondsVal","floor","getRandomString","chars","random","getGuid","PasswordContext","createContext","Provider","Consumer","ChangePasswordPresentation","context","showModal","htmlFor","oldPasswordError","oldPassword","handleInput","newPasswordError","newPassword","confirmPasswordError","confirmPassword","handleSave","errorMessage","alertImage","alt","passwordPolicy","ChangePassword","formModel","formError","getPasswordPolicy","res","policy","regex","objectSpread","invalidPasswordError","minLength","maxLength","sessionStorage","ErrorMessage","onfirmPasswordError","showModel","defineProperty","getSelectedSchedule","getSelectedScheduleStartDateStr","getSelectedScheduleLabel","selectedScheduleIsInPast","selectedScheduleIsInFuture","selectedScheduleIsCurrentSchedule","_DateUtil__WEBPACK_IMPORTED_MODULE_1__","selectedScheduleJSON","schedule","startDate","getDateFromISO","toLocaleDateString","month","day","year","endDate","getTodayDate","_Utils_ScheduleUtil__WEBPACK_IMPORTED_MODULE_1__","_images_view_png__WEBPACK_IMPORTED_MODULE_2__","_images_view_png__WEBPACK_IMPORTED_MODULE_2___default","_images_maintain_png__WEBPACK_IMPORTED_MODULE_3__","_images_maintain_png__WEBPACK_IMPORTED_MODULE_3___default","_images_system_png__WEBPACK_IMPORTED_MODULE_4__","_images_system_png__WEBPACK_IMPORTED_MODULE_4___default","_images_reports_png__WEBPACK_IMPORTED_MODULE_5__","_images_reports_png__WEBPACK_IMPORTED_MODULE_5___default","pageIcon","isSchedulePage","pastIsReadOnly","scheduleLabelElement","pastScheduleLabel","path","reportIcon","viewIcon","systemIcon","maintainIcon","leaflet__WEBPACK_IMPORTED_MODULE_1__","leaflet__WEBPACK_IMPORTED_MODULE_1___default","react_leaflet__WEBPACK_IMPORTED_MODULE_2__","_Util__WEBPACK_IMPORTED_MODULE_3__","VehicleBubbleSvgWithoutBearing","VehicleBubbleSvg","MapHelper","getStopSVG","opacity","getIncidentSVG","incidentSvg","lightenColor","getVehicleIcon","bearing","iconUrl","zoomLevel","vehicleSvg","scale","actualSize","colorHex","alpha","inverseAlpha","newR","newG","newB","getStopIcon","svg","iconSize","getStopSeqIcon","findPointAtDistanceAlongBearing","startLat","startLng","distance","radAngularDistance","radBearing","radStartLat","radStartLng","sinStartLat","cosStartLat","sinAngularDistance","cosAngularDistance","sinBearing","sinX","asin","getRectanglesFromPolyline","locations","rectangles","getBearingOfLatLngLine","reverseBearing","perpendicularBearing1","perpendicularBearing2","startPoint","endPoint","corner1","corner2","corner3","corner4","_rectLocation","weight","fill","radLat1","radLat2","radLngDiff","abs","pointInPolygon","polygonPoints","xVal","yVal","simulatorState","LocationPoints","isPaused","isReset","SimulatorMode","isStart","Speed","OBUList","SelectedOBU","actionTypes","locationPoints","simulatorMode","speed","obuList","selectedObu","setLocationPoints","_locationPoints","setPause","setReset","setStart","setSimulatorMode","setSpeed","setObuList","setSelectedObu","ReduxActions","GetRoutes","GetVehicles","SelectRoute","SetEvents","ClearEvents","SelectVehicle","SelectDate","SetTripInfos","SetVehicleHistory","SelectTripInfo","SetSelectedLogFix","SetSelectedLogType","SetSelectedLogFile","SetTimeRange","SetTripStopData","SetSelectedRoute","SetRoutePatterns","SetSelectedPattern","SetPatternStops","SetStopReached","SetEventTrigerDistance","SetZoomToRouteStart","SetShowPattern","SetCircleMarkerPoints","SetFilterItems","SetHighlightGreenItems","SetHighlightCyanItems","ClearMarkers","SetVehicleLogFix","SetIsLoading","vehicleRef","createRef","VehicleMarkerUnconnected","memo","F_a4_work_9_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","react_leaflet__WEBPACK_IMPORTED_MODULE_3__","Lat","Lng","zIndexOffset","Br","showVehiclePopup","vehiclePopUpContent","react_leaflet__WEBPACK_IMPORTED_MODULE_4__","nextProps","setLatLng","ReduxReducer","_ReduxAction__WEBPACK_IMPORTED_MODULE_0__","newState","Vehicles","Routes","routes","evnts","Events","localTime","toLocaleTimeString","SelectedDate","date","SelectedVehicle","vehicle","TripInfos","tripInfos","SelectedTrip","selectedTrip","SelectedLogFix","LogFix","SelectedLogType","LogType","SelectedLogFile","LogFile","FromDateTime","fromDateTime","ToDateTime","toDateTime","VehicleHistory","vehicleHistory","TripStopData","tripStopData","SelectedRoute","selectedRoute","RoutePatterns","routePatterns","SelectedPattern","selectedPattern","PatternStops","patternStops","IsEventTrigerDistance","isEventTrigerDistance","IsStopReached","isStopReached","IsZoomToRouteStart","isZoomToRouteStart","IsShowPattern","isShowPattern","CircleMarkerPoints","circleMarkerPoints","FilterItems","filterItems","HighlightGreenItems","highlightGreenItems","HighlightCyanItems","highlightCyanItems","isLoading","types","user","comments","createStore","combineReducers","authReducer","commentReducer","toConsumableArray","comment","simulatorReducer","diagnosticReducer","applyMiddleware","thunk","addMinutesToDate","addDaysToDate","addYearsToDate","convertDateStringsToDates","convertDatesToStrings","parseDateToFormattedString","parseDateToFormattedShortString","dateRangesAreOverlapping","dateToImpreciseISOStr","getISODateWithNoTime","isImpreciseISOStr","getMinutesBetweenDates","dateToTimelessISO","dateToTimeOnlyISO","formatDateTimeAsSetting","formatDateTime","parseCSDateTime","getDateStringAsDisplayValue","getDateTimeStringAsDisplayValue","flexibleTimeParse","stripTimeFromDate","parseISODateWithNoTime","parseISODateWithTimeOnly","isValidDate","isDate","getMidnightDateString","convertScheduleDate","_telerik_kendo_intl__WEBPACK_IMPORTED_MODULE_0__","_progress_kendo_ui__WEBPACK_IMPORTED_MODULE_1__","_progress_kendo_ui__WEBPACK_IMPORTED_MODULE_1___default","_Util__WEBPACK_IMPORTED_MODULE_2__","moment__WEBPACK_IMPORTED_MODULE_3__","minutes","setMinutes","days","years","setFullYear","time","stringDate","hoursPart","hoursNum","stringTimeDate","baseDate","isXM","prototype","startDate1","endDate1","startDate2","endDate2","today","setHours","date1","date2","getTime","hour","minute","second","getSeconds","dateStr","dateValue","kendo","csharpTime","safeBrowserformat","tz","p","setUTCMinutes","getUTCMinutes","NaN","datetime","digitsEnd","colons","chr","charAt","digitPart","charPart","padStart","padEnd","timeArr","hours","firstChar","moment","isValid","schDate","timeHours","timeMinutes","kendoAlert","kendoConfirm","_progress_kendo_react_dialogs__WEBPACK_IMPORTED_MODULE_2__","buttonText","onCloseCallback","isError","kendoAlertContainer","unmountComponentAtNode","newText","fontSize","dialogJsx","minWidth","minHeight","maxWidth","bottom","render","onConfirmCallback","onCancelCallback","okayButtonText","cancelButtonText","closeIcon","dangerouslySetInnerHTML","__html","background","marginRight","border","message","isDiabledMessage","existingKendoAlertContainer","removeElement","setAttribute","elment","alertDiv","updateOnlineStatus","navigator","onLine","getElementsByTagName","innerText","logOut","addEventListener","interceptors","request","use","config","connection","withCredentials","Promise","reject","Authorization","authToken","LoginPresentation","password","rememberUsername","handleInputChange","onSubmit","tabIndex","autoFocus","userName","onForgotPassword","inProgress","LoginHeaderPresentation","customLogoUrl","rel","smiLogo","ForgotPasswordPresentation","email","isSuccess","emailAddress","Error","onCancel","CompatibilityTaglinePresentation","SMILoginPresentation","queryStr","guid","Login","isSmiLogin","isForgotPassword","smiUsername","smiGuid","counter","onLoginSubmit","setItem","removeItem","mapstratPos","authenInfo","pubkey","_errorMessage","responseMessage","onLoginSuccess","onChangePassword","onSmiLoginMessage","SmiPass","passToken","onForgotPasswordSubmit","onForgotPasswordCancel","onSmiLoginCancel","settings","parsed","loginTicket","ForgotPasswordPresentation_ForgotPasswordPresentation","LoginPresentation_LoginPresentation","lazy","resolve","bind","HardwareAssignmentPage","MobileMainPage","isCommunity","canHardwareRegister","checkingPermission","changeViewportForMobile","userAgent","ww","screen","viewport_meta_tag","isCommunityPage","uri","cleanUri","replaceState","Mobile_SwitchCommunity","Mobile_HardwareRegistrationPage","communityCheck","RenderPage","ReduxIncidentListing_UploadIncidentAttachment","IsValidLink","IncidentId","IncidentType","isLoaded","files","isFileUploading","setValue","params","query","incidentId","isValidLink","incidentType","react","onFocus","blur","file","formdata","FormData","hide","delay","fadeOut","Boolean","host","Sentry","dsn","rootElement","serviceWorker","ready","registration","unregister","es","store","isLoggedIn","setIsLoggedIn","isForceChangePassword","setForceChangePassword","setSystemSettings","_useState7","_useState8","isMobileLogin","setIsMobileLogin","_useState9","_useState10","isIncidentAttachment","setIsIncidentAttachment","_useState11","_useState12","isAuthTokenVarifing","SetAuthTokenVarifiedFlag","_useState13","_useState14","SetSystemSettingLoadFlag","innerWidth","loadSystemSettings","UserName","Token","currentServerTime","serverPageLoadTime","clientPageLoadTime","localServerTimeDiff","getCurrentServerTime","offset","Login_Login_Login","react_media","MobileMainPage_MobileMainPage","LoadingPanel","ErrorBoundaryPresentation","fontFamily","ErrorBoundary","errorInfo","scope","keys","setExtra","itemString","expiry","getWithExpiry","ttl","setWithExpiry","SafeRoute","ErrorBoundary_ErrorBoundary","Vehicle","ViewAvailability","ViewVehicleHistory","ViewVehicleHistoryExFull","all","ViewVehicleHistoryEx","ViewRoutes","ViewDailySchedule","DriverArrivalStatus","RefusalList","IncidentListing","EngineDiagnostics","EngineDiagnosticReport","Zones","ZoneTypes","DailyBlockEdit","ReduxDetour","Schedule","Direction","Transfer","TransferAudio","ServiceList","ServiceDates","TaggedDates","StopEdit","InterStop","MaintainRoute","HeadSignAssign","Pattern","MaintainTrips","Block","Pieces","MaintainVehicles","VehicleCategory","ServiceStatus","Inspection","VehicleInspection","WorkAssignments","HardwareRegistration","HardwareStatus","HardwareSettings","RMA","WaysideSignStatus","AssemblyStatus","MessageCategories","Messages","IncidentFields","IncidentTypes","IncidentEmailGroups","AdVideos","AdVideoPlaylists","AdAssociations","AdVisualizer","AdUserGroups","PublishReports","GroupMapping","CodeConfiguration","AlertConfig","StopBroadcast","CannedAnnouncements","BypassReason","LateCheckOutReason","MaintainEmergencyType","HeadSign","DateTags","AlertLog","About","MaintainOperation","Users","Communities","Settings","AuditLog","HardwareAuditLog","HardwareStatusLog","VehicleDiagnostics","StopVoicePreview","ATPExport","ConfigStatus","DailyRidershipSummary","PassengerCount","PortalRoutes","exact","component","SubmenuPresentation","shouldRender","setShouldRender","forceMenuHide","itemPath","parentPath","currentPath","isSelectSchedule","isSupportMenu","isCommunityMenu","data-menu-id","onItemSelected","onSelectSchedule","onSupportMenuClick","onCommunityClick","NavMenuPresentation","forceUpdate","set","useForceUpdate","MainPage_SubmenuPresentation","HomepageMenuPresentation","flattenedMenu","selectedHomepage","onItemClick","HomepageMenu","homepage","setSelectedHomepage","flattenedMenuArr","getFlattenedMenu","menuItem","parentName","toUpperCase","newHomepage","ReportEngine","reportURL","top","zIndex","textalign","marginLeft","fontWeight","NotificationMenu","messageCount","notificationCount","intervalObj","signalRConnection","openEmergencySignalR","signalR","withUrl","withAutomaticReconnect","configureLogging","Information","build","keepAliveIntervalInMilliseconds","serverTimeoutInMilliseconds","on","start","onLogOut","clearInterval","subModules","onOpenInbox","onOpenMyAlerts","onOpenOutbox","onOpenMessageInbox","onOpenSendMessage","MainPagePresentation","isCollapsed","setIsCollapsed","companyLogo","NotificationMenu_NotificationMenu","userFullName","fallback","ScheduleEdit","classCallCheck","possibleConstructorReturn","getPrototypeOf","storedSchedule","scheduleEditList","selectedSchedule","itemRender","li","itemProps","startEndDates","itemChildren","cloneElement","setCurrentSchedule","currentScheduleItem","setScheduleOnDialog","handleChange","findActiveScheduleIndex","tempDate","toISOString","index","assertThisInitialized","selectActiveSchedule","scheduleEditData","scheduleObj","scheduleID","externalID","recordCreated","unshift","date_sort_desc","scheduleItem","tzo","getTimezoneOffset","es_main","EmergencyPresentation","emergency","mapCenter","vehicleMarer","LocationIcon","markerGroup","main","alertText","animationName","MapComponent","drawableRoute","isBusy","onAcknowledge","onRespond","driver","block","lastStopMade","textDecoration","address","Emergencies","emergencyMessages","acknowledgmentsInProgress","acknowledged","emergencyPollingInterval","loadEmergencyMessages","finally","onSendMessage","em","payloadRecipients","isClass","payload","priority","emergencyMark","replyTo","recipients","sendAcknowledge","alertLogId","vehicleAlertLogId","invoke","emergencies","Video","protocol","videoUrl","ReactPlayer_default","controls","playing","MSGRecipientType","VehicleClass","AllRoutes","Dispatcher","AllDispatchers","MessageRecipients","includeDispatchers","recipientList","setRecipientList","SetLoadingState","searchStr","setSearchStr","treeData","hierarchicalData","vehicleClassHierarchicalData","vehicleClasses","hierarchicalSort","vc","parentId","parentClass","pc","filteredVehicleClass","filterData","o","dispatchers","getHierarchicalData","dist_es_main","expandIcons","onExpandChange","expanded","LoadingMask","SendMessage_RecipientPresentation","recipient","onRemoveRecipient","hasChildrenCount","countChildren","childrenCount","viewBox","version","xmlns","cx","cy","strokeWidth","allVehicles","CannedMessages","cannedMessages","setCannedMessages","popupShown","setPopupShown","buttonRef","kendo_react_popup_dist_es_main","CurrentRecipients","onClearRecipients","MessageComposition","onSend","setMessage","Priorities","Medium","setPriority","requireYesNo","setRequireYesNo","Low","High","SendMessage_SendMessage","preselectedRecipients","selectedRecipients","setSelectedRecipients","setIsLoading","recipientSelected","useCallback","selectedRecipient","cannotReceiveMessages","currentSelectedRecipients","removeRecipient","recipientToRemove","csr","sendMessage","valid","alertMessage","cleanRecipients","DetailComponent","showSendMessage","replyCell","replyHandler","vehicleIds","dataRender","trElement","markUnread","trProps","markRead","ids","delete","unreadMessage","isUnread","detailsData","SMIGrid","editable","rowRender","marginBottom","kendo_react_grid_dist_es_main","cell","GridDetailRow","MessageInbox_MessageInbox","gridRef","systemSettings","SetRenderTime","interval","SetIntervalObj","lastReadTime","SetVehicles","SetExpanded","SetValue","_interval","setInterval","lastUpdate","loadData","textSearch","keyCode","searchString","$rows","each","hasMatch","cellText","messageDeleteIds","Id","onSendMessageClose","crudUrl","toolbarButtons","detail","GridDetails","expandField","_expanded","unreadMessages","onDataLoaded","strTime","dateString","now","isoDate","customTemplate","GridCustomTemplates","filterCell","GridCustomFilters","activeFilter","logic","filters","inActiveFilter","MyAlertPresentation","onSubscriptionChange","defaultSubscriptionType","onEdit","isReload","dataLoaded","setGridFilter","kendo_react_inputs_dist_es_main","alertStatus","layout","subscriptionTypes","selectedSubscriptionType","valueRender","AddAlertImage","PresentationContainer","subscriptionName","inputChange","kendo_react_dateinputs_dist_es_main","alertStart","alertEnd","onAlertDayChange","editMon","editTues","editWeds","editThurs","data-bind","editFri","editSat","editSun","emailNotification","notificationTypeChange","subscriptionTypeId","portalNotification","alertConfigData","smsSettings","smsAccountID","smsPhoneNo","smsNotification","RSS","isActive","activeStatusChange","IncidentAlertPresentation","collapsedIds","setCollapsedIds","updateSegments","segmentIds","targetObject","incidentTypes","includes","incidentTypeID","getTreeData","checkboxes","checkField","onCheckChange","segmentId","_collapsedIds","ZoneTypePresentation","zoneTypes","driverLoggedIn","zoneTriggerType","vehicleInService","alertData","zoneType","ThresholdTypePresentation","vehicleOptionChange","alertSelectedRoutes","selectedRoutes","setSelectedRoutes","allRoutes","setAllRoutes","updateAllRoutesCheckbox","_selectedRoutes","_selectedRoute","startThreshold","clearThreshold","routeNumber","routeName","_allSelectedRoutes","anyAllVehicles","HardwareTypePresentation","hardwareTypes","selectedHardwareType","offlineThreshold","NormalAlertPresentation","alertRef","alertLogTypes","defaultItem","alertLogTypeID","alertLogTypeName","selectedAlertType","onAlertTypeChange","popupSettings","appendTo","SegmentAlertPresentation","segmentData","segmentID","segments","SegmentAlertPresentation_RSS","rss","datatype","rssFeedOptionChange","rssUrl","minTime","maxTime","AlertDetailsContainer","z","mask","editingAlert","alertDays","isPublic","alertLogType","notificationMethods","vehicleOption","zoneTypeID","hardwareTypeID","setIsSavingFlag","validateData","showSegmentAlert","dialogTitle","subscriptionType","getSubscriptionType","subscriptionTypeName","getDialogTitle","dialogWidth","subscriptionTypeID","getDialogWidth","showAlert","showIncidentAlert","notifArray","subscriptionID","promise","put","MyAlerts_MyAlerts","reloadGrid","zonePromise","alertLogTypesPromise","routePromise","hardwarePromise","settingsPromise","incidentTypesPromise","subTypesPromise","segmentPromise","spread","_subscriptionTypes","_state","getTemplateToShow","sybscriptionType","_objectSpread3","AnnouncementComposition","signText","setSignText","audioText1","setAudioText1","audioText2","setAudioText2","setLoading","announcementLanguage1","announcementLanguage2","subStr","voice1","voice2","MakeAnnouncement_MakeAnnouncement","makeAnnouncement","initialFilter","AlertsInboxPresentation","excelExportRef","selectedAlerts","setSelectedAlerts","selectedAlert","setSelectedAlert","setFilters","lastFilters","setLastFilters","showMap","setShowMap","onAllCheckboxChange","_selectedAlerts","processedData","getProcessedData","ID","isRead","showPosition","alertIds","flashSavedMessage","flashErrorMessage","markAlertsAsRead","kendo_react_buttons_dist_es_main","_excelData","columnsByField","template","excelColumns","columns","save","showColumnMenu","itemsPerPage","onDataStateChange","pageable","searchable","alertId","onSingleCheckboxChange","headerCell","isDisabled","filteredAlertIds","every","hideColumnMenu","Alert","hidden","_className","Long","AlertsInboxPresentation_MapView","kendo_react_excel_export_dist_es_main","MapView","pinClass","Subject","_icon","pin","total","dataState","skip","take","process","AlertsInbox","AlertOutbox","showChangePassword","showSelectSchedule","showMessageInbox","showMakeAnnouncement","showMyAlerts","supportItem","showAlertInbox","showAlertOutbox","getAttribute","checkStoredSchedule","scheduleList","validSchedule","isPopup","portalMenu","parser","toggleAlertInbox","toggleAlertOutbox","toggleChangePassword","toggleSelectSchedule","toggleSendMessage","emergencyVehicle","toggleMakeAnnouncement","toggleMessageInbox","toggleMyAlerts","onSupportVideoDialogClose","userHomePage","toLocaleLowerCase","menu","ScheduleEdit_ScheduleEdit_ScheduleEdit","showInboxModal","showOutboxModal","Emergencies_Emergencies_Emergencies","SMIGrid_SMIGridSearch","searchQuery","setSearchQuery","submitSearchQuery","clearSearchQuery","SMIColumnMenu","onToggleColumn","column","idx","onReset","allColumns","col","onColumnsSubmit","onCloseMenu","onMenuItemClick","columnsExpanded","filterExpanded","onFilterExpandChange","oneVisibleColumn","iconClass","readOnly","userSelect","SMIGridPresentation","gridProps","onItemChange","editField","cellRender","renderers","addLabel","dataName","columnMenuEntry","copyProps","columnMenu","columnMenuProps","SMIColumnMenu_SMIColumnMenu","onKeyDown","onAdd","addSaveEvent","onSave","saving","onCancelChanges","allowExcelExport","onExcelExport","showSavedMessage","showErrorMessage","onSearch","onRowClick","SMIGridRenderers","enterEdit","exitEdit","itemChange","rowColor","editFieldName","gridState","cellProps","disabledMessage","onDelete","deleteMessage","classNames","tdElement","rowType","deleteRender","actionColumnRender","isNotApplicable","tooltip","preventEnterEditResult","preventEnterEdit","flaggedToEdit","isEditing","currentEditingField","currentEditingItem","CustomEditor","customEditor","DefaultEditor","editProps","preventExitEditMessage","td","targetElement","handleMouseOver","persist","handleMouseOut","clientX","clientY","editorChildren","kendo_react_tooltip_dist_es_main","el","anchorElement","openDelay","additionalProps","dirtyFields","errorFields","preventEnterEditMessage","customCssClass","rowData","inEdit","saveValue","onKeyPress","onBlur","selectedItems","Set","pageNumber","deletedItems","dummyId","expandToggledFields","pristineData","size","updateSelectedItems","firstSelectedItem","isSelectedItemChanged","updatedSelectedItems","idField","updatedItem","updateDataResult","_filter","newDataState","errStr","saveData","validate","dirtyData","dirty","saveRequest","postUrl","dataObj","deleteRequest","deleteUrl","setPageDirtyValue","onSaveComplete","forceRender","cancelChanges","columnsState","addNew","defaults","getDefaultValues","getDummyId","newData","firstEditableField","getFirstEditableColumnField","onAddNew","selectChange","addNewDataItem","removeDataItem","expandChange","collapseGroups","searchQuerySubmitted","updatedData","oldValue","errorMessages","navigateOnTab","editingItem","editableColumns","currentColumnIndex","export","pageChange","page","isDirty","performSearchFilter","searchQueryLower","updateDataItem","newDataItem","_data","selectMode","selectedField","has","isGroup","onDataUpdate","allNewData","dataStateChange","onSelectChange","from","lastSelectedIndex","nativeEvent","shiftKey","getSelection","removeAllRanges","selection","empty","arrSelectedItems","_loop","ctrlKey","selected","select","onEnterEdit","editItemArr","preventExitEdit","onExitEdit","aObject","bObject","isColumnShow","prevColumnState","getColumnsByField","getColumnListForColumnMenu","columnsChanged","onbeforeunload","returnValue","disableNavigationWarning","setChildPageDirty","validationPassed","validationRules","rule","aggregates","when","onSaveData","sortable"],"mappings":"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","file":"static/js/main.1dc76e66.chunk.js","sourcesContent":["import $ from 'jquery';\r\nimport React from 'react';\r\nimport { formatDate } from '@telerik/kendo-intl';\r\nimport { playAudio } from '../../Utils/AudioUtil';\r\nimport Util from '../../Utils/Util';\r\nimport { shortFormatXM36hour, formatMinutes } from '../../Utils/DateUtil';\r\n\r\nexport function DateTime(shortDateFormat, shortTimeFormat) {\r\n let dateFormat = ''\r\n if (shortTimeFormat) {\r\n dateFormat = shortDateFormat + ' ' + shortTimeFormat.replace('tt', 'a');\r\n }\r\n \r\n return function (dataItem, field) { \r\n const dataValue = dataItem[field];\r\n if (dataValue) return formatDate(dataValue, dateFormat);\r\n return '';\r\n }\r\n}\r\n\r\nexport function Date(shortDateFormat) {\r\n return function (dataItem, field) {\r\n const dataValue = dataItem[field];\r\n if (dataValue) return formatDate(dataValue, `${shortDateFormat}`);\r\n return '';\r\n }\r\n}\r\n\r\nexport function Time(shortTimeFormat) {\r\n return function (dataItem, field) {\r\n const timeFormat = shortTimeFormat.indexOf(\"t\") !== -1 ? 't' : shortTimeFormat;\r\n const dataValue = dataItem[field];\r\n if (dataValue) return formatDate(dataValue, `${timeFormat}`);\r\n return '';\r\n }\r\n}\r\n\r\nexport function roundToPrecision(precision) {\r\n return function (dataItem, field) {\r\n const dataValue = dataItem[field]; \r\n if (dataValue) return Util.roundToPrecision(dataValue, precision);\r\n return '';\r\n }\r\n}\r\n\r\nexport function Color() {\r\n return function (dataItem, field) {\r\n const dataValue = dataItem[field];\r\n if (dataValue) return  \r\n return '';\r\n }\r\n}\r\n //Used for fields where the value in the field is an ID but we need to display the associated string (e.g. the field value is the vehicle ID but we want to display the vehicle name)\r\nexport function Enum(data, dataValueField, dataTextField, inheritanceCallback) {\r\n return function (dataItem, field) {\r\n let dataValue = dataItem[field];\r\n let isInherited = false;\r\n if (!dataValue && inheritanceCallback) {\r\n dataValue = inheritanceCallback(dataItem, field, data);\r\n isInherited = true;\r\n }\r\n\r\n let listData = data;\r\n if (typeof data === 'function') listData = data(dataItem);\r\n\r\n if (!listData) return '';\r\n\r\n let searchedData = listData.filter((d) => d[dataValueField] === dataValue);\r\n if (searchedData.length > 0) return isInherited ? {searchedData[0][dataTextField]} : searchedData[0][dataTextField];\r\n return '';\r\n }\r\n}\r\n\r\n//Used for fields where the user can select multiple values and they're stored in a comma-separated string\r\nexport function CSV(data, dataValueField, dataTextField) {\r\n return function (dataItem, field) {\r\n const dataValue = $.isArray(dataItem[field]) ? dataItem[field].join(',') : dataItem[field];\r\n if (!dataValue || dataValue.length < 1) return '';\r\n let splitStr = dataValue.split(',').filter((s) => !!s);\r\n if (data && dataValueField && dataTextField) {\r\n //Lookup values\r\n splitStr = splitStr.map((val) => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (val && data[i][dataValueField] === parseInt(val)) return data[i][dataTextField];\r\n }\r\n return '';\r\n });\r\n }\r\n return splitStr.join(', ');\r\n }\r\n}\r\n\r\nexport function YesNoBinary(inheritanceCallback) {\r\n return function (dataItem, field, data) {\r\n const dataValue = dataItem[field];\r\n if (dataValue && (dataValue === 1 || dataValue === true)) return 'Yes';\r\n if (inheritanceCallback && (dataValue === null || dataValue < 0)) return {inheritanceCallback(dataItem, field, data) ? 'Yes' : 'No'}\r\n return 'No';\r\n }\r\n}\r\n\r\nexport function XM36HourTime(shortTimeFormat, baseDateField) {\r\n return function (dataItem, field) {\r\n return shortFormatXM36hour(dataItem[field], shortTimeFormat, dataItem[baseDateField]);\r\n }\r\n}\r\n\r\nexport function FormatMinutes() {\r\n return function (dataItem, field) {\r\n return formatMinutes(dataItem[field]);\r\n }\r\n}\r\n\r\nexport function AudioField(audioCallback, speechSynthesizerRate, smiMapService, inheritanceCallback) {\r\n return function (dataItem, field, data) {\r\n\r\n const triggerPlayAudio = function (event) {\r\n event.stopPropagation();\r\n const playButton = event.target;\r\n playButton.classList.add('loading');\r\n const audio = audioCallback(dataItem, field, data);\r\n const failsafeTimeout = setTimeout(() => playButton.classList.remove('loading'), 45000); //Always remove loading class after 45 seconds even if audio hasn't loaded\r\n playAudio(audio, speechSynthesizerRate, smiMapService, () => { playButton.classList.remove('loading'); clearTimeout(failsafeTimeout); });\r\n }\r\n\r\n let dataValue = dataItem[field];\r\n if (!dataValue && inheritanceCallback) {\r\n dataValue = inheritanceCallback(dataItem, field, data);\r\n if (dataValue) dataValue = {dataValue}\r\n }\r\n\r\n if (dataValue) {\r\n return (\r\n
\r\n
{dataValue}
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n }\r\n}","import Util from \"./Utils/Util\";\r\n\r\n\r\n export function sortNaturalAlphaNumeric (a, b, field) {\r\n if (Util.isNullOrUndefined(a) && !Util.isNullOrUndefined(b)) return -1;\r\n if (Util.isNullOrUndefined(b) && !Util.isNullOrUndefined(a)) return 1;\r\n if (Util.isNullOrUndefined(a) && Util.isNullOrUndefined(b)) return 0;\r\n var ax = (field ? a[field] : a);\r\n var bx = (field ? b[field] : b);\r\n //check that its value in its field is null\r\n if (Util.isNullOrUndefined(ax) && !Util.isNullOrUndefined(bx)) return -1;\r\n if (Util.isNullOrUndefined(bx) && !Util.isNullOrUndefined(ax)) return 1;\r\n if (Util.isNullOrUndefined(ax) && Util.isNullOrUndefined(bx)) return 0;\r\n ax = ax.toLowerCase();\r\n bx = bx.toLowerCase();\r\n //Make case-insensitive\r\n var t = 1;\r\n var f = t * -1;\r\n\r\n for (var i = 0; i < Math.max(ax.length, bx.length); i++) {\r\n if (ax[i] === undefined) return f;\r\n else if (bx[i] === undefined) return t;\r\n else {\r\n var as = ax.substr(i), bs = bx.substr(i);\r\n var an = parseInt(as), bn = parseInt(bs);\r\n if (!isNaN(an) && !isNaN(bn)) {\r\n if (an === bn) {\r\n i = i + an.toString().length - 1;\r\n continue;\r\n }\r\n return an > bn ? t : f;\r\n } else {\r\n if (ax[i] === bx[i])\r\n continue;\r\n return ax[i] > bx[i] ? t : f;\r\n }\r\n }\r\n }\r\n return 0;\r\n }\r\n","export const MapActionTypes = {\r\n SELECT_MULTIPLE_STOPS: 'MAP/SELECT_MULTIPLE_STOPS', \r\n SELECT_ROUTE: 'MAP/SELECT_ROUTE',\r\n SELECT_STOP: 'MAP/SELECT_STOP', \r\n ADD_MARKER_GROUP: 'MAP/ADD_MARKER_GROUP',\r\n REMOVE_MARKER_GROUP: 'MAP/REMOVE_MARKER_GROUP',\r\n ADD_TRIP_DATA: 'MAP/ADD_TRIP_DATA',\r\n VEHICLE_POSITION: 'MAP/VEHICLE_POSITION',\r\n VEHICLE_FIXTAKEN:'MAP/VEHICLE_FIXTAKEN',\r\n VEHICLE_AUDIT_LOGS: 'MAP/VEHICLE_AUDIT_LOGS',\r\n CLUSTER_MARKERS: 'MAP/CLUSTER_MARKERS',\r\n VEHICLE_MARKER: 'MAP/VEHICLE_MARKER',\r\n HISTORY_ROUTE_LINES: 'MAP/HISTORY_ROUTE_LINES',\r\n STOP_MARKERS: 'MAP/STOP_MARKERS',\r\n ROUTE_LINES: 'MAP/ROUTE_LINES',\r\n CIRCLE_MARKERS: 'MAP/CIRCLE_MARKERS',\r\n MAP_ZOOM_POSITION:'MAP/MAP_ZOOM_POSITION',\r\n BOUND_POSITION: 'MAP/BOUND_POSITION',\r\n POLYGONS: 'MAP/POLYGONS',\r\n DRAWABLE_ROUTES: 'MAP/DRAWABLE_ROUTES',\r\n CLEAR_MAP: 'MAP/CLEAR_MAP',\r\n SET_MAP_REF:'MAP/REF'\r\n}\r\n\r\nexport const initialState = {\r\n SelectedStop: null,\r\n Route: null,\r\n MarkerGroups: [],\r\n TripPoints: [],\r\n VehiclePosition: null,\r\n VehicleFixTaken: null,\r\n VehicleAuditLogs: [],\r\n ClusterMarkers: null,\r\n VehicleMarker: null,\r\n HistoryRouteLines: null,\r\n StopMarkers: null,\r\n RouteLines: null,\r\n CircleMarkers: null,\r\n MapZoomPosition: null,\r\n BoundPosition: [],\r\n Polygons: null,\r\n Stops: null,\r\n MapRef: null\r\n}\r\n\r\n// Reducer\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case MapActionTypes.SELECT_MULTIPLE_STOPS:\r\n return { ...state, Stops: action.stops };\r\n case MapActionTypes.SELECT_ROUTE: \r\n return { ...state, Route: action.route };\r\n case MapActionTypes.SELECT_STOP:\r\n return { ...state, SelectedStop: action.stop };\r\n case MapActionTypes.ADD_MARKER_GROUP: \r\n return { ...state, MarkerGroups: state.MarkerGroups.push({ Name: action.name, Markers: action.markers, ShouldZoom: action.shouldZoom }) };\r\n case MapActionTypes.REMOVE_MARKER_GROUP:\r\n return { ...state, MarkerGroups: state.MarkerGroups.filter(function (g) { return g.Name !== action.name }) };\r\n case MapActionTypes.ADD_TRIP_DATA:\r\n return { ...state, TripPoints: action.tripData };\r\n case MapActionTypes.VEHICLE_POSITION:\r\n return { ...state, VehiclePosition: action.vehiclePosition };\r\n case MapActionTypes.VEHICLE_FIXTAKEN:\r\n return { ...state, VehicleFixTaken: action.vehicleFixTaken };\r\n case MapActionTypes.VEHICLE_AUDIT_LOGS:\r\n return { ...state, VehicleAuditLogs: action.vehicleAuditLogs };\r\n case MapActionTypes.CLUSTER_MARKERS:\r\n return { ...state, ClusterMarkers: action.clusterMarkers };\r\n case MapActionTypes.VEHICLE_MARKER:\r\n return { ...state, VehicleMarker: action.vehicleMarker };\r\n case MapActionTypes.HISTORY_ROUTE_LINES:\r\n return { ...state, HistoryRouteLines: action.historyRouteLines };\r\n case MapActionTypes.STOP_MARKERS:\r\n return { ...state, StopMarkers: action.stopMarkers };\r\n case MapActionTypes.ROUTE_LINES:\r\n return { ...state, RouteLines: action.routeLines };\r\n case MapActionTypes.CIRCLE_MARKERS:\r\n return { ...state, CircleMarkers: action.circleMarkers };\r\n case MapActionTypes.MAP_ZOOM_POSITION:\r\n return { ...state, MapZoomPosition: action.zoomPosition };\r\n case MapActionTypes.BOUND_POSITION:\r\n return { ...state, BoundPosition: action.boundPosition };\r\n case MapActionTypes.POLYGONS: \r\n return { ...state, Polygons: action.polygons };\r\n case MapActionTypes.DRAWABLE_ROUTES:\r\n return { ...state, DrawableRoutes: action.drawableRoutes };\r\n case MapActionTypes.SET_MAP_REF:\r\n return { ...state, MapRef: action.mapRef};\r\n case MapActionTypes.CLEAR_MAP:\r\n return { ...initialState, MapRef: state.MapRef};\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n//Action Creators\r\nexport const actions = {\r\n setMultipleStops: (stops) => ({ type: MapActionTypes.SELECT_MULTIPLE_STOPS, stops }),\r\n setRoute: (route) => ({ type: MapActionTypes.SELECT_ROUTE, route }),\r\n setSeletedStop: (stop) => ({ type: MapActionTypes.SELECT_STOP, stop }),\r\n addMarkerGroup: (name, markers, shouldZoom) => ({ type: MapActionTypes.ADD_MARKER_GROUP, name, markers, shouldZoom }),\r\n removeMarkerGroup: (name) => ({ type: MapActionTypes.REMOVE_MARKER_GROUP, name}),\r\n addTripData: (tripData) => ({ type: MapActionTypes.tripData, tripData }),\r\n setVehiclePosition: (vehiclePosition) => ({ type: MapActionTypes.VEHICLE_POSITION, vehiclePosition }),\r\n setVehicleFixTaken: (vehicleFixTaken) => ({ type: MapActionTypes.VEHICLE_FIXTAKEN, vehicleFixTaken }),\r\n setVehicleAuditLogs: (vehicleAuditLogs) => ({ type: MapActionTypes.VEHICLE_AUDIT_LOGS, vehicleAuditLogs }),\r\n setClusterMarkers: (clusterMarkers) => ({ type: MapActionTypes.CLUSTER_MARKERS, clusterMarkers }),\r\n setVehicleMarker: (vehicleMarker) => ({ type: MapActionTypes.VEHICLE_MARKER, vehicleMarker }),\r\n setHistoryRouteLines: (historyRouteLines) => ({ type: MapActionTypes.HISTORY_ROUTE_LINES, historyRouteLines }),\r\n setStopMarkers: (stopMarkers) => ({ type: MapActionTypes.STOP_MARKERS, stopMarkers }),\r\n setRouteLines: (routeLines) => ({ type: MapActionTypes.ROUTE_LINES, routeLines }),\r\n setCircleMarkers: (circleMarkers) => ({ type: MapActionTypes.CIRCLE_MARKERS, circleMarkers }),\r\n setMapZoomPosition: (zoomPosition) => ({ type: MapActionTypes.MAP_ZOOM_POSITION, zoomPosition }),\r\n setBoundPosition: (boundPosition) => ({ type: MapActionTypes.BOUND_POSITION, boundPosition }),\r\n setPolygons: (polygons) => ({ type: MapActionTypes.POLYGONS, polygons }),\r\n setDrawableRoutes: (drawableRoutes) => ({ type: MapActionTypes.DRAWABLE_ROUTES, drawableRoutes }),\r\n setMapRef: (mapRef) => ({ type: MapActionTypes.SET_MAP_REF, mapRef }),\r\n clearMap: () => ({ type: MapActionTypes.CLEAR_MAP})\r\n}","import React from 'react';\r\nimport axios from 'axios';\r\nimport '../../styles/MobileClient/SwitchCommunity.scss';\r\nimport { Router, Link } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport MainPage from '../../components/MainPage/MainPage';\r\nimport HardwareRegistrationPage from '../Mobile/HardwareRegistrationPage';\r\n\r\nexport default class SwitchCommunity extends React.Component {\r\n state = {\r\n communityList: [],\r\n loading: false\r\n };\r\n\r\n loggedInUser = '';\r\n\r\n componentDidMount() {\r\n //Load sitemap and get list of communities from it\r\n\r\n var currentUser = JSON.parse(localStorage.getItem('user'));\r\n this.loggedInUser = currentUser.username;\r\n console.log(this.loggedInUser);\r\n\r\n axios.get('/api/Menu').then(result => {\r\n const sitemap = result.data.menuTree.subMenu;\r\n const communityItem = sitemap.find(n => n.title == \"COMMUNITY\");\r\n if (communityItem) {\r\n this.setState({ communityList: communityItem.subMenu });\r\n }\r\n })\r\n .catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n }\r\n\r\n headers= {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n \"Access-Control-Allow-Origin\": \"*\"\r\n }\r\n\r\n\r\n goToCommunity(url) {\r\n this.setState({ loading: true });\r\n const parsedUrl = new URL(url);\r\n axios.get('/api/SwitchCommunity?serverName=' + encodeURIComponent(parsedUrl.hostname), { headers: this.headers }).then(response => {\r\n const ticket = response.data;\r\n if (ticket && /[A-Fa-f0-9]{64}/.test(ticket)) {\r\n const username = this.loggedInUser;\r\n window.location.href = `${url}?ticket=${encodeURIComponent(ticket)}&username=${encodeURIComponent(username)}&IsMobileLogin=True`;\r\n }\r\n else {\r\n alert(\"Unable to authenticate community. Please check configuration.\");\r\n }\r\n }).catch(err => {\r\n alert(\"Unable to authenticate community. Please check configuration.\");\r\n console.log(err);\r\n })\r\n .then(() => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n baseUrl = \"/\"\r\n history = createBrowserHistory({ basename: this.baseUrl });\r\n\r\n updatePage() {\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n render() {\r\n\r\n if (window.location.pathname == \"/Maintain/Hardware/Registration\") {\r\n return \r\n }\r\n else if (window.location.pathname == \"/Mobile/HardwareRegistrationPage\") {\r\n return \r\n }\r\n\r\n let communities = this.state.communityList.map((c, i) =>

this.goToCommunity(c.url)}>{c.title}

);\r\n\r\n return (\r\n
\r\n \r\n Dispatch Portal\r\n
\r\n Hardware Registration\r\n
\r\n Hardware Assign\r\n \r\n\r\n
\r\n
\r\n

Select Community

\r\n {communities}\r\n
\r\n \r\n Go to Dispatch Portal\r\n
\r\n
\r\n Go to Hardware Registration\r\n
\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { DatePicker, DateTimePicker, TimePicker } from '@progress/kendo-react-dateinputs';\r\nimport { Popup } from '@progress/kendo-react-popup';\r\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\r\n\r\n\r\nexport function Dropdown(data, dataValueField, dataTextField, operator) {\r\n if (!operator) operator = 'eq';\r\n return (props) => {\r\n let dataValue = props.value;\r\n\r\n //If dataValueField was specified, then the dropdown data is an array of objects and we need to pass the matching object to kendo in order for it to be selected\r\n if (dataValueField && typeof dataValue !== 'undefined' && dataValue !== null) {\r\n const dataSearchResult = data.filter(i => i[dataValueField] === dataValue);\r\n if (dataSearchResult.length > 0) dataValue = dataSearchResult[0];\r\n }\r\n\r\n return (\r\n
\r\n {\r\n let val = event.target.value;\r\n if (typeof val === 'object') val = val[dataValueField];\r\n if (!isNaN(val)) val = parseInt(val);\r\n props.onChange({\r\n value: val || val === 0 ? val : '',\r\n operator: val || val === 0 ? operator : '',\r\n syntheticEvent: event\r\n });\r\n }}\r\n value={dataValue}\r\n textField={dataTextField}\r\n dataItemKey={dataValueField}\r\n />\r\n {\r\n event.preventDefault();\r\n props.onChange({\r\n value: '',\r\n operator: '',\r\n syntheticEvent: event\r\n });\r\n }}\r\n >\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport function YesNoBinary() {\r\n return Dropdown([{ val: 1, text: 'Yes' }, { val: 0, text: 'No' }], 'val', 'text', binaryFilter);\r\n}\r\n\r\nexport function binaryFilter(current, value) { \r\n if (!value && value !== 0) return true;\r\n if ((!value || value === '0') && (!current || current === '0')) return true;\r\n if ((value && value !== '0') && (current && current !== '0')) return true;\r\n return false;\r\n}\r\n\r\n//Create dropdown where use can select from the selectable options, then filter to show all items containing that value\r\nexport function CSV(data, dataValueField, dataTextField) {\r\n return SelectList(data, dataValueField, dataTextField, (cellValue, filterValue) => {\r\n for (let i = 0; i < filterValue.length; i++) { \r\n const escapedValue = filterValue[i].toString().replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n const regex = new RegExp(`(,|^)${escapedValue}(,|$)`, 'i');\r\n if (regex.test(cellValue)) return true;\r\n }\r\n return false;\r\n });\r\n}\r\n\r\nexport function SelectList(data, dataValueField, dataTextField, operator) {\r\n if (!operator) operator = (cellValue, filterValue) => { \r\n return filterValue.findIndex(x => x == cellValue) !== -1;\r\n };\r\n\r\n return class extends React.Component {\r\n\r\n state = {\r\n shown: false,\r\n selectedOptions: []\r\n }\r\n\r\n togglePopup = () => {\r\n this.setState({ shown: !this.state.shown });\r\n }\r\n\r\n checkboxChange = (event) => {\r\n const isChecked = event.target.checked;\r\n const value = isNaN(event.target.value) ? event.target.value : parseInt(event.target.value);\r\n const selectedIndex = this.state.selectedOptions.indexOf(value);\r\n const newSelectedOptions = this.state.selectedOptions.slice(0);\r\n if (isChecked && selectedIndex === -1) newSelectedOptions.push(value); // If a checkbox was checked, add its value to the array of selected items\r\n else if (!isChecked && selectedIndex !== -1) newSelectedOptions.splice(selectedIndex, 1); // If a checkbox was unchecked, remove it\r\n this.setState({ selectedOptions: newSelectedOptions });\r\n this.propagateFilter();\r\n }\r\n\r\n clearFilter = () => {\r\n this.setState({ selectedOptions: [] });\r\n this.propagateFilter();\r\n }\r\n\r\n propagateFilter = () => {\r\n setTimeout(() => {\r\n if (this.state.selectedOptions.length > 0) {\r\n this.props.onChange({\r\n value: this.state.selectedOptions,\r\n operator: operator\r\n });\r\n }\r\n else {\r\n //Clear filter\r\n this.props.onChange({\r\n value: '',\r\n operator: ''\r\n });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (!data || data.length === 0) return null;\r\n\r\n const selectedOptionsText = [];\r\n data.forEach(d => {\r\n const value = dataValueField ? d[dataValueField] : d;\r\n const text = dataTextField ? d[dataTextField] : d;\r\n if (this.state.selectedOptions.findIndex(x => x == value) !== -1) selectedOptionsText.push(text);\r\n });\r\n\r\n const checkboxList = data.map((d, i) => {\r\n const value = dataValueField ? d[dataValueField] : d;\r\n const text = dataTextField ? d[dataTextField] : d;\r\n return

;\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n {checkboxList}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function Date(dateFormat) {\r\n return class DateFilter extends Component {\r\n\r\n onChange = (event) => {\r\n this.props.onChange({\r\n value: event.target.value,\r\n operator: dateIsInRange,\r\n syntheticEvent: event\r\n });\r\n }\r\n\r\n render() {\r\n const value = this.props.value || null;\r\n\r\n return (\r\n
\r\n \r\n\r\n {\r\n event.preventDefault();\r\n this.props.onChange({\r\n value: null,\r\n operator: '',\r\n syntheticEvent: event\r\n });\r\n }}>\r\n\r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function Time(shortTimeFormat) {\r\n const timeFormat = shortTimeFormat.indexOf(\"t\") !== -1 ? 't' : shortTimeFormat;\r\n\r\n return class TimeFilter extends Component {\r\n\r\n onChange = (event) => {\r\n this.props.onChange({\r\n value: event.target.value,\r\n operator: isTimeSame,\r\n syntheticEvent: event\r\n });\r\n }\r\n\r\n render() {\r\n const value = this.props.value || null;\r\n\r\n return (\r\n
\r\n \r\n\r\n {\r\n event.preventDefault();\r\n this.props.onChange({\r\n value: null,\r\n operator: '',\r\n syntheticEvent: event\r\n });\r\n }}>\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function dateIsInRange(current, value) {\r\n if (!value) return true;\r\n if (!current) return false;\r\n\r\n let currentDate = new window.Date(current);\r\n let selectedDate = new window.Date(value);\r\n\r\n return currentDate.getFullYear() === selectedDate.getFullYear() && currentDate.getMonth() === selectedDate.getMonth()\r\n && currentDate.getDate() === selectedDate.getDate();\r\n}\r\n\r\nfunction isTimeSame(current, value) {\r\n\r\n if (!value) return true;\r\n if (!current) return false;\r\n\r\n let currentDate = new window.Date(current);\r\n let selectedDate = new window.Date(value);\r\n\r\n return currentDate.getHours() === selectedDate.getHours() && currentDate.getMinutes() === selectedDate.getMinutes(); \r\n}\r\n\r\nexport function DateTimeRange(shortDateFormat, shortTimeFormat) {\r\n const formatStr = shortDateFormat + ' ' + shortTimeFormat.replace('tt', 'a');\r\n return class DateTimeRangeFilterCell extends Component {\r\n\r\n static inRange(current, values) {\r\n return (values.min === null || current >= values.min) &&\r\n (values.max === null || current <= values.max);\r\n }\r\n\r\n clear = (event) => {\r\n event.preventDefault();\r\n this.props.onChange({ value: null, operator: '', syntheticEvent: event });\r\n }\r\n\r\n setMin = (event) => {\r\n console.log(event.target.value);\r\n this.props.onChange({\r\n value: { min: event.target.value, max: this.props.value ? this.props.value.max : null },\r\n operator: DateTimeRangeFilterCell.inRange,\r\n syntheticEvent: event\r\n });\r\n }\r\n\r\n setMax = (event) => {\r\n this.props.onChange({\r\n value: { min: this.props.value ? this.props.value.min : null, max: event.target.value },\r\n operator: DateTimeRangeFilterCell.inRange,\r\n syntheticEvent: event\r\n });\r\n }\r\n\r\n render() {\r\n let value = this.props.value;\r\n if (!value) value = null;\r\n return (\r\n
\r\n
\r\n \r\n To\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function LabeledNumberFilter(label, width) {\r\n return class NumberFilter extends Component {\r\n\r\n onChange = event => { \r\n let _operator = 'eq';\r\n if (!event.target.value) _operator = '';\r\n this.props.onChange({\r\n value: event.target.value,\r\n operator: _operator,\r\n syntheticEvent: event\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n event.preventDefault();\r\n this.props.onChange({\r\n value: '',\r\n operator: '',\r\n syntheticEvent: event\r\n });\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n };\r\n }\r\n}","import './SMIActionColumn.scss';\r\n\r\nconst SMIActionColumn = () => { };\r\nSMIActionColumn.displayName = \"KendoReactGridColumn\";\r\nSMIActionColumn.defaultProps = {\r\n title:\"Action Column\",\r\n field: \"_actionColumn\",\r\n filterable: false,\r\n groupable: false \r\n}\r\n\r\nexport default SMIActionColumn;","import Util from './Util';\r\n\r\nconst SortHelper = {\r\n /* Natural Sort Algorithm for column sorting. For example, rows with alphanumeric strings will show as follows:\r\n * 1 instead of 1 (Right side is incorrect)\r\n * 2 ---> 2\r\n * 3 ---> 20\r\n * 20 ---> 3\r\n * abc6 ---> abc50\r\n * abc50 ---> abc6 \r\n */\r\n sortNaturalAlphaNumeric: function (a, b, field) {\r\n if (Util.isNullOrUndefined(a) && !Util.isNullOrUndefined(b)) return -1;\r\n if (Util.isNullOrUndefined(b) && !Util.isNullOrUndefined(a)) return 1;\r\n if (Util.isNullOrUndefined(a) && Util.isNullOrUndefined(b)) return 0;\r\n var ax = (field ? a[field] : a)\r\n var bx = (field ? b[field] : b)\r\n //check that its value in its field is null\r\n if (Util.isNullOrUndefined(ax) && !Util.isNullOrUndefined(bx)) return -1;\r\n if (Util.isNullOrUndefined(bx) && !Util.isNullOrUndefined(ax)) return 1;\r\n if (Util.isNullOrUndefined(ax) && Util.isNullOrUndefined(bx)) return 0;\r\n ax = ax.toLowerCase();\r\n bx = bx.toLowerCase();\r\n //Make case-insensitive\r\n var t = 1;\r\n var f = t * -1;\r\n\r\n for (var i = 0; i < Math.max(ax.length, bx.length); i++) {\r\n if (ax[i] === undefined) return f;\r\n else if (bx[i] === undefined) return t;\r\n else {\r\n var as = ax.substr(i), bs = bx.substr(i);\r\n var an = parseInt(as), bn = parseInt(bs);\r\n if (!isNaN(an) && !isNaN(bn)) {\r\n if (an === bn) {\r\n i = i + an.toString().length - 1;\r\n continue;\r\n }\r\n return an > bn ? t : f;\r\n } else {\r\n if (ax[i] === bx[i])\r\n continue;\r\n return ax[i] > bx[i] ? t : f;\r\n }\r\n }\r\n }\r\n return 0;\r\n },\r\n\r\n sortArrayNaturalAlphaNumeric: function (arr, field) {\r\n return arr.sort(function (a, b) {\r\n return SortHelper.sortNaturalAlphaNumeric(a, b, field);\r\n });\r\n }\r\n}\r\n\r\nexport default SortHelper;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIYAAAA2CAYAAAACs+HkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0E1MzkyQ0ExNzExMTFFMjlBNTBENzc3QzgxOUQwNTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0E1MzkyQ0IxNzExMTFFMjlBNTBENzc3QzgxOUQwNTEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QTRGNDhFQjE3MTExMUUyOUE1MEQ3NzdDODE5RDA1MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QTRGNDhFQzE3MTExMUUyOUE1MEQ3NzdDODE5RDA1MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PljTshgAAA+dSURBVHja7FsLXE3Z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\"","export function playAudio(audioSnippets, speechSynthesizerRate, smiMapService, onLoadedCallback) {\r\n if (!smiMapService) smiMapService = 'https://api.mapstrat.com';\r\n var rate = speechSynthesizerRate;\r\n if (!rate) rate = 0;\r\n var queryString = 'rate=' + rate + '&';\r\n for (var i = 0; i < audioSnippets.length; i++) {\r\n queryString += 'ttsRequests[' + i + '][text]=' + encodeURIComponent(audioSnippets[i].text) + '&ttsRequests[' + i + '][voice]=' + encodeURIComponent(audioSnippets[i].voice);\r\n if (i < (audioSnippets.length - 1)) queryString += '&';\r\n }\r\n var ttsUrl = smiMapService + '/api/TextToSpeech?' + queryString;\r\n let soundEmbedContainer = document.getElementById('soundEmbedContainer');\r\n if (!soundEmbedContainer) {\r\n soundEmbedContainer = document.createElement('div');\r\n soundEmbedContainer.id = 'soundEmbedContainer';\r\n soundEmbedContainer.style.visibility = 'hidden';\r\n soundEmbedContainer.style.position = 'absolute';\r\n soundEmbedContainer.style.width = 0;\r\n soundEmbedContainer.style.height = 0;\r\n document.body.append(soundEmbedContainer);\r\n }\r\n\r\n // Clear any previously-created audio elements from the container\r\n while (soundEmbedContainer.firstChild) soundEmbedContainer.removeChild(soundEmbedContainer.firstChild);\r\n\r\n //Use HTML5 audio to play audio from API\r\n const soundEmbed = document.createElement(\"audio\");\r\n soundEmbedContainer.append(soundEmbed);\r\n soundEmbed.onplaying = function () {\r\n if (typeof onLoadedCallback === 'function') onLoadedCallback();\r\n }\r\n soundEmbed.pause();\r\n soundEmbed.src = ttsUrl;\r\n setTimeout(function () {\r\n //document.getElementById('audioPlayer').load();\r\n soundEmbed.play();\r\n }, 10);\r\n \r\n}","import './HardwareAssignment.scss';\r\nimport axios from 'axios';\r\nimport React, { Component } from 'react';\r\nimport sortHelper from '../../Utils/SortHelper';\r\nimport { Router, Link } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport MainPage from '../../components/MainPage/MainPage';\r\nimport SwitchCommunity from '../Mobile/SwitchCommunity';\r\nimport HardwareRegistration from '../Mobile/HardwareRegistrationPage';\r\n\r\nexport default class HardwareAssignment extends Component {\r\n\r\n state = {\r\n assemblyStatuses: [],\r\n hardwares: [],\r\n unassignedVehicleList: [],\r\n assignableVehicles: [],\r\n selectedHardware: -1,\r\n selectedVehicle: -1,\r\n canTestSignSound: false,\r\n sendingSignSoundCommand: false \r\n };\r\n\r\n history = createBrowserHistory({ basename: this.baseUrl });\r\n\r\n componentDidMount() {\r\n \r\n\r\n //Load data from APIs\r\n axios.get('/api/Hardware').then(response => {\r\n\r\n let _hardwares = response.data;\r\n _hardwares.filter(h => !h.vehicleName).forEach(h => { h.vehicleName = 'Unassigned (' + h.hardwareId + ')' });\r\n //this.hardware = _hardwares.sort((a, b) => a.hardwareId - b.hardwareId);\r\n let formattedHardwares = _hardwares.filter(h => h.hardwareId > 0).map(h => ({ id: h.hardwareId, name: h.hardwareId + ' (' + (h.vehicleName ? h.vehicleName.split('(')[0].trim() : 'No Vehicle') + ')', vehicleId: h.vehicleID }));\r\n \r\n\r\n axios.get('/api/HardwareVehicle').then(hVehicleResponse => {\r\n let _hVehicle = hVehicleResponse.data.sort((a, b) => sortHelper.sortNaturalAlphaNumeric(a, b, 'vehicleName'));\r\n let formattedHVehicles = _hVehicle.map(h => ({ vehicleId: h.vehicleID, name: h.vehicleName }));\r\n\r\n this.setState({ unassignedVehicleList: formattedHVehicles, hardwares: formattedHardwares });\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401) window.location = '/';\r\n });\r\n\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401) window.location = '/';\r\n });\r\n\r\n\r\n\r\n axios.get(\"/api/HasOperation?operation=HardwareCommandSignSound\").then(response => {\r\n if (response.data) this.setState({ canTestSignSound: true });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.unassignedVehicleList !== this.state.unassignedVehicleList || prevState.hardwares !== this.state.hardwares) {\r\n const assignableVehicles = this.state.hardwares.filter(v => !!v.vehicleId).concat(this.state.unassignedVehicleList).map(v => ({ id: v.vehicleId, name: v.name.indexOf('(') !== -1 ? v.name.split('(')[1].split(')')[0] : v.name })).sort((a, b) => sortHelper.sortNaturalAlphaNumeric(a, b, 'name'));\r\n this.setState({ assignableVehicles: assignableVehicles });\r\n }\r\n }\r\n\r\n hardwareSelected = (e) => {\r\n let selectedHardware = this.state.hardwares.find(h => h.id == e.target.value);\r\n this.setState({ selectedHardware: e.target.value, selectedVehicle: selectedHardware.vehicleId || -1 });\r\n }\r\n\r\n saveClicked() {\r\n if (this.state.isSaving) return;\r\n this.setState({ isSaving: true });\r\n axios.post('/api/HWAssign', { hardwareId: this.state.selectedHardware, vehicleId: this.state.selectedVehicle == -1 ? null : this.state.selectedVehicle }).then((r) => {\r\n alert('Hardware updated successfully');\r\n window.location.reload();\r\n }).catch(function (e) {\r\n this.setState({ isSaving: false });\r\n if (e && e.response && e.response.status === 401)\r\n window.location = '/';\r\n });\r\n }\r\n\r\n testSignSound = () => {\r\n if (this.state.sendingSignSoundCommand) return;\r\n\r\n this.setState({ sendingSignSoundCommand: true });\r\n axios.post('/api/HSSendCommand', {\r\n commandParams: { repetitions: \"5\" },\r\n commandType: \"testSignSound\",\r\n hardwareIds: [this.state.selectedHardware]\r\n }).then(response => {\r\n if (response.data) alert('Test sign/sound command sent');\r\n else alert('Error sending test sign/sound command');\r\n })\r\n .catch(err => {\r\n alert('Error sending test sign/sound command');\r\n })\r\n .then(() => this.setState({ sendingSignSoundCommand: false }));\r\n }\r\n\r\n unassignedVehicleChnaged(e) {\r\n this.setState({ unassignedVehicle: e.target.value });\r\n }\r\n\r\n\r\n notesUpdated(e) {\r\n this.setState({ notes: e.target.value });\r\n }\r\n\r\n generateAssemblyOption(item) {\r\n if (!item.children || !item.children.length) return \r\n else {\r\n let subOptions = item.children.map(i => this.generateAssemblyOption(i));\r\n return (\r\n \r\n {subOptions}\r\n \r\n );\r\n }\r\n }\r\n\r\n selectedVehicleChanged = (e) => {\r\n this.setState({ selectedVehicle: e.target.value });\r\n }\r\n\r\n updatePage() {\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n render() {\r\n\r\n if (window.location.pathname == \"/Maintain/Hardware/Registration\") {\r\n return \r\n }\r\n else if (window.location.pathname == \"/Mobile/SwitchCommunity\") {\r\n return \r\n }\r\n else if (window.location.pathname == '/Mobile/HardwareRegistration')\r\n return \r\n\r\n const hardwareOptions = this.state.hardwares.map(v => );\r\n\r\n const vehicleOptions = this.state.assignableVehicles.map(v => );\r\n\r\n return (\r\n
\r\n
\r\n \r\n Dispatch Portal\r\n
\r\n Hardware Registration\r\n
\r\n Chnage Community\r\n \r\n
\r\n\r\n

Hardware Assignment

\r\n
\r\n Hardware\r\n \r\n {this.state.selectedHardware > 0 && this.state.canTestSignSound && }\r\n
\r\n
0 ? 'block' : 'none' }}>\r\n
\r\n
\r\n Vehicle\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import './HardwareAssignment.scss';\r\n\r\nimport React from 'react';\r\nimport axios from 'axios';\r\nimport { sortNaturalAlphaNumeric } from \"../../GridHelper\";\r\nimport { Router, Link } from 'react-router-dom';\r\nimport '../../styles/MobileClient/HardwareRegistrationPage.scss';\r\nimport { createBrowserHistory } from 'history';\r\nimport MainPage from '../../components/MainPage/MainPage';\r\nimport SwitchCommunity from '../Mobile/SwitchCommunity';\r\nimport HardwareAssignment from '../Mobile/HardwareAssignment';\r\n\r\nexport default class HardwareRegistrationPage extends React.Component {\r\n\r\n state = {\r\n selectedHardware: {},\r\n notes: '',\r\n assemblyStatuses: [],\r\n vehicles: [],\r\n hardware: [],\r\n hardwareVehicle: null,\r\n unassignedVehicleList: [],\r\n selectedVehicle: -1,\r\n unassignedVehicle: -1,\r\n hasCommunities: false,\r\n updatePage: false\r\n };\r\n hardware = null;\r\n hardwareVehicle = null;\r\n\r\n componentDidMount() {\r\n //Load data from APIs\r\n axios.get('/api/Hardware').then(response => {\r\n let _hardware = response.data;\r\n _hardware.filter(h => !h.vehicleName).forEach(h => { h.vehicleName = 'Unassigned (' + h.hardwareId + ')' });\r\n _hardware.sort((a, b) => sortNaturalAlphaNumeric(a, b, 'vehicleName'));\r\n let _vehicles = _hardware.filter(h => h.hardwareId > 0).map(h => ({ id: h.hardwareId, name: h.vehicleName }))\r\n this.setState({ vehicles: _vehicles, hardware: _hardware });\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n\r\n axios.get('/api/HardwareVehicle').then(response => {\r\n let hardwareVehicles = response.data;\r\n hardwareVehicles.sort((a, b) => sortNaturalAlphaNumeric(a, b, 'vehicleName'));\r\n let _unassignedVehicleList = hardwareVehicles.map(h => ({ id: h.vehicleID, name: h.vehicleName }));\r\n this.setState({ unassignedVehicleList: _unassignedVehicleList});\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n \r\n\r\n axios.get('/api/HardwarePara?para').then(response => {\r\n let hardwarePara = response.data;\r\n let assemblyStatuses = hardwarePara.hardwareAssemblyStatuses;\r\n\r\n let getChildren = (assemblyStatusId, allAssemblyStatuses) => {\r\n return allAssemblyStatuses.filter(a => a.parentAssemblyStatusID == assemblyStatusId).map(a => ({\r\n id: a.hardwareAssemblyStatusID, name: a.description.trim(), children: getChildren(a.hardwareAssemblyStatusID, allAssemblyStatuses)\r\n }));\r\n }\r\n\r\n this.setState({ assemblyStatuses: getChildren(0, assemblyStatuses) });\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n\r\n axios.get('/api/Menu').then(result => {\r\n const sitemap = result.data.menuTree.subMenu;\r\n const communityItem = sitemap.find(n => n.title == \"COMMUNITY\");\r\n if (communityItem) {\r\n this.setState({ hasCommunities: true });\r\n }\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n }\r\n\r\n vehicleSelected(e) {\r\n let selectedHardware = this.state.hardware.find(h => h.hardwareId == e.target.value);\r\n this.setState({ selectedVehicle: e.target.value, selectedHardware: selectedHardware, notes: '', selectedAssemblyStatus: selectedHardware.hardwareAssemblyStatusID, unassignedVehicle: -1 });\r\n }\r\n\r\n assemblyStatusSelected(e) {\r\n this.setState({ selectedAssemblyStatus: e.target.value });\r\n }\r\n\r\n saveClicked() {\r\n if (this.state.isSaving) return;\r\n this.state.selectedHardware.hardwareAssemblyNotes = this.state.notes;\r\n this.state.selectedHardware.hardwareAssemblyStatusID = this.state.selectedAssemblyStatus;\r\n if (this.state.unassignedVehicle > 0) {\r\n this.state.selectedHardware.vehicleID = this.state.unassignedVehicle;\r\n //Update label of hardware in the hardware dropdown to reflect its new vehicle\r\n const unassignedVehicleIndex = this.state.unassignedVehicleList.findIndex(v => v.id == this.state.unassignedVehicle);\r\n const vehicleName = this.state.unassignedVehicleList[unassignedVehicleIndex].name;\r\n this.state.vehicles.find(v => v.id == this.state.selectedHardware.hardwareId).name = vehicleName + ' (' + this.state.selectedHardware.hardwareId + ')';\r\n //Remove vehicle hardware was assigned to from vehicles dropdown\r\n this.state.unassignedVehicleList.splice(unassignedVehicleIndex, 1);\r\n this.setState({ vehicles: this.state.vehicles.slice(0).sort((a, b) => sortNaturalAlphaNumeric(a, b, 'name')), unassignedVehicleList: this.state.unassignedVehicleList.slice(0), unassignedVehicle: -1 });\r\n }\r\n this.setState({ isSaving: true });\r\n axios.post('/api/HWRegister', [this.state.selectedHardware]).then((r) => {\r\n this.setState({ isSaving: false, notes: '' });\r\n alert('Hardware updated successfully');\r\n }).catch(function (e) {\r\n if (e && e.response && e.response.status === 401)\r\n window.location = window.location.origin;\r\n });\r\n }\r\n\r\n GoToDispatchPortal(e) {\r\n e.preventDefault();\r\n window.open(\"../../components/MainPage/MainPage\");\r\n }\r\n\r\n\r\n unassignedVehicleChnaged(e) {\r\n this.setState({ unassignedVehicle: e.target.value });\r\n }\r\n\r\n notesUpdated(e) {\r\n this.setState({ notes: e.target.value });\r\n }\r\n\r\n generateAssemblyOption(item) {\r\n if (!item.children || !item.children.length) return \r\n else {\r\n let subOptions = item.children.map(i => this.generateAssemblyOption(i));\r\n return (\r\n \r\n {subOptions}\r\n \r\n );\r\n }\r\n }\r\n baseUrl = \"/\"\r\n history = createBrowserHistory({ basename: this.baseUrl });\r\n\r\n updatePage() {\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n\r\n\r\n render() {\r\n\r\n if (window.location.pathname == \"/Maintain/Hardware/Registration\") {\r\n return \r\n }\r\n else if (window.location.pathname == \"/Mobile/SwitchCommunity\") {\r\n return \r\n }\r\n else if (window.location.pathname == '/Mobile/HardwareAssignment')\r\n return \r\n\r\n let assemblyOptions = this.state.assemblyStatuses.map(d => this.generateAssemblyOption(d));\r\n\r\n let vehicleOptions = this.state.vehicles.map((v,i) => );\r\n\r\n let communityName = window.location.hostname.split('.')[0];\r\n\r\n let hardwareVehicleOptions = this.state.unassignedVehicleList.map((v, i) => );\r\n\r\n return (\r\n
\r\n
\r\n \r\n Dispatch Portal\r\n
\r\n Hardware Assign\r\n
\r\n Chnage Community\r\n \r\n
\r\n\r\n

Hardware Registration ({communityName})

\r\n
\r\n Hardware\r\n \r\n
\r\n
\r\n
\r\n
\r\n Vehicle\r\n \r\n
\r\n
\r\n\r\n
\r\n Assembly Status\r\n \r\n
\r\n
\r\n Notes\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\n//Component to display loading mask when grid is loading/saving data\r\nexport default ({ identifier }) => {\r\n const loadingPanel = (\r\n
\r\n Loading...\r\n
\r\n
\r\n
\r\n );\r\n\r\n const gridContent = identifier && document && document.getElementById(identifier) && document.getElementById(identifier).querySelector('.k-grid-container');\r\n return gridContent ? ReactDOM.createPortal(loadingPanel, gridContent) : loadingPanel;\r\n}","import React from 'react';\r\nimport L from 'leaflet';\r\nimport { Polyline, Marker, Popup } from 'react-leaflet';\r\n\r\nfunction onMarkerMouseOver(e) {\r\n e.target.openPopup();\r\n}\r\n\r\nexport default ({ interStopPoints, stops, routeColor, onPathClick }) => {\r\n const polylines = getPolyLines(interStopPoints, stops, routeColor, onPathClick)\r\n const stopIcons = stops.map(s => {\r\n let stopSvg = '';\r\n stopSvg += '';\r\n stopSvg += '' + s.seq + '';\r\n stopSvg += '';\r\n\r\n const icon = L.divIcon({\r\n html: stopSvg,\r\n iconAnchor: [10, 10],\r\n className:'my-div-icon'\r\n });\r\n\r\n return (\r\n \r\n \r\n {s.seq}. {s.stopName} ({s.stopCode})\r\n \r\n \r\n );\r\n })\r\n return (\r\n \r\n {polylines}\r\n {stopIcons}\r\n \r\n );\r\n}\r\n\r\nfunction getPolyLines(pathPoints, stops, color, clickHandler) {\r\n if (!color) color = '#000000';\r\n if (!color.startsWith('#')) color = '#' + color;\r\n let stopIndex = 1;\r\n let posArr = [];\r\n const polylineArr = [];\r\n for (let point of pathPoints) {\r\n posArr.push([point.lat, point.lng]);\r\n if (point.lat === stops[stopIndex].lat && point.lng === stops[stopIndex].lng) {\r\n const startStop = stops[stopIndex - 1];\r\n const endStop = stops[stopIndex];\r\n polylineArr.push( clickHandler && clickHandler(startStop, endStop)} />);\r\n posArr = [[point.lat, point.lng]];\r\n stopIndex++;\r\n if (stopIndex >= stops.length) break;\r\n }\r\n }\r\n return polylineArr;\r\n}","import $ from 'jquery';\r\nimport React, { useMemo } from 'react';\r\nimport { Map } from 'react-leaflet';\r\nimport VehicleMarker from './VehicleMarker';\r\nimport DrawableRoute from './DrawableRoute';\r\nimport { setTimeout } from 'timers';\r\n\r\nexport default React.forwardRef(({ props, centerPosition, zoom, showArial, mapTiles, toggleAerial, showArialMapView }, ref) => {\r\n\r\n let drawableRouteElements = null;\r\n if (props.drawableRoutes) drawableRouteElements = useMemo(() => props.drawableRoutes.map((r, i) => ), [props.drawableRoutes]);\r\n\r\n let markersFromGroups = null;\r\n if (props.markerGroups) markersFromGroups = useMemo(() => props.markerGroups.reduce((arr, group) => { group.markers.forEach(m => arr.push(m)); return arr; }, []), [props.markerGroups]);\r\n\r\n if (ref && props.clusterMarkers)\r\n ref.current.leafletElement.addLayer(props.clusterMarkers);\r\n\r\n setTimeout(() => {\r\n $('a[href*=\"leafletjs.com\"]').attr(\"target\", \"_blank\");\r\n }, 1000);\r\n\r\n return (\r\n
\r\n {showArialMapView &&\r\n (
toggleAerial()}>\r\n Aerial \r\n
)\r\n }\r\n\r\n \r\n {mapTiles}\r\n {markersFromGroups}\r\n {props.historyRouteLines}\r\n {props.routeLines}\r\n {props.vehicleMarker}\r\n {props.stopMarkers}\r\n {props.circleMarkers}\r\n {props.polygons}\r\n {drawableRouteElements}\r\n \r\n \r\n
\r\n )\r\n})","import './MapComponent.scss'\r\nimport 'leaflet/dist/leaflet.css';\r\nimport '../../../../node_modules/leaflet.markercluster/dist/MarkerCluster.css';\r\nimport '../../../../node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css';\r\n\r\n\r\nimport * as $ from 'jquery';\r\nimport React, { Component, useState, useContext, useEffect, useRef } from 'react';\r\nimport L from 'leaflet';\r\nimport { TileLayer } from 'react-leaflet';\r\nimport { SystemSettingContext } from '../../../SystemSettingContext';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { actions } from '../../../reducers/Map';\r\nimport 'leaflet-bing-layer';\r\nimport CryptoJS from 'crypto';\r\nimport MapPresentation from './MapComponentPresentation';\r\n\r\nconst openStreetAttribution = '© OpenStreetMap contributors';\r\nconst azureMapAttribution = `© ${new Date().getFullYear()} TomTom, Microsoft`;\r\n\r\nexport const MapComponentUnconnected = React.forwardRef((props, mapRef) => {\r\n if (!mapRef) mapRef = useRef();\r\n const [showArial, setShowArial] = useState(false);\r\n const [bingLayer, setBingLayer] = useState(null);\r\n const [mapAttribution, SetMapAttribution] = useState(openStreetAttribution)\r\n const setBingLayerStateWithCallback = (newState, callback) => {\r\n setBingLayer(newState);\r\n callback();\r\n }\r\n const { dispatch } = props;\r\n const SystemSettings = useContext(SystemSettingContext);\r\n\r\n const centerPosition = props.centerPosition || [SystemSettings ? SystemSettings.mapCenterLatitude : 0, SystemSettings ? SystemSettings.mapCenterLongitude : 0];\r\n const zoom = SystemSettings ? SystemSettings.mapCenterZoom : 12;\r\n const showArialMapView = SystemSettings ? SystemSettings.showArialMapView : false;\r\n\r\n let mapTileUrl = \"https://map.mapstrat.com/osm/{z}/{x}/{y}.png\";\r\n\r\n const mapTiles = 0 ? SystemSettings.mapTileUrl : mapTileUrl}\r\n />;\r\n\r\n const toggleAerial = () => {\r\n //Show bing maps aerial tiles if aerial is turned on \r\n if (!showArial) {\r\n if (!bingLayer) {\r\n let _layer = null;\r\n\r\n if (SystemSettings.aerialMapView === 'AzureMap') {\r\n _layer = L.tileLayer('https://atlas.microsoft.com/map/tile?subscription-key={subscriptionKey}&api-version=2.0&tilesetId={tilesetId}&zoom={z}&x={x}&y={y}&tileSize=256&language={language}&view={view}', {\r\n attribution: azureMapAttribution,\r\n subscriptionKey: SystemSettings.azureMapSubscriptionKey || '2ZouVXBv0hqRGn7dGgw609hV1Vkjh7bmeRXGvtFhTwM',\r\n tilesetId: 'microsoft.imagery', \r\n language: 'en-US',\r\n maxZoom: 19,\r\n view: 'Auto'\r\n });\r\n\r\n SetMapAttribution(azureMapAttribution);\r\n }\r\n\r\n else\r\n _layer = L.tileLayer.bing({\r\n bingMapsKey: SystemSettings.bingMapKey,\r\n imagerySet: 'AerialWithLabels',\r\n maxZoom: 19\r\n });\r\n\r\n setTimeout(() => {\r\n $('a[href*=\"leafletjs.com\"]').attr(\"target\", \"_blank\");\r\n }, 1000);\r\n\r\n //bing layer update is used with callback because this is async and it will throw exception if layer addTo\r\n //method is executed before updating the bing layer update \r\n if (_layer) setBingLayerStateWithCallback(_layer, () => _layer.addTo(mapRef.current.leafletElement));\r\n }\r\n if (bingLayer) {\r\n bingLayer.addTo(mapRef.current.leafletElement);\r\n if (SystemSettings.aerialMapView === 'AzureMap') SetMapAttribution(azureMapAttribution);\r\n };\r\n\r\n mapRef.current.leafletElement.options.maxZoom = 19;\r\n\r\n let mapCurrentZoom = mapRef.current.leafletElement.getZoom();\r\n if (mapCurrentZoom > 19)\r\n mapRef.current.leafletElement.setZoom(19)\r\n }\r\n else {\r\n mapRef.current.leafletElement.options.maxZoom = 20;\r\n SetMapAttribution(openStreetAttribution);\r\n mapRef.current.leafletElement.removeLayer(bingLayer);\r\n }\r\n setShowArial(!showArial);\r\n }\r\n const getRandomLatLng = (map) => {\r\n var bounds = map.getBounds(),\r\n southWest = bounds.getSouthWest(),\r\n northEast = bounds.getNorthEast(),\r\n lngSpan = northEast.lng - southWest.lng,\r\n latSpan = northEast.lat - southWest.lat;\r\n\r\n return L.latLng(\r\n southWest.lat + latSpan * Math.random(),\r\n southWest.lng + lngSpan * Math.random());\r\n }\r\n\r\n const decryptMapKey = (k) => {\r\n var KEY = CryptoJS.enc.Utf8.parse('1234567890123456');\r\n var decryptedBytes = CryptoJS.AES.decrypt(k, KEY, { iv: KEY });\r\n var decryptedDoc = decryptedBytes.toString(CryptoJS.enc.Utf8);\r\n return decryptedDoc;\r\n }\r\n\r\n useEffect(() => { if (props.boundPosition && props.boundPosition.length > 0) mapRef.current.leafletElement.fitBounds(props.boundPosition); }, [props.boundPosition]);\r\n\r\n useEffect(() => {\r\n if (props.mapZoomPosition) {\r\n mapRef.current.leafletElement.flyTo(props.mapZoomPosition, 17, { animate: false });\r\n }\r\n }, [props.mapZoomPosition]);\r\n\r\n useEffect(() => {\r\n if (!dispatch || !mapRef) return;\r\n const mapActions = bindActionCreators(actions, dispatch);\r\n mapActions.setMapRef(mapRef);\r\n return () => {\r\n if (mapActions) mapActions.clearMap();\r\n }\r\n }, [dispatch, mapRef]);\r\n\r\n const contextMenu = e => {\r\n console.log('context menu from the un connected map component');\r\n }\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nexport default connect(state => {\r\n return {\r\n markerGroups: state.mapReducer ? state.mapReducer.MarkerGroups : null,\r\n vehicleLogs: state.mapReducer ? state.mapReducer.VehicleAuditLogs : null,\r\n vehicleMarker: state.mapReducer ? state.mapReducer.VehicleMarker : null,\r\n historyRouteLines: state.mapReducer ? state.mapReducer.HistoryRouteLines : null,\r\n stopMarkers: state.mapReducer ? state.mapReducer.StopMarkers : null,\r\n routeLines: state.mapReducer ? state.mapReducer.RouteLines : null,\r\n clusterMarkers: state.mapReducer ? state.mapReducer.ClusterMarkers : null,\r\n circleMarkers: state.mapReducer ? state.mapReducer.CircleMarkers : null,\r\n mapZoomPosition: state.mapReducer ? state.mapReducer.MapZoomPosition : null,\r\n boundPosition: state.mapReducer ? state.mapReducer.BoundPosition : null,\r\n polygons: state.mapReducer ? state.mapReducer.Polygons : null,\r\n drawableRoutes: state.mapReducer ? state.mapReducer.DrawableRoutes : null,\r\n isConnected: true\r\n }\r\n})(MapComponentUnconnected);","import $ from 'jquery';\r\nimport React, { Fragment } from 'react';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport '@progress/kendo-ui';\r\n\r\nconst Util = {\r\n areSameObject: (obj1, obj2) => {\r\n function _equals(obj1, obj2) {\r\n return JSON.stringify(obj1)\r\n === JSON.stringify($.extend(true, {}, obj1, obj2));\r\n }\r\n return _equals(obj1, obj2) && _equals(obj2, obj1);\r\n },\r\n isNullOrUndefined: (val) => {\r\n return val === undefined || val === null;\r\n },\r\n /* Returns true if the provided string is null, empty, or only whitespace */\r\n isNullOrWhitespace: function (str) {\r\n if (str === undefined || str === null) return true;\r\n if (str === 0) return false;\r\n if (typeof str === 'object') return false;\r\n return !str || (typeof str === 'string' && str.match(/^ *$/)) !== null;\r\n },\r\n _padTo2: (num) => {\r\n return (\"00\" + num).slice(-2);\r\n },\r\n strContains: (str, containsVal, caseInsensitive) => {\r\n if (caseInsensitive !== true) caseInsensitive = false;\r\n else str = str.toLowerCase();\r\n if (containsVal instanceof Array) {\r\n for (var i = 0; i < containsVal.length; i++) {\r\n var valToCheck = caseInsensitive ? containsVal[i].toLowerCase() : containsVal[i];\r\n if (str.indexOf(valToCheck) !== -1) return true;\r\n }\r\n return false;\r\n }\r\n else return Util.strContains(str, [containsVal], caseInsensitive);\r\n },\r\n endsWith: (str, endsWithVal, caseInsensitive) => {\r\n if (caseInsensitive !== true) caseInsensitive = false;\r\n else str = str.toLowerCase();\r\n if (endsWithVal instanceof Array) {\r\n for (var i = 0; i < endsWithVal.length; i++) {\r\n var valToCheck = caseInsensitive ? endsWithVal[i].toLowerCase() : endsWithVal[i];\r\n if (str.indexOf(valToCheck, str.length - valToCheck.length) !== -1) return true;\r\n }\r\n return false;\r\n }\r\n else return Util.endsWith(str, [endsWithVal], caseInsensitive);\r\n },\r\n showMessage: (divtitle, boxtitle, text) => {\r\n return class extends React.Component {\r\n\r\n state = {\r\n visible: true\r\n }\r\n\r\n toggleDialog = (e) => {\r\n this.setState({\r\n visible: !this.state.visible\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n this.state.visible && \r\n

Are you sure you want to continue?

\r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n );\r\n }\r\n }\r\n },\r\n showMessage1: (divtitle, boxtitle, text) => {\r\n\r\n if (!divtitle || !text) {\r\n console.log(\"Window must be given a html element and valid text.\");\r\n return;\r\n }\r\n var mWindow = $(\"#\" + divtitle);\r\n if (!mWindow.data(\"kendoWindow\")) {\r\n mWindow.kendoWindow({\r\n actions: [\"Close\"],\r\n animation: {\r\n open: {\r\n effects: \"fade:in\",\r\n duration: 500\r\n },\r\n close: {\r\n effects: \"fade:out\",\r\n duration: 500\r\n }\r\n },\r\n draggable: true,\r\n modal: true,\r\n resizable: false,\r\n title: boxtitle ? boxtitle : \"Error\",\r\n width: 400,\r\n visible: true\r\n });\r\n mWindow.data(\"kendoWindow\").content(\"

\" + text + \"

\").center().open();\r\n }\r\n else {\r\n mWindow.data(\"kendoWindow\").title(boxtitle ? boxtitle : \"Error\").content(\"

\" + text + \"

\").open();\r\n }\r\n //Add OK button to close the message window\r\n var $closeButton = $('');\r\n $closeButton.click(function () {\r\n mWindow.data('kendoWindow').close();\r\n });\r\n $('

').append($closeButton).insertAfter(mWindow.children('p').last());\r\n },\r\n charLimit: (str, limit) => {\r\n if ($.trim(str).length <= limit) return str;\r\n limit -= 3;\r\n return $.trim(str.substring(0, limit)) + '...';\r\n },\r\n roundToPrecision: function (val, precision) {\r\n if (Util.isNullOrUndefined(val)) return null;\r\n var multiplier = Math.pow(10, precision);\r\n return Math.round(val * multiplier) / multiplier;\r\n },\r\n flatDataToHierarchical: (data, idFieldName, parentIdFieldName, parentIdentifier) => {\r\n var hierarchicalDataArr = [];\r\n for (var i = 0; i < data.length; i++) {\r\n if (!data[i][parentIdFieldName]) {\r\n var newItem = $.extend(true, {}, data[i]);\r\n Util.populateHierarchicalChildren(data, newItem, idFieldName, parentIdFieldName, parentIdentifier);\r\n hierarchicalDataArr.push(newItem);\r\n }\r\n }\r\n return hierarchicalDataArr;\r\n },\r\n populateHierarchicalChildren: (data, parentItem, idFieldName, parentIdFieldName, parentIdentifier) => {\r\n var subItems = [];\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i][parentIdFieldName] == parentItem[idFieldName] && (!parentIdentifier || parentItem[parentIdentifier])) {\r\n var newItem = $.extend(true, {}, data[i]);\r\n Util.populateHierarchicalChildren(data, newItem, idFieldName, parentIdFieldName, parentIdentifier);\r\n subItems.push(newItem);\r\n }\r\n }\r\n if (subItems) parentItem.items = subItems;\r\n },\r\n flattenHierarchicalData: (data, childrenArrayName, flatDataArr) => {\r\n if (!data || data.length === 0) return flatDataArr;\r\n if (!childrenArrayName) childrenArrayName = 'items';\r\n if (!flatDataArr) flatDataArr = [];\r\n for (var i = 0; i < data.length; i++) {\r\n var newItem = $.extend(true, {}, data[i]);\r\n var childArr = data[i][childrenArrayName];\r\n delete newItem[childrenArrayName];\r\n flatDataArr.push(newItem);\r\n Util.flattenHierarchicalData(childArr, childrenArrayName, flatDataArr);\r\n }\r\n return flatDataArr;\r\n },\r\n getQueryStringParameterByName: (name, queryString) => {\r\n if (Util.isNullOrUndefined(queryString)) queryString = decodeURI(window.location.search);\r\n if (!queryString) return '';\r\n if (queryString.substr(0, 1) != '?') queryString = '?' + queryString;\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var pattern = '[\\\\?&]' + name + '(\\\\[([^\\\\]]+)\\\\])+=[^&#]*';\r\n var o_reg = new RegExp(pattern, 'g');\r\n var matches = queryString.match(o_reg);\r\n\r\n if (matches && matches.length > 0) {\r\n var firstMatchArr = matches[0].split('=');\r\n var splitFirstKey = firstMatchArr[0].split('[');\r\n splitFirstKey.shift();\r\n var depth = splitFirstKey.length;\r\n var indexIsObject = [];\r\n for (var i = 0; i < splitFirstKey.length; i++) {\r\n if (isNaN(splitFirstKey[i].substring(0, splitFirstKey[i].length - 1))) indexIsObject.push(true); //Index is for an object if key is not a number\r\n else indexIsObject.push(false); //Otherwise index is for an array\r\n }\r\n var parent = indexIsObject[0] ? {} : [];\r\n for (var j = 0; j < matches.length; j++) {\r\n var kvp = matches[j].split('=');\r\n var value = kvp[1];\r\n var splitKey = kvp[0].split('[');\r\n splitKey.shift();\r\n var objToCheck = parent;\r\n for (var k = 0; k < splitKey.length; k++) {\r\n var subKey = splitKey[k].substring(0, splitKey[k].length - 1);\r\n if (k == splitKey.length - 1) {\r\n objToCheck[subKey] = value;\r\n }\r\n else {\r\n if (objToCheck[subKey] === undefined) {\r\n if (indexIsObject[k + 1]) objToCheck[subKey] = {};\r\n else objToCheck[subKey] = [];\r\n }\r\n }\r\n objToCheck = objToCheck[subKey];\r\n }\r\n }\r\n return parent;\r\n }\r\n\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n results = regex.exec(queryString);\r\n return results == null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n },\r\n getDistanceBetweenLatLngPoints: function (lat1, lng1, lat2, lng2) {\r\n var radiusOfEarth = 6371100;\r\n var deltaLat = Util.degreeToRadian(lat2 - lat1);\r\n var deltaLng = Util.degreeToRadian(lng2 - lng1);\r\n var a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) + Math.cos(Util.degreeToRadian(lat1)) * Math.cos(Util.degreeToRadian(lat2)) * Math.sin(deltaLng / 2) * Math.sin(deltaLng / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n return c * radiusOfEarth;\r\n },\r\n\r\n /* Converts angle from degrees to radian\r\n */\r\n degreeToRadian: function (angle) {\r\n return Math.PI * angle / 180.0;\r\n },\r\n\r\n /* Converts angle from radian to degrees\r\n */\r\n radianToDegree: function (angle) {\r\n return angle * (180.0 / Math.PI);\r\n },\r\n findDistanceToLineSegment: function (x1, y1, x2, y2, pointX, pointY, isLatLng) {\r\n var diffX = x2 - x1;\r\n var diffY = y2 - y1;\r\n if ((diffX == 0) && (diffY == 0)) {\r\n if (isLatLng) return Util.getDistanceBetweenLatLngPoints(pointX, pointY, x1, y1);\r\n diffX = pointX - x1;\r\n diffY = pointY - y1;\r\n return Math.sqrt(diffX * diffX + diffY * diffY);\r\n }\r\n\r\n var t = ((pointX - x1) * diffX + (pointY - y1) * diffY) / (diffX * diffX + diffY * diffY);\r\n\r\n if (t < 0) {\r\n //point is nearest to the first point i.e x1 and y1\r\n if (isLatLng) return Util.getDistanceBetweenLatLngPoints(pointX, pointY, x1, y1);\r\n diffX = pointX - x1;\r\n diffY = pointY - y1;\r\n }\r\n else if (t > 1) {\r\n //point is nearest to the end point i.e x2 and y2\r\n if (isLatLng) return Util.getDistanceBetweenLatLngPoints(pointX, pointY, x2, y2);\r\n diffX = pointX - x2;\r\n diffY = pointY - y2;\r\n }\r\n else {\r\n //if perpendicular line intersect the line segment.\r\n if (isLatLng) return Util.getDistanceBetweenLatLngPoints(pointX, pointY, (x1 + t * diffX), (y1 + t * diffY));\r\n diffX = pointX - (x1 + t * diffX);\r\n diffY = pointY - (y1 + t * diffY);\r\n }\r\n\r\n //returning shortest distance\r\n return Math.sqrt(diffX * diffX + diffY * diffY);\r\n },\r\n findDistanceBetweenLineSegments: function (l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2, isLatLng) {\r\n if (Util.checkIfLinesIntersect(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2)) return 0;\r\n return Math.min(\r\n Util.findDistanceToLineSegment(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, isLatLng),\r\n Util.findDistanceToLineSegment(l1x1, l1y1, l1x2, l1y2, l2x2, l2y2, isLatLng),\r\n Util.findDistanceToLineSegment(l2x1, l2y1, l2x2, l2y2, l1x1, l1y1, isLatLng),\r\n Util.findDistanceToLineSegment(l2x1, l2y1, l2x2, l2y2, l1x2, l1y2, isLatLng)\r\n );\r\n },\r\n checkIfLinesIntersect: function (x1, y1, x2, y2, x3, y3, x4, y4) {\r\n var x = ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));\r\n var y = ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));\r\n if (isNaN(x) || isNaN(y)) {\r\n return false;\r\n } else {\r\n if (x1 >= x2) {\r\n if (!(x2 <= x && x <= x1)) { return false; }\r\n } else {\r\n if (!(x1 <= x && x <= x2)) { return false; }\r\n }\r\n if (y1 >= y2) {\r\n if (!(y2 <= y && y <= y1)) { return false; }\r\n } else {\r\n if (!(y1 <= y && y <= y2)) { return false; }\r\n }\r\n if (x3 >= x4) {\r\n if (!(x4 <= x && x <= x3)) { return false; }\r\n } else {\r\n if (!(x3 <= x && x <= x4)) { return false; }\r\n }\r\n if (y3 >= y4) {\r\n if (!(y4 <= y && y <= y3)) { return false; }\r\n } else {\r\n if (!(y3 <= y && y <= y4)) { return false; }\r\n }\r\n }\r\n return true;\r\n },\r\n trim: function (str, char) {\r\n if (!char) return str.replace(/(^\\s+)|(\\s+$)/g, \"\");\r\n var escapedChar = Util.escapeStringForRegExp(char);\r\n var regexStr = '(^' + escapedChar + '+)|(' + escapedChar + '+$)';\r\n return str.replace(new RegExp(regexStr, 'g'), \"\");\r\n },\r\n /* Escape string for use in a regular expression */\r\n escapeStringForRegExp: function (str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n },\r\n /* Checks if a string starts with a value. An array of strings can be provided as the startsWithVal parameter\r\n * in which case true will be returned if the string starts with any of the substrings in the array\r\n */\r\n startsWith: function (str, startsWithVal, caseInsensitive) {\r\n if (caseInsensitive !== true) caseInsensitive = false;\r\n else str = str.toLowerCase();\r\n if (startsWithVal instanceof Array) {\r\n for (var i = 0; i < startsWithVal.length; i++) {\r\n var valToCheck = caseInsensitive ? startsWithVal[i].toLowerCase() : startsWithVal[i];\r\n if (str.lastIndexOf(valToCheck, 0) === 0) return true;\r\n }\r\n return false;\r\n }\r\n else return this.startsWith(str, [startsWithVal], caseInsensitive);\r\n },\r\n /* Forces all grids on page to appear loading\r\n */\r\n loadingOn: function () {\r\n this.currentlyLoading = true;\r\n var self = this;\r\n $('body').addClass('gridHelper-loading');\r\n //do not show progress forever:\r\n if (window._loadingOnCancelTimer !== undefined) {\r\n window.clearTimeout(window._loadingOnCancelTimer);\r\n delete window._loadingOnCancelTimer;\r\n }\r\n window._loadingOnCancelTimer = window.setTimeout(function () {\r\n delete window._loadingOnCancelTimer;\r\n if (self.currentlyLoading) {\r\n Util.loadingOff();\r\n console.error('loadingOff was not called before timeout');\r\n }\r\n }, 20000);\r\n },\r\n\r\n /* Removes loading state from all grids on page\r\n */\r\n loadingOff: function () {\r\n this.currentlyLoading = false;\r\n $('body').removeClass('gridHelper-loading');\r\n },\r\n setCookie: function (c_name, value, exdays) {\r\n var exdate = new Date();\r\n exdate.setDate(exdate.getDate() + exdays);\r\n var c_value = escape(value) + ((exdays === null) ? \"\" : \"; expires=\" + exdate.toUTCString());\r\n document.cookie = c_name + \"=\" + c_value;\r\n },\r\n\r\n getCookie: function (c_name) {\r\n var i, x, y, ARRcookies = document.cookie.split(\";\");\r\n for (i = 0; i < ARRcookies.length; i++) {\r\n x = ARRcookies[i].substr(0, ARRcookies[i].indexOf(\"=\"));\r\n y = ARRcookies[i].substr(ARRcookies[i].indexOf(\"=\") + 1);\r\n x = x.replace(/^\\s+|\\s+$/g, \"\");\r\n if (x === c_name) {\r\n return unescape(y);\r\n }\r\n }\r\n },\r\n copyTextToClipboard: function (text) {\r\n // Create the textarea input to hold our text.\r\n const element = document.createElement('textarea');\r\n element.value = text;\r\n // Add it to the document so that it can be focused.\r\n document.body.appendChild(element);\r\n // Focus on the element so that it can be copied.\r\n element.focus();\r\n element.setSelectionRange(0, element.value.length);\r\n // Execute the copy command.\r\n document.execCommand('copy');\r\n // Remove the element to keep the document clear.\r\n document.body.removeChild(element);\r\n },\r\n lastDummyIdUsed: 0,\r\n getNewDummyId: function () {\r\n Util.lastDummyIdUsed--;\r\n return Util.lastDummyIdUsed;\r\n },\r\n /* Generates the new name of an object copied from another\r\n */\r\n getCopyName: function (itemToCopy, items, nameField, otherFieldsToMatch) {\r\n if (!otherFieldsToMatch || !(otherFieldsToMatch instanceof Array)) otherFieldsToMatch = [];\r\n //Create regex used for counting how many copies of this row there already are:\r\n var name = itemToCopy[nameField];\r\n var cleanName = name.replace(/(\\s+\\(copy(\\s[0-9]+)?\\))?$/i, '');\r\n var namePattern = new RegExp('^' + Util.escapeStringForRegExp(cleanName) + '(\\\\s\\\\(copy(\\\\s[0-9]+)?\\\\))?$');\r\n\r\n var copyCount = 0;\r\n for (var i = 0; i < items.length; i++) {\r\n if (!items[i][nameField]) continue;\r\n if (namePattern.test(items[i][nameField])) {\r\n var otherFieldsMatch = true;\r\n for (var j = 0; j < otherFieldsToMatch.length; j++) {\r\n var fieldToMatch = otherFieldsToMatch[j];\r\n if (items[i][fieldToMatch] != itemToCopy[fieldToMatch]) {\r\n otherFieldsMatch = false;\r\n break;\r\n }\r\n }\r\n if (otherFieldsMatch) copyCount++;\r\n }\r\n }\r\n\r\n if (copyCount == 0) return cleanName;\r\n else if (copyCount == 1) return cleanName + ' (copy)';\r\n else return cleanName + ' (copy ' + copyCount + ')';\r\n },\r\n /* Get the deep copy of an object * \r\n */\r\n deepCopy: function (object) {\r\n return JSON.parse(JSON.stringify(object));\r\n },\r\n /* Formats the total number of bytes into a rounded value with a unit\r\n */\r\n formatDataSize: function (val) {\r\n if (!val) return '0 B';\r\n val = parseInt(val);\r\n var unit = '';\r\n var roundedVal = 0;\r\n if (val > 1073741824) {\r\n //Gigabytes\r\n roundedVal = Math.round(((val / 1073741824) * 10)) / 10;\r\n unit = 'GB';\r\n }\r\n else if (val > 1048576) {\r\n //Megabytes\r\n roundedVal = Math.round(((val / 1048576) * 10)) / 10;\r\n unit = 'MB';\r\n }\r\n else if (val > 1024) {\r\n //Kilobytes\r\n roundedVal = Math.round(((val / 1024) * 10)) / 10;\r\n unit = 'KB';\r\n }\r\n else {\r\n //Bytes\r\n roundedVal = val;\r\n unit = 'B';\r\n }\r\n return roundedVal + ' ' + unit;\r\n },\r\n\r\n /* Formats the total number of kilobytes into a rounded value with a unit\r\n */\r\n formatKBDataSize: function (valInKB) {\r\n if (!valInKB) return '0 B';\r\n return Util.formatDataSize(valInKB * 1024);\r\n },\r\n\r\n milisecondsToTimeStr: function (ms) {\r\n var seconds = Math.round(ms / 1000);\r\n return Util.secondsToTimeStr(seconds);\r\n },\r\n\r\n secondsToTimeStr: function (seconds) {\r\n var minutes = Math.floor(seconds / 60);\r\n var secondsVal = seconds % 60;\r\n if (secondsVal < 10) secondsVal = '0' + secondsVal;\r\n return minutes + ':' + secondsVal;\r\n },\r\n getRandomString: function (length, chars) {\r\n if (!chars) chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n var result = '';\r\n for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];\r\n return result;\r\n }\r\n};\r\n\r\n//GUID generation function from https://gist.github.com/jed/982883\r\nexport function getGuid(a) { return a ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, getGuid) }\r\n\r\nexport default Util;","import React from 'react';\r\n\r\nconst PasswordContext = React.createContext({});\r\n\r\nexport const Provider = PasswordContext.Provider;\r\nexport const Consumer = PasswordContext.Consumer;","import React from 'react';\r\nimport { Consumer } from './PasswordContext';\r\nimport alertImage from '../../../images/alert_info.png';\r\n\r\nexport default () => (\r\n \r\n {context => (\r\n

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

Please update your password

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {context.errorMessage && (
\r\n \r\n
)}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \"\"\r\n

{context.passwordPolicy ? `Passwords must be ${context.passwordPolicy.description}` : \"\"}

\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n);","import React, { Component} from 'react';\r\nimport axios from 'axios';\r\nimport { Provider } from './PasswordContext';\r\nimport ChangePasswordPresentation from './ChangePasswordPresentation';\r\nimport './ChangePassword.scss';\r\n\r\nexport default class ChangePassword extends Component {\r\n state = {\r\n passwordPolicy: null,\r\n formModel: {\r\n oldPassword: '',\r\n newPassword: '',\r\n confirmPassword: '',\r\n },\r\n formError: {\r\n oldPasswordError: false,\r\n newPasswordError: false,\r\n confirmPasswordError: false\r\n },\r\n errorMessage: null\r\n }\r\n\r\n componentDidMount() {\r\n this.getPasswordPolicy();\r\n }\r\n\r\n getPasswordPolicy = () => {\r\n axios.get('/api/PasswordPolicy').then((res) => {\r\n let policy = res.data;\r\n this.setState({ passwordPolicy: policy });\r\n }).catch((err) => console.log(err));\r\n }\r\n\r\n handleSave = e => {\n e.preventDefault();\n let regex = null;\n let passwordPolicy = this.state.passwordPolicy;\n let formModel = this.state.formModel;\n\n if (passwordPolicy.regex) regex = new RegExp(passwordPolicy.regex);\n\n this.setState({ formError: { ...this.state.formError, oldPasswordError: false, confirmPasswordError: false, newPasswordError: false } });\n let invalidPasswordError = 'Password must be ' + passwordPolicy.description;\n if (!formModel.oldPassword) {\n this.setState({ formError: { ...this.state.formError, oldPasswordError: true }, errorMessage: \"Please enter old password\"});\n return;\n }\n else if ((passwordPolicy.minLength && formModel.newPassword.length < passwordPolicy.minLength) || (passwordPolicy.maxLength && formModel.newPassword.length > passwordPolicy.maxLength) || (regex && !regex.test(formModel.newPassword))) { \n this.setState({ formError: { ...this.state.formError, newPasswordError: true }, errorMessage: invalidPasswordError});\n return;\n }\n else if (formModel.newPassword !== formModel.confirmPassword) { \n this.setState({ formError: { ...this.state.formError, onfirmPasswordError: true, newPasswordError: true }, errorMessage: 'Passwords do not match'});\n return;\n }\n else if (formModel.newPassword === formModel.oldPassword) { \n this.setState({ formError: { ...this.state.formError, newPasswordError: true }, errorMessage: 'New password must be different from old password'});\n \n return;\n }\n\n axios.post('/api/ChangePassword', { oldPassword: formModel.oldPassword, newPassword: formModel.newPassword })\n .then(response => { \n if (sessionStorage.getItem('changePassword')) {\n sessionStorage.clear();\n window.location.reload();\n }\n else {\n this.props.onClose();\n }\n }).catch(err => {\n console.log(err);\n let errorMessage = err.ErrorMessage || (err.response && err.response.data ? err.response.data.ErrorMessage : 'Failed to change password');\n this.setState({ errorMessage});\n })\n }\r\n\r\n render() {\r\n return (\r\n {\r\n this.setState({ formModel: { ...this.state.formModel, [e.target.name]: e.target.value }, errorMessage: null });\r\n }\r\n }}>\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import { useEffect } from 'react';\r\nimport { getDateFromISO, getTodayDate } from \"./DateUtil\";\r\n\r\nexport function getSelectedSchedule() {\r\n const selectedScheduleJSON = window.localStorage.getItem('smiPortalSchedule');\r\n if (!selectedScheduleJSON) return null;\r\n return JSON.parse(selectedScheduleJSON);\r\n}\r\n\r\nexport function getSelectedScheduleStartDateStr() {\r\n const schedule = getSelectedSchedule();\r\n return schedule ? schedule.startDate.split('T')[0] : null;\r\n}\r\n\r\nexport function getSelectedScheduleLabel() {\r\n const schedule = getSelectedSchedule();\r\n if (!schedule) return 'No Schedule Selected';\r\n return schedule.name + ' (' + getDateFromISO(schedule.startDate).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' }) + (schedule.endDate ? ' to ' + getDateFromISO(schedule.endDate).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' }) : ' Onwards') + ')'\r\n}\r\n\r\nexport function selectedScheduleIsInPast() {\r\n const schedule = getSelectedSchedule();\r\n if (!schedule || !schedule.endDate) return false; \r\n return getDateFromISO(schedule.endDate) < getTodayDate();\r\n}\r\n\r\nexport function selectedScheduleIsInFuture() {\r\n const schedule = getSelectedSchedule();\r\n if (!schedule || !schedule.startDate) return false; \r\n return getDateFromISO(schedule.startDate) > new Date();\r\n}\r\n\r\nexport function selectedScheduleIsCurrentSchedule() {\r\n return getSelectedSchedule() && !selectedScheduleIsInFuture() && !selectedScheduleIsInPast();\r\n}\r\n\r\nexport function useOnSelectedScheduleChange(callback) {\r\n useEffect(() => {\r\n window.addEventListener('scheduleChange', callback);\r\n return () => window.removeEventListener('scheduleChange', callback);\r\n });\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAcCAYAAABsxO8nAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADvSURBVEhL1ZU5DsIwEEUdCoQQNTUFFRyAS3AfrsCBuAQXgArR0yOEKELG/LG8jJ1xlIYnOT+L8zJepDRt25oxsKLHfodLx6pr999pQoN0LE9nM8G5D5WYkxD0PBlGLKoZZ9DXF9VIGPcOiw7IwbDoiIyhieW2pRsCtippspl4dS5dS1aMKYmq+C+RtB2kex86sOiGjKEX/SYxpQOL1sjB+EObIWtw28EXvZFaNkhLPNnZDSdwRVpiEaGRJX0kUR8LZEBOVKrqiQwoVfRC+mQ/UBLNkSpq5qi4CH0izQpaaioqohX1VqYRqYY30i/bmC8ILyQTi7yT5gAAAABJRU5ErkJgggZD1xEYGZeeHKGp9jooXh9loYgAR4T0FJ1Y2i+z43AxtaYWvuevhS1+tXy3D8zlzhdJJqFTo5WycjBNQyoUhJHiommY5qIqviH29XPa5hlNH2wEKy3LCHER2GyoHHwHpaRU+FJTfzF3rgewOzKlG7EoHHta4bn9GIq+siwcmWyoHH1xnpr5NiPCUatr4H00CIOanYFEY6OfxFHR5+fE2014E9WqAJTyCunJYm9oEt+yrdQyBn0pLawwh1NkkYEHwyvS2Ehun7ig4nKJs8JTBpWWeQsvMR5H9OOIsHNZHRoAc2oiEwHtlX13iziKxtj3ttEiJYSDw6ishSu9WHszJD1AZPAplm5dF0MxMVYjcJ84K85iavGxLwj1nhS9MeEZGmEaRDRKT9FHo/Wg5pvZ8BL5LgXefxe2yMhBd8jR0iECJvwHfIfUSj9Unx8KXw+zJEJfCKHixh1pyYzkGdMd9WAV3rzFLARfF7W2Hr4nr6RHZmTiefgifeNzp7gOvh58qrkinDwhJzXdfeo89IjF+OkFenAG3nv90pElrzSTmWOt4rKynEXl6DQl574uePruS0+WgkLJP78QPN0Fpao6OyUqyVhZQuDDT2Gvp2BXbXUNcHYeocWMSQ8J0R0rv3ZTWhspmBGH92mmswmKfysZuuiPf3hURjdiOWelpAzOQ0dFVkYkjLJLV2XEAp6RFfEfY8Zke50x2VYrPdYU3Tx7404w+s/ReL82oagQR+vqgXP/YWlZs6mQo7mD7mKztKyxnNr/AfwDuGd5g5iSZpEAAAAASUVORK5CYII=\"","import React from 'react';\r\nimport { getSelectedScheduleLabel, selectedScheduleIsInPast } from '../../Utils/ScheduleUtil';\r\n\r\nimport viewIcon from '../../images/view.png';\r\nimport maintainIcon from '../../images/maintain.png';\r\nimport systemIcon from '../../images/system.png';\r\nimport reportIcon from '../../images/reports.png';\r\n\r\nimport './PageWrapper.scss';\r\n\r\n\r\n\r\nexport default ({ className, pageIcon, title, isSchedulePage, pastIsReadOnly, children }) => {\r\n if (!className) className = '';\r\n let scheduleLabelElement = null;\r\n let pastScheduleLabel = null;\r\n if (isSchedulePage) {\r\n scheduleLabelElement = {getSelectedScheduleLabel()} \r\n if (pastIsReadOnly !== false && selectedScheduleIsInPast()) {\r\n pastScheduleLabel = Read-Only Past Schedule\r\n className = (className || '') + ' read-only-page';\r\n }\r\n }\r\n\r\n if (!pageIcon) {\r\n const path = window.location.pathname.toLowerCase();\r\n if (path.indexOf('/reports/') === 0) pageIcon = reportIcon;\r\n else if (path.indexOf('/view/') === 0) pageIcon = viewIcon;\r\n else if (path.indexOf('/system/') === 0) pageIcon = systemIcon;\r\n else pageIcon = maintainIcon;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

\"\"{title} {scheduleLabelElement} {pastScheduleLabel}

\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n","import React from 'react';\r\nimport L from 'leaflet';\r\nimport { Polygon, Rectangle } from 'react-leaflet';\r\nimport Util from './Util';\r\n\r\nconst defaultVehicleIconBase64 = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wcRFQYXul2ragAAAZRJREFUSMftlc8rw2Ecx1/P98d+EWUXZTVrNQecFGscXGRYlIOWnF2UqPkTpJj4E5wc3FZIuUiSqd1IDlqKUnLRZu27Xw48a1iMbTfv03N5v97P836eT49IpgwAQpsHZ0exeCfAczLdyB/U1GBOAAz2uC7DC34vgJhdjgBE906ue6mhxgY6zoE+BYhSP0WFZ3LzBSCZMqy6pgKwOO0DYGqoC4BWe/nGHp4SAOwcXgCwsX0KQCabo8FqSgFoyZRhlYbQTD8Ac1N9FW1PBs8HvQCoigBgZesYyVU+myqFl1M574eA4HB31aV/ZhQDLCYNe7Ot6gB7sw2LSfsaoOtqzZ5OKUuhzvoP+FGibWS18F/Rd9JMupoBMDI5/SayiFl/GxLH6NqvQHf7SwCkM1ncExtIriKEyAsh8gBmXUtXu2PJkFzhGl835AlqWU3xBHW/A7ej5R7gKv7YXkuw5IpC4W0MnIFwNpcvqO8fRw7gdjekVQJzBsJZgFK/9H5XkfabJn6cA7/PEytd+32eiul+n+eLX65fAQUGc75Aq8MZAAAAAElFTkSuQmCC\";\r\nconst VehicleBubbleSvgWithoutBearing = `\r\n\t\t\r\n\t\t\r\n\t\t \t\t\t\r\n\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t\t \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t \r\n\t\t \r\n\t\t \r\n\t\t\r\n\t\t`.trim();\r\n\r\nconst VehicleBubbleSvg = `\r\n\t\t\r\n\t\t\r\n\t\t \t\t\t\r\n\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t\t \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t \r\n\t\t \r\n\t\t \r\n\t\t\r\n\t\t`.trim();\r\n\r\nconst MapHelper = {\r\n getStopSVG: function (color, seq, opacity) {\r\n if (!color) color = 'red';\r\n if (!opacity) opacity = 1;\r\n let stopSvg = '';\r\n stopSvg += '';\r\n if (seq) stopSvg += '' + seq + '';\r\n stopSvg += '';\r\n return stopSvg;\r\n },\r\n getIncidentSVG: function (color, icon) {\r\n if (!color) color = 'ffffff';\r\n color = MapHelper.lightenColor(color, 0.55);\r\n let incidentSvg = '';\r\n incidentSvg += '';\r\n incidentSvg += ''\r\n incidentSvg += '';\r\n return incidentSvg;\r\n },\r\n getVehicleIcon : (bearing, color, iconUrl, zoomLevel) => {\r\n let scale = 1;\r\n iconUrl = iconUrl || defaultVehicleIconBase64;\r\n var actualSize = scale * 50;\r\n let svg = '';\r\n svg += ``;\r\n svg += '';\r\n\r\n var vehicleSvg = (bearing ? VehicleBubbleSvg : VehicleBubbleSvgWithoutBearing)\r\n .replace(\"{{ROTATE}}\", bearing)\r\n .replace(\"{{COLOR}}\", color)\r\n .replace(\"{{SCALE}}\", scale + \"\")\r\n .replace(\"{{ICONDATAURL}}\", iconUrl)\r\n .replace(/{{SIZE}}/g, actualSize + \"\");\r\n\r\n return L.divIcon({\r\n html: vehicleSvg,\r\n iconAnchor: [20, 20]\r\n });\r\n },\r\n\r\n //Alpha must be a value from 0 to 1\r\n lightenColor: function (colorHex, alpha) {\r\n let inverseAlpha = 1 - alpha;\r\n let r = parseInt(colorHex.substr(0, 2), 16);\r\n let g = parseInt(colorHex.substr(2, 2), 16);\r\n let b = parseInt(colorHex.substr(4, 2), 16);\r\n let newR = Math.floor((255 * alpha) + (inverseAlpha * r)).toString(16);\r\n let newG = Math.floor((255 * alpha) + (inverseAlpha * g)).toString(16);\r\n let newB = Math.floor((255 * alpha) + (inverseAlpha * b)).toString(16);\r\n return ('0' + newR).slice(-2) + ('0' + newG).slice(-2) + ('0' + newB).slice(-2);\r\n },\r\n getStopIcon : (color, icon) => {\r\n let svg = MapHelper.getIncidentSVG(color, icon); \r\n return L.divIcon({\r\n html: svg,\r\n iconSize: [15, 15],\r\n iconAnchor: null\r\n });\r\n },\r\n getStopSeqIcon: (color, seq, opacity) => {\r\n let svg = MapHelper.getStopSVG(color, seq, opacity);\r\n return L.divIcon({\r\n html: svg,\r\n iconSize: [15, 15],\r\n iconAnchor: null\r\n });\r\n },\r\n //distance is in meters\r\n //Adapted from \"destination point given distance and bearing from start point\" function at http://www.movable-type.co.uk/scripts/latlong.html\r\n findPointAtDistanceAlongBearing: function (startLat, startLng, bearing, distance) {\r\n var radiusOfEarth = 6371100;\r\n var radAngularDistance = distance / radiusOfEarth;\r\n var radBearing = MapHelper.degreeToRadian(bearing);\r\n\r\n var radStartLat = MapHelper.degreeToRadian(startLat)\r\n var radStartLng = MapHelper.degreeToRadian(startLng);\r\n\r\n var sinStartLat = Math.sin(radStartLat), cosStartLat = Math.cos(radStartLat);\r\n var sinAngularDistance = Math.sin(radAngularDistance), cosAngularDistance = Math.cos(radAngularDistance);\r\n var sinBearing = Math.sin(radBearing), cosBearing = Math.cos(radBearing);\r\n\r\n var sinX = sinStartLat * cosAngularDistance + cosStartLat * sinAngularDistance * cosBearing;\r\n var x = Math.asin(sinX);\r\n var a = sinBearing * sinAngularDistance * cosStartLat;\r\n var b = cosAngularDistance - sinStartLat * sinX;\r\n var y = radStartLng + Math.atan2(a, b);\r\n\r\n return { x: MapHelper.radianToDegree(x), y: (MapHelper.radianToDegree(y) + 540) % 360 - 180 }; // normalise to −180..+180°\r\n\r\n },\r\n getRectanglesFromPolyline: (locations, color, distance)=> {\r\n //let locations = polyline.getLocations();\r\n let rectangles = [];\r\n for (let i = 1; i < locations.length; i++) {\r\n let x = locations[i - 1];\r\n let y = locations[i];\r\n let bearing = MapHelper.getBearingOfLatLngLine(x.lat, x.lng, y.lat, y.lng);\r\n let reverseBearing = (bearing + 180) % 360;\r\n let perpendicularBearing1 = (bearing + 90) % 360;\r\n let perpendicularBearing2 = (bearing + 270) % 360;\r\n if (perpendicularBearing2 < 0) perpendicularBearing2 = 360 + perpendicularBearing2;\r\n\r\n let startPoint = MapHelper.findPointAtDistanceAlongBearing(x.lat, x.lng, reverseBearing, distance);\r\n let endPoint = MapHelper.findPointAtDistanceAlongBearing(y.lat, y.lng, bearing, distance);\r\n\r\n let slope = (y.lng - x.lng) / (y.lat - x.lat);\r\n let m = -1 / slope;\r\n let corner1 = MapHelper.findPointAtDistanceAlongBearing(startPoint.x, startPoint.y, perpendicularBearing1, distance);\r\n let corner2 = MapHelper.findPointAtDistanceAlongBearing(endPoint.x, endPoint.y, perpendicularBearing1, distance);\r\n let corner3 = MapHelper.findPointAtDistanceAlongBearing(endPoint.x, endPoint.y, perpendicularBearing2, distance);\r\n let corner4 = MapHelper.findPointAtDistanceAlongBearing(startPoint.x, startPoint.y, perpendicularBearing2, distance);\r\n let _rectLocation = [{ lat: corner1.x, lng: corner1.y },\r\n { lat: corner2.x, lng: corner2.y },\r\n { lat: corner3.x, lng: corner3.y },\r\n { lat: corner4.x, lng: corner4.y }];\r\n\r\n rectangles.push(); \r\n }\r\n return rectangles;\r\n },\r\n getBearingOfLatLngLine: (lat1, lng1, lat2, lng2) => {\r\n var radLat1 = MapHelper.degreeToRadian(lat1)\r\n var radLat2 = MapHelper.degreeToRadian(lat2);\r\n var radLngDiff = MapHelper.degreeToRadian(lng2 - lng1);\r\n\r\n var y = Math.sin(radLngDiff) * Math.cos(radLat2);\r\n var x = Math.cos(radLat1) * Math.sin(radLat2) - Math.sin(radLat1) * Math.cos(radLat2) * Math.cos(radLngDiff);\r\n var result = Math.abs(((Math.atan2(y, x) + (2 * Math.PI)) % (2 * Math.PI)) * 180 / Math.PI) + (1 / 7200);\r\n\r\n return result;\r\n },\r\n /* Converts angle from degrees to radian\r\n */\r\n degreeToRadian: function (angle) {\r\n return Math.PI * angle / 180.0;\r\n },\r\n\r\n /* Converts angle from radian to degrees\r\n */\r\n radianToDegree: function (angle) {\r\n return angle * (180.0 / Math.PI);\r\n },\r\n pointInPolygon: function (point, polygonPoints, xVal, yVal) {\r\n if (!xVal) xVal = 'x';\r\n if (!yVal) yVal = 'y';\r\n var j = polygonPoints.length - 1;\r\n var pointInPolygon = false;\r\n\r\n var x = point[xVal];\r\n var y = point[yVal];\r\n\r\n for (var i = 0; i < polygonPoints.length; i++) {\r\n if ((polygonPoints[i][yVal] < y && polygonPoints[j][yVal] >= y || polygonPoints[j][yVal] < y && polygonPoints[i][yVal] >= y) && (polygonPoints[i][xVal] <= x || polygonPoints[j][xVal] <= x)) {\r\n if (polygonPoints[i][xVal] + (y - polygonPoints[i][yVal]) / (polygonPoints[j][yVal] - polygonPoints[i][yVal]) * (polygonPoints[j][xVal] - polygonPoints[i][xVal]) < x) {\r\n pointInPolygon = !pointInPolygon;\r\n }\r\n }\r\n j = i;\r\n }\r\n return pointInPolygon;\r\n }\r\n};\r\n\r\nexport default MapHelper;","const simulatorState = {\r\n LocationPoints: [],\r\n isPaused: false,\r\n isReset: false,\r\n SimulatorMode: \"\",\r\n isStart: false,\r\n Speed: 0,\r\n OBUList: [],\r\n SelectedOBU: null\r\n}\r\n\r\nconst actionTypes = {\r\n SETLOCATIONPOINTS: 'SIMULATOR/SETLOCATIONPOINTS',\r\n SETPAUSE: 'SIMULATOR/SETPAUSE',\r\n SETRESET:'SIMULATOR/SETRESET',\r\n SETSTART: 'SIMULATOR/SETSTART',\r\n SETSIMULATORMODE: 'SIMULATOR/SETSIMULATORMODE',\r\n SETSPEED: 'SIMULATOR/SETSPEED',\r\n SETOBULIST: 'SIMULATOR/SETOBULIST',\r\n SETSELECTEDOBU: 'SIMULATOR/SETSELECTEDOBU',\r\n CLEAR:'SIMULATOR/CLEAR'\r\n}\r\n\r\nexport default (state = simulatorState, action) => {\r\n switch (action.type) {\r\n case actionTypes.SETLOCATIONPOINTS:\r\n return { ...state, LocationPoints: action.locationPoints };\r\n case actionTypes.SETPAUSE:\r\n return { ...state, isPaused: action.isPaused };\r\n case actionTypes.SETRESET:\r\n return { ...state, isReset: action.isReset };\r\n case actionTypes.SETSTART:\r\n return { ...state, isStart: action.isStart };\r\n case actionTypes.SETSIMULATORMODE:\r\n return { ...state, SimulatorMode: action.simulatorMode };\r\n case actionTypes.SETSPEED:\r\n return { ...state, Speed: action.speed };\r\n case actionTypes.SETOBULIST:\r\n return { ...state, OBUList: action.obuList };\r\n case actionTypes.SETSELECTEDOBU:\r\n return { ...state, SelectedOBU: action.selectedObu };\r\n case actionTypes.CLEAR:\r\n console.log('clear');\r\n return simulatorState;\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport const actions = {\r\n setLocationPoints: (_locationPoints) => ({ type: actionTypes.SETLOCATIONPOINTS, locationPoints: _locationPoints }),\r\n setPause: isPaused => ({ type: actionTypes.SETPAUSE, isPaused }),\r\n setReset: isReset => ({ type: actionTypes.SETRESET, isReset }),\r\n setStart: isStart => ({ type: actionTypes.SETSTART, isStart }),\r\n setSimulatorMode: simulatorMode => ({ type: actionTypes.SETSIMULATORMODE, simulatorMode }),\r\n setSpeed: speed => ({ type: actionTypes.SETSPEED, speed }),\r\n setObuList: obuList => ({ type: actionTypes.SETOBULIST, obuList }),\r\n setSelectedObu: selectedObu => ({ type: actionTypes.SETSELECTEDOBU, selectedObu }),\r\n clear: () => ({ type: actionTypes.CLEAR })\r\n}\r\n\r\n","const ReduxActions = {\r\n GetRoutes: 'GetRoutes',\r\n GetVehicles: 'GetVehicles',\r\n SelectRoute: 'SelectRoute',\r\n SetEvents: 'SetEvents',\r\n ClearEvents: 'ClearEvents',\r\n SelectVehicle: 'SelectVehicle',\r\n SelectDate: 'SelectDate',\r\n SetTripInfos: 'SetTripInfos',\r\n SetVehicleHistory: 'SetVehicleHistory', \r\n SelectTripInfo: 'SelectTripInfo',\r\n SetSelectedLogFix: 'SetSelectedLogFix',\r\n SetSelectedLogType: 'SetSelectedLogType',\r\n SetSelectedLogFile: 'SetSelectedLogFile',\r\n SetTimeRange: 'SetTimeRange',\r\n SetTripStopData: 'SetTripStopData',\r\n SetSelectedRoute: 'SetSelectedRoute',\r\n SetRoutePatterns: 'SetRoutePatterns',\r\n SetSelectedPattern: 'SetSelectedPattern',\r\n SetPatternStops: 'SetPatternStops',\r\n SetStopReached: 'SetStopReached',\r\n SetEventTrigerDistance: 'SetEventTrigerDistance',\r\n SetZoomToRouteStart: 'SetZoomToRouteStart',\r\n SetShowPattern: 'SetShowPattern',\r\n SetCircleMarkerPoints: 'SetCircleMarkerPoints',\r\n SetFilterItems: 'SetFilterItems',\r\n SetHighlightGreenItems: 'SetHighlightGreenItems',\r\n SetHighlightCyanItems: 'SetHighlightCyanItems',\r\n ClearMarkers: 'ClearMarkers',\r\n SetVehicleLogFix: 'SetVehicleLogFix',\r\n SetIsLoading:'SetIsLoading'\r\n};\r\n\r\nexport default ReduxActions;","import React, {useState, useEffect} from 'react';\r\nimport L from 'leaflet';\r\nimport { Marker, Popup } from 'react-leaflet';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { actions } from '../../../reducers/Map';\r\n\r\n//#region vehicleIcon\r\n\r\nconst defaultVehicleIconBase64 = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wcRFQYXul2ragAAAZRJREFUSMftlc8rw2Ecx1/P98d+EWUXZTVrNQecFGscXGRYlIOWnF2UqPkTpJj4E5wc3FZIuUiSqd1IDlqKUnLRZu27Xw48a1iMbTfv03N5v97P836eT49IpgwAQpsHZ0exeCfAczLdyB/U1GBOAAz2uC7DC34vgJhdjgBE906ue6mhxgY6zoE+BYhSP0WFZ3LzBSCZMqy6pgKwOO0DYGqoC4BWe/nGHp4SAOwcXgCwsX0KQCabo8FqSgFoyZRhlYbQTD8Ac1N9FW1PBs8HvQCoigBgZesYyVU+myqFl1M574eA4HB31aV/ZhQDLCYNe7Ot6gB7sw2LSfsaoOtqzZ5OKUuhzvoP+FGibWS18F/Rd9JMupoBMDI5/SayiFl/GxLH6NqvQHf7SwCkM1ncExtIriKEyAsh8gBmXUtXu2PJkFzhGl835AlqWU3xBHW/A7ej5R7gKv7YXkuw5IpC4W0MnIFwNpcvqO8fRw7gdjekVQJzBsJZgFK/9H5XkfabJn6cA7/PEytd+32eiul+n+eLX65fAQUGc75Aq8MZAAAAAElFTkSuQmCC\";\r\nconst VehicleBubbleSvgWithoutBearing = `\r\n\t\t\r\n\t\t\r\n\t\t \t\t\t\r\n\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t\t \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t \r\n\t\t \r\n\t\t \r\n\t\t\r\n\t\t`.trim();\r\n\r\nconst VehicleBubbleSvg = `\r\n\t\t\r\n\t\t\r\n\t\t \t\t\t\r\n\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t\t \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t \r\n\t\t \r\n\t\t \r\n\t\t\r\n\t\t`.trim();\r\n//#endregion\r\n\r\nconst vehicleRef = React.createRef();\r\n\r\nconst areEqual = (prevProps, nextProps) => { \r\n if (vehicleRef.current && nextProps.vehiclePosition) {\r\n vehicleRef.current.leafletElement.setLatLng([nextProps.vehiclePosition.Lat, nextProps.vehiclePosition.Lng]);\r\n return true;\r\n } \r\n return false;\r\n}\r\n\r\nexport const VehicleMarkerUnconnected = React.memo((props) => {\r\n const { dispatch } = props;\r\n const mapActions = bindActionCreators(actions, dispatch);\r\n const vehiclePosition = props.vehiclePosition;\r\n const [vMarker, setMarker] = useState(null); \r\n\r\n const getVehicleIcon = (bearing, color, iconUrl, zoomLevel) => {\r\n let scale = 1;\r\n iconUrl = iconUrl || defaultVehicleIconBase64;\r\n var actualSize = scale * 50;\r\n let svg = '';\r\n svg += ``;\r\n svg += '';\r\n\r\n var vehicleSvg = (bearing ? VehicleBubbleSvg : VehicleBubbleSvgWithoutBearing)\r\n .replace(\"{{ROTATE}}\", bearing)\r\n .replace(\"{{COLOR}}\", color)\r\n .replace(\"{{SCALE}}\", scale + \"\")\r\n .replace(\"{{ICONDATAURL}}\", iconUrl)\r\n .replace(/{{SIZE}}/g, actualSize + \"\");\r\n\r\n return L.divIcon({\r\n html: vehicleSvg,\r\n iconAnchor: [20, 20]\r\n });\r\n }\r\n \r\n if (!vehiclePosition || vehicleRef.current) return null; \r\n return (\r\n \r\n {props.showVehiclePopup && props.vehiclePopUpContent && (\r\n {props.vehiclePopUpContent}\r\n )}\r\n \r\n );\r\n}, areEqual);\r\n\r\nexport default connect(state => {\r\n return {\r\n vehiclePosition: state.mapReducer ? state.mapReducer.VehiclePosition : null,\r\n vehiclePopUpContent: null,\r\n showVehiclePopup: true\r\n }\r\n})(VehicleMarkerUnconnected);","import ReduxActions from './ReduxAction';\r\n\r\nexport default function ReduxReducer(state = initialState, action) {\r\n\r\n var newState = Object.assign({}, state);\r\n switch (action.type) {\r\n case ReduxActions.GetVehicles:\r\n newState.Vehicles = action.vehicles; \r\n break;\r\n case ReduxActions.GetRoutes:\r\n newState.Routes = action.routes;\r\n break;\r\n case ReduxActions.SetEvents: \r\n let evnts = newState.Events.slice(0);\r\n let localTime = new Date().toLocaleTimeString(); \r\n evnts.push(localTime+': '+ action.event);\r\n newState.Events = evnts; \r\n break;\r\n case ReduxActions.ClearEvents:\r\n newState.Events = [];\r\n break;\r\n case ReduxActions.SelectDate:\r\n newState.SelectedDate = action.date;\r\n break;\r\n case ReduxActions.SelectVehicle:\r\n newState.SelectedVehicle = action.vehicle;\r\n break;\r\n case ReduxActions.SetTripInfos:\r\n newState.TripInfos = action.tripInfos;\r\n break;\r\n case ReduxActions.SelectTripInfo:\r\n newState.SelectedTrip = action.selectedTrip;\r\n break;\r\n case ReduxActions.SetSelectedLogFix:\r\n newState.SelectedLogFix = action.LogFix;\r\n break;\r\n case ReduxActions.SetVehicleLogFix:\r\n newState.VehicleAuditLogs = action.vehicleAuditLogs;\r\n break;\r\n case ReduxActions.SetSelectedLogType:\r\n newState.SelectedLogType = action.LogType;\r\n break;\r\n case ReduxActions.SetSelectedLogFile:\r\n newState.SelectedLogFile = action.LogFile;\r\n break;\r\n case ReduxActions.SetTimeRange:\r\n newState.FromDateTime = action.fromDateTime;\r\n newState.ToDateTime = action.toDateTime;\r\n break; \r\n case ReduxActions.SetVehicleHistory:\r\n newState.VehicleHistory = action.vehicleHistory;\r\n break; \r\n case ReduxActions.SetTripStopData:\r\n newState.TripStopData = action.tripStopData;\r\n break;\r\n case ReduxActions.SetSelectedRoute:\r\n newState.SelectedRoute = action.selectedRoute;\r\n break;\r\n case ReduxActions.SetRoutePatterns:\r\n newState.RoutePatterns = action.routePatterns;\r\n break;\r\n case ReduxActions.SetSelectedPattern:\r\n newState.SelectedPattern = action.selectedPattern;\r\n break;\r\n case ReduxActions.SetPatternStops:\r\n newState.PatternStops = action.patternStops;\r\n break;\r\n case ReduxActions.SetEventTrigerDistance:\r\n newState.IsEventTrigerDistance = action.isEventTrigerDistance;\r\n break;\r\n case ReduxActions.SetStopReached:\r\n newState.IsStopReached = action.isStopReached;\r\n break;\r\n case ReduxActions.SetZoomToRouteStart:\r\n newState.IsZoomToRouteStart = action.isZoomToRouteStart;\r\n break;\r\n case ReduxActions.SetShowPattern:\r\n newState.IsShowPattern = action.isShowPattern;\r\n break;\r\n case ReduxActions.SetCircleMarkerPoints:\r\n newState.CircleMarkerPoints = action.circleMarkerPoints;\r\n break;\r\n case ReduxActions.SetFilterItems:\r\n newState.FilterItems = action.filterItems;\r\n break;\r\n case ReduxActions.SetHighlightGreenItems:\r\n newState.HighlightGreenItems = action.highlightGreenItems;\r\n break;\r\n case ReduxActions.SetHighlightCyanItems:\r\n newState.HighlightCyanItems = action.highlightCyanItems;\r\n break;\r\n case ReduxActions.ClearMarkers:\r\n newState.CircleMarkerPoints = [];\r\n newState.SelectedLogFix = null;\r\n break;\r\n case ReduxActions.SetHighlightCyanItems:\r\n newState.HighlightCyanItems = action.highlightCyanItems;\r\n break;\r\n case ReduxActions.SetIsLoading:\r\n newState.isLoading = action.isLoading;\r\n break;\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nlet initialState = {\r\n Routes: [],\r\n Vehicles: [],\r\n Events: [],\r\n SelectedVehicle: null,\r\n SelectedRoute: null,\r\n RoutePatterns: [],\r\n SelectedPattern: null,\r\n PatternStops: [],\r\n SelectedDate: null, \r\n SelectedTrip: null,\r\n TripInfos: [],\r\n TripStopData:[],\r\n VehicleHistory: [],\r\n SelectedLogFix: null,\r\n SelectedLogType: null,\r\n SelectedLogFile: null,\r\n VehicleAuditLogs:[],\r\n FromDateTime: null,\r\n ToDateTime: null,\r\n IsStopReached: true,\r\n IsEventTrigerDistance: false,\r\n IsZoomToRouteStart: true,\r\n IsShowPattern: true,\r\n CircleMarkerPoints: [],\r\n FilterItems: [],\r\n HighlightGreenItems: [],\r\n HighlightCyanItems: [],\r\n isLoading: false\r\n};\r\n","//Action Types\r\nexport const types = {\r\n AUTO_LOGIN: 'AUTH/AUTH_AUTO_LOGIN',\r\n SIGNUP_REQUEST: 'AUTH/SIGNUP_REQUEST',\r\n SIGNUP_SUCCESS: 'AUTH/SIGNUP_SUCCESS',\r\n SIGNUP_FAILURE: 'AUTH/SIGNUP_FAILURE',\r\n LOGIN_REQUEST: 'AUTH/LOGIN_REQUEST',\r\n LOGIN_SUCCESS: 'AUTH/LOGIN_SUCCESS',\r\n LOGIN_FAILURE: 'AUTH/LOGIN_FAILURE',\r\n LOGOUT: 'AUTH/LOGOUT'\r\n}\r\n\r\n// Inititial State\r\nexport const initialState = {\r\n user: null,\r\n isLoading: false,\r\n error: null\r\n}\r\n\r\n//Reducer\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SIGNUP_REQUEST:\r\n case types.LOGIN_REQUEST:\r\n return { ...state, isLoading: true, error: null }\r\n\r\n case types.SIGNUP_SUCCESS:\r\n case types.LOGIN_SUCCESS:\r\n return { ...state, isLoading: false, user: action.user }\r\n\r\n case types.SIGNUP_FAILURE:\r\n case types.LOGIN_FAILURE:\r\n return { ...state, isLoading: false, error: action.error }\r\n\r\n case types.LOGOUT:\r\n return { ...state, user: null }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n//Action Creators\r\nexport const actions = {\r\n signup: (email, password) => ({ type: types.SIGNUP_REQUEST, email, password }),\r\n login: (email, password) => ({ type: types.LOGIN_REQUEST, email, password }),\r\n logout: () => ({ type: types.LOGOUT })\r\n}","\r\n\r\n//Action Types\r\nexport const types = {\r\n ADD_COMMENT: 'COMMENT/ADD_COMMENT',\r\n GET_WEATHER: 'COMMENT/GET_WEATHER'\r\n}\r\n\r\nexport const initialState = {\r\n comments: []\r\n}\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.ADD_COMMENT:\r\n { \r\n return { ...state, comments: [...state.comments,action.comment] };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const actionCreators = {\r\n addComment: (comment) => ({ type: types.ADD_COMMENT, comment })\r\n\r\n}","import thunk from 'redux-thunk';\r\nimport { createStore, combineReducers, applyMiddleware } from 'redux';\r\nimport authReducer from './Auth';\r\nimport commentReducer from './Comment';\r\nimport mapReducer from './Map';\r\nimport simulatorReducer from './SimulatorReducer';\r\nimport diagnosticReducer from '../pages/System/Diagnostics/VehicleDiagnostics/ReduxReducer';\r\n\r\nexport default createStore(\r\n combineReducers({\r\n authReducer, \r\n commentReducer,\r\n simulatorReducer,\r\n mapReducer,\r\n diagnosticReducer\r\n }),\r\n applyMiddleware(thunk)\r\n);","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPUAAAA2CAYAAAAfzd9/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDE2MEQ0NjUxNzAzMTFFMkE1QTk4RjI5OTQ5QkU1NUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE2MEQ0NjYxNzAzMTFFMkE1QTk4RjI5OTQ5QkU1NUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMTYwRDQ2MzE3MDMxMUUyQTVBOThGMjk5NDlCRTU1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMTYwRDQ2NDE3MDMxMUUyQTVBOThGMjk5NDlCRTU1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Psrp6KoAAAViSURBVHja7J1LixxlFIZrQm+8RPGyyELUIQvBKLrQhSIkBlE3Ef+ADARcOWACWc8iazGKswsIgz9ASRZGkEhA4kIX0RjBRRwNglmoEINm2c5bcsa3zlRVV3eqJz2d54Gip+vyXc457znfVzMhC8PhsACA+WEXJgBA1ACAqAEAUQMAogYARA2AqAEAUQMAogYARA0AiBoAUQMAogYARA0AiBoAgsHGwT+oBqBSAwCiBoCdL+ozu++f6Jr469uLxVcvvjJzBmsa9/qJ1fKYNa5+crr4fvkokY6o/0cBocDISHAS3qS8ev3P3iejMUl0dce0WTy6XB47CSUh2Sb7V+dut0TQJSnLTjmuJtXANIvAYNQND750sPj987PFntcPVaqouOepJ2fKMc998VklMKeROOaNe595tuJfBa7OwdaV44U3lioxJVv9s/7zzOlgZKWWs39dW6uc++PsuWLPa4dqK2TO8Poe1zwzefXMGbAu+0VVuZnKG2PQZ6w0vE0fe75Wt1qJtnSvZ159+rzzePOKoq7tbDu3S2xNvB1vw22lQGz174Yfr1/6YbPt9fdXi8W3l7fYLQ7fEml8Pka/lv3l48v+bnuuqS/97Pd6bDXFU2xF8jUdP66slEduK5B4H1pa2qINHWo3bxW936yPpv76mHvJsAMX3zoy/OndDza/f3r3fcNrF77bvPbbx6cq98Z33Rc/63599zbqzuu7+tLn+QMvl+fUhtoN8vc6vE0/5/Oom6ePPeYY17xdteNj0PdoW58x9mw//ezPZfs14fYIm8X49Lzbyvtus1WMOe7Jn23P1M1F/TbNJfs7xt7Vz7mv7Etv3+ef2/e4cB/6vJpQO3q+LrZ0zf3R1K7HiJ/vY+7BoEuFe/jNw8WlI8fKPaOykjJWLDmU5XMlv2vv3ko2a1uq5wyo+3R4tb6x/kvZh/cz6RIx73uVRa9983Vlu6G+1b6P+YnVE5Vq8vfly5VzdRWwzh6y17733un8kssrrc/Zx3fn4qMVW3nfXZCPVKFl3+e/PFf6JK8Y3PaPHT9esVewe9/jlZXO+Rf2N/q7Lh5G+dn70vkHDu7fskRW+/Jn02rOY+2OxUdKP467vYtVnHj6o7X/KvaGza+c/LCMCV/tqA/58Oqp0+XzTe9d+ph72LSTqONmPaj9l3cgFAjT3lcokPp+EaVglTPCWV1fDikQZHwlu3Hn7QlknD2cviuxdhmbJ5HOwt6wg0Sp+bioY2kX4+j6ckeC9rgIESh4p+1nCbct4d4smpPsoaQb7yM0Zs1RMeHFTJ+61xNB07uevmJ81zhO115awewvzRQIylBeXZr2iHWoynh2iv2po2yn/UcWZB+o7SDGIadJfL5a8P4UMMrQdZWoS8DJjl65215i+XuMLijhqip4Bei6gmkSgicJb7trMfB4UIVxf3sC6cPPEU9NvhuVEMd5Wy1Bu20kSsWEv5OIPXQkAvk0xub99Rnjg643yhkacH5ZoECIFwFeucdxvATS9rySiAzm9/gScFKUVV2YPjeNwa9pjHlMMe58rQ3ZS8+EA5u2EbKLEmbMOdu9bSmtYIvn1L4viyfZrvh4u47D/ZW3V37N59+HnyOemvw6ap5KCHUVM9uhrrKWS+KVolL0lGR9LHomtpi5v75ifGHIf6Z1S1FC1B571n4tsl3EEnaay+XtIir5rf57hQGy2v4g9pdfkblvt0Tm7xbm4e8J4tdUszAXKjXAnKFKvYAZAOYH/pUWAKIGAEQNAIgaABA1ACBqAEQNAIgaABA1ACBqAEDUAIgaABA1ACBqAEDUAICoARA1ACBqAEDUAICoAQBRAyBqANgp/CvAAGw9LaO6BucCAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEUAAABECAYAAADX0fiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODhDNkU5RDA1NDAxQ0ZEOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRTc2NjlGRkVGOTExMUUxOTgzREVGQzQ0M0Y5NkYwRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRTc2NjlGRUVGOTExMUUxOTgzREVGQzQ0M0Y5NkYwRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVFNTEwRTQwMzIyMDY4MTE4OEM2RTlEMDU0MDFDRkQ4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4OEM2RTlEMDU0MDFDRkQ4Ii8+IDwvcmRmOkRlc2NyaXB0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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAApCAYAAABKvBuPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMzRDQUQwMTkwMjA2ODExOEE2REUxQTU0Qzc1NTMzNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMTg1QjNDMTkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMTg1QjNDMDkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3Ii8+IDwvcmRmOkRlc2NyaXB0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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAApCAYAAABKvBuPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMzRDQUQwMTkwMjA2ODExOEE2REUxQTU0Qzc1NTMzNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMTg1QjNDNTkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMTg1QjNDNDkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3Ii8+IDwvcmRmOkRlc2NyaXB0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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAApCAYAAABKvBuPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMzRDQUQwMTkwMjA2ODExOEE2REUxQTU0Qzc1NTMzNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQzY2N0M1RTkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMTg1QjNDODkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3Ii8+IDwvcmRmOkRlc2NyaXB0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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAApCAYAAABKvBuPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMzRDQUQwMTkwMjA2ODExOEE2REUxQTU0Qzc1NTMzNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQzY2N0M2MjkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQzY2N0M2MTkxRUIxMUUxQkRERkUwQzE3MUU3NTg0RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzNENBRDAxOTAyMDY4MTE4QTZERTFBNTRDNzU1MzM3Ii8+IDwvcmRmOkRlc2NyaXB0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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAaCAYAAADWm14/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkREMEJGOEVEOEVGMTFFMTgwNzJFQThDODg4MkRGRDMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkREMEJGOEZEOEVGMTFFMTgwNzJFQThDODg4MkRGRDMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNDVERDdEN0Q4RUIxMUUxODA3MkVBOEM4ODgyREZEMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNDVERDdEOEQ4RUIxMUUxODA3MkVBOEM4ODgyREZEMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoOdQKcAAAWySURBVHjarFd7TFV1HP+ccy/3wr0kpi2QnKhRYYiPlKHTtlKbbZk0xXL9ATQ3kkZTYgZqA1yWJK1ZDJhAzUYOlqItC8kH03zgmvPFS3w0M8Hwxftx7z3n/Pr+fuee2wV5XGe/u89+v3N+j+/n+/h9v+dKqqqAN0mSBvS+NkmS8TjNs5sxNqAfriUmvsfs9kDG+0FTBXz7IBT4TMAXEgsXvsxaW1vx+7EjMJvNmD37Je+FyZc6ilF9dz2O3U1Dfef34t2oBLgwAyMJ37dvP2tsbMTu4o2YM7EeBTnx6O7uRlZWlmdDq+MCbvYex82+E7jjqPPNBUMJ935ntMzMTGz9NAvjLDcBtQ0W5Qp2fJmNwsJCzxqFaXBBg0LQwB6NwEiWyMjYyPz8/JAU/yqamgPw7S8K/ul6Gm8smoro6GgsX75cLFZJqMIgoPpKwNv/w5EoLi7G9i8+x/7KC4iMfgc1Z69j6szV+OPibezI3Yiqqiq3BRhc3ArUqwy+W0DTNAFDuPc4NvYtNn/+fLy2YAK+zivCoUOHUFJSgry8PBTtqkT4MyqSk/VY48IdTIXTTcInAoMFG8+8b25uYVy7HZ/FA46rsFgsno1RUVGora0lte8hM3WxxwJOAieh+EjAPFLkx8XFITU1FeHjL+KDtBOoruaoHpiIxq/0jDuUNiKg0qFmdFGgGt4dQX6h1NPTPSizSQKlpT+w7OxsNJzagiccFTBFVKHy1lf4u/8ijGQperEe6FU7cF+9Qdp3wiRZMMYcjKcsU2A3jdXXUri5c634hfpPx4InE2AerD1/5gRycnKwdcvHsCnHwFytYu5673k09hwfSEA/U0CSSQyFtYl6l3IH7WQFXbCulD7Wn510UYULvCPeqAPp6RksMDAQqxZ1gvXUkw379CDTyL8aGyjYi4hEK3UxLpipRpgkvtZEz8SKSaLntYOv4QHrITCYRGlpKSp2b4PcvQdMuQ8m6xImWmcKEoZw6T/J6NXacVf5Cz3Uy0TE6mfHBEs4Ak3j3BaQPeaXaRxqffFhC/C2cmUcW7p0KWKePQ/WfZUM5RSb1q4KwNtTNowY0Zsbl+GB875YP8k8CemT94x2CQrN3kno8uUmVlNTg7NHtoB1FYGpXaQ9hGHzMizI3xQAyR6DXb9akfgmV/scdzzBAnl6E6xSEJwqE56xykEY6KhhrqF39ktJSUHaR+sRbPkNrO8WCdYzumbEmWQTdSAxdgoFRDO/+TRJkBR3IuI5gAjQJqf2iLWgrKyctbS04P0VJLT7HPneAU11kRXcgD8020IcOP861m7zx4+nXwHsC+gIE5HSg1SFLphDdQtYs2YNG7UWcAK5ubnI/iQF1l7S3tlGBDQBzejlMJQcjMB35ecwZ+487K9qwjcVk8mGZA3VqWdCTU/BPFD5mLfy8vLRLbBu3XoWEhKMFfNukO+buC3p7nObEjk6m4+ZHIqfDl4QeT8pKUm4a+/Pp+mEEFJb8SpGOhS3C2JjY7FkyZJhrSDzz6uysjLkbFoF3DkK9PWCOeABOIF+Ql8Xng+fhJMnT6KjowOHDx/GtIjnwHofAP0KjHJsWMAox9vTF+HMmTOg4B6ShJyQkICEhHhEBp0i7W8JjeGG0N7h7tuvIGO1FQ0NDQgLC0NdXR2yEsfQ+8tUqFzisGn2OYgZsxgxQYsxzTZXvAtlR7F58yZRU4b8qLXZbOzA3iJEubYDnbVeNUGH7IZEOVb2D4Y8dgbgHwrJcRty1yXIzlaaV/HhTrrUBwcqmbwsAPkbonBvQjZCIpbxCvvQlZS4f2bMiELauy/A0v8nNMa8cr1eaGSe491FSpYlD0Hjncmkz4s5Sr0itkV+oHn/iSis7ER+fgHq6+sfzgnXrl1js2bNYkN8Uv9viIyMZBUVFUPGgNTe3ub5CPFOyd5/VGRZ9pRpAyKA6L3NZn+sPyb/CjAALSBCBZ/QW5AAAAAASUVORK5CYII=\"","module.exports = \"data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==\"","import { formatDate, toString } from '@telerik/kendo-intl';\r\nimport kendo from '@progress/kendo-ui';\r\nimport Util from './Util';\r\nimport * as moment from 'moment';\r\n\r\nexport function addMinutesToDate(date, minutes) {\r\n if (!isValidDate(date)) date = parseCSDateTime(date);\r\n let result = new Date(date);\r\n result.setMinutes(date.getMinutes() + minutes);\r\n return result;\r\n}\r\n\r\nexport function addDaysToDate(date, days) {\r\n let result = new Date(date);\r\n result.setDate(date.getDate() + days);\r\n return result;\r\n}\r\n\r\n\r\nexport function addMonthsToDate(date, months) {\r\n let result = new Date(date);\r\n result.setMonth(date.getMonth() + months);\r\n return result;\r\n}\r\n\r\nexport function addYearsToDate(date, years) {\r\n let result = new Date(date);\r\n result.setFullYear(date.getFullYear() + years);\r\n return result;\r\n}\r\n\r\nexport function adjustDateTimeStringWithTimeZone(source) {\r\n let res = null;\r\n try {\r\n let d = new Date(source);\r\n let tzo = d.getTimezoneOffset() / 60;\r\n\r\n let s = new Date(source);\r\n s.setHours(s.getHours() - tzo);\r\n res = s.toISOString();\r\n }\r\n catch (err) {\r\n console.log(\"Invalid schedule time.\")\r\n }\r\n finally {\r\n return res;\r\n }\r\n}\r\n\r\nexport function convertDateStringsToDates(data) {\r\n if (!Array.isArray(data)) data = [data];\r\n data.forEach((d) => {\r\n for (let key in d) {\r\n if (isImpreciseISOStr(d[key])) d[key] = getDateFromISO(d[key]);\r\n }\r\n })\r\n}\r\n\r\nexport function convertDatesToStrings(data) {\r\n if (!Array.isArray(data)) data = [data];\r\n data.forEach((d) => {\r\n for (let key in d) {\r\n if (d[key] instanceof Date) d[key] = dateToImpreciseISOStr(d[key]);\r\n }\r\n })\r\n}\r\n\r\nexport function parseDateToUserString(time, date) {\r\n time = new Date(time.replace('T', ' '));\r\n date = new Date(date.replace('T', ' '));\r\n let stringDate = \"\";\r\n let hours = time.getHours();\r\n let minutes = time.getMinutes();\r\n if (time.getDate() !== date.getDate()) {\r\n stringDate = (hours < 10 ? \"0\" : \"\") + hours + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes + \" XM\";\r\n } else if (hours === 12) {\r\n stringDate = 12 + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes + \" PM\";\r\n } else if (hours >= 12) {\r\n stringDate = (hours < 22 ? \"0\" : \"\") + (hours - 12) + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes + \" PM\";\r\n } else if (hours === 0) {\r\n stringDate = 12 + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes + \" AM\";\r\n } else {\r\n stringDate = (hours < 10 ? \"0\" : \"\") + hours + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes + \" AM\";\r\n }\r\n return stringDate;\r\n}\r\n\r\nexport function parseDateToFormattedString(time, date, format) {\r\n if (format) {\r\n format = format.replace('tt', 'a');\r\n }\r\n let stringDate = formatDate(time, format)\r\n let timeDay = time.getDate()\r\n let baseDay = date.getDate()\r\n \r\n if (timeDay !== baseDay) {\r\n //don't worry about \"HH\" case padding 0, XM will always have full digits.\r\n if (format.indexOf(\"H\") !== -1) {\r\n //replace the hours part (first part before \":\")\r\n let hoursPart = stringDate.substring(0, stringDate.indexOf(\":\"));\r\n let hoursNum = parseInt(hoursPart)\r\n //add 24 to the hours part\r\n hoursNum = hoursNum + 24\r\n stringDate = hoursNum + stringDate.substring(stringDate.indexOf(\":\"), stringDate.length)\r\n }\r\n else if (format.indexOf(\"t\") !== -1) {\r\n //format the XM part\r\n stringDate = (stringDate.indexOf(\"AM\") !== -1) ? stringDate.replace(\"AM\", \"XM\") : stringDate.replace(\"PM\", \"XM\")\r\n }\r\n }\r\n\r\n return stringDate;\r\n}\r\n\r\nexport function parseDateToFormattedShortString(time, timeFormat, dateFormat) {\r\n if (timeFormat) {\r\n timeFormat = timeFormat.replace('tt', 'a');\r\n }\r\n let stringTimeDate = formatDate(time, timeFormat)\r\n let stringDate = formatDate(time, dateFormat)\r\n return stringDate + ' ' + stringTimeDate;\r\n}\r\n\r\nexport function shortFormatXM36hour(date, format, baseDate) {\r\n //this function expects only 1st day of a month otherwise it will provide wrong time\r\n //day = 1 for today, day = 2 for xm\r\n //'HH' or 'H' converts into 36 hours time, pad 0 if necessary\r\n //'tt' converts AM/PM into XM\r\n //custom convert if date is next day\r\n //kendo formatString format changed so we need to change the format \r\n //before passing to formatString function\r\n //thats it.\r\n if (!date) return '';\r\n if (format.indexOf(\"t\") !== -1)\r\n format = 't';\r\n let stringDate = formatDate(date, format);\r\n let isXM = false;\r\n if (baseDate) {\r\n try {\r\n if (Object.prototype.toString.call(baseDate) !== '[object Date]') { \r\n baseDate = parseISODateWithNoTime(baseDate); \r\n }\r\n \r\n if (baseDate.getDate() < date.getDate())\r\n isXM = true;\r\n } catch (e) {\r\n return stringDate;\r\n }\r\n \r\n } else if (!baseDate && date.getDate() > 1)\r\n isXM = true;\r\n\r\n if (isXM) {\r\n if (format.indexOf(\"H\") !== -1) {\r\n //replace the hours part (first part before \":\")\r\n let hoursPart = stringDate.substring(0, stringDate.indexOf(\":\"));\r\n let hoursNum = parseInt(hoursPart)\r\n //add 24 to the hours part\r\n hoursNum = hoursNum + 24\r\n stringDate = hoursNum + stringDate.substring(stringDate.indexOf(\":\"), stringDate.length)\r\n }\r\n else if (format.indexOf(\"t\") !== -1) {\r\n //format the XM part\r\n stringDate = (stringDate.indexOf(\"AM\") !== -1) ? stringDate.replace(\"AM\", \"XM\") : stringDate.replace(\"PM\", \"XM\")\r\n }\r\n } \r\n return stringDate;\r\n}\r\n\r\n//Taken from https://stackoverflow.com/a/325964/2457005\r\nexport function dateRangesAreOverlapping(startDate1, endDate1, startDate2, endDate2) {\r\n return startDate1 <= endDate2 && endDate1 >= startDate2;\r\n}\r\n\r\nexport function getTodayDate() {\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today;\r\n}\r\n\r\nexport function isSameDate(date1, date2) {\r\n let d1 = new Date(date1), d2 = new Date(date2);\r\n d1.setHours(0, 0, 0, 0);\r\n d2.setHours(0, 0, 0, 0);\r\n return d1.getTime() === d2.getTime();\r\n}\r\n\r\nexport function dateToImpreciseISOStr(date) {\r\n return dateToTimelessISO(date) + 'T' + dateToTimeOnlyISO(date);\r\n}\r\n\r\nexport function getISODateWithNoTime(date) {\r\n let month = date.getMonth() + 1;\r\n if (month < 10) month = '0' + month;\r\n let day = date.getDate();\r\n if (day < 10) day = '0' + day;\r\n return date.getFullYear() + '-' + month + '-' + day;\r\n}\r\n\r\nexport function isImpreciseISOStr(str) {\r\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?$/.test(str);\r\n}\r\n\r\nexport function getMinutesBetweenDates(date1, date2) {\r\n if (!date1 || !date2) return 0;\r\n let diff = date2.getTime() - date1.getTime();\r\n return (diff / 60000);\r\n}\r\n\r\nexport function dateToTimelessISO(date) {\r\n let year = date.getFullYear().toString();\r\n let month = (date.getMonth() + 1).toString();\r\n if (month.length < 2) month = '0' + month;\r\n let day = date.getDate().toString();\r\n if (day.length < 2) day = '0' + day;\r\n return year + '-' + month + '-' + day;\r\n}\r\n\r\nexport function dateToTimeOnlyISO(date) {\r\n let hour = date.getHours().toString();\r\n if (hour.length < 2) hour = '0' + hour;\r\n let minute = date.getMinutes().toString();\r\n if (minute.length < 2) minute = '0' + minute;\r\n let second = date.getSeconds().toString();\r\n if (second.length < 2) second = '0' + second;\r\n return hour + ':' + minute + ':' + second;\r\n}\r\n\r\n\r\nexport function getDateTimeWithSecondStringAsDisplayValue(dateTime) {\r\n if (!dateTime.getTime)\r\n throw \"Not Date Type\";\r\n\r\n return dateTime.getFullYear() + \"/\" + padTo2(dateTime.getMonth() + 1) + \"/\" + padTo2(dateTime.getDate())\r\n + \" \" + padTo2(dateTime.getHours()) + \":\" + padTo2(dateTime.getMinutes()) + \":\" + padTo2(dateTime.getSeconds());\r\n}\r\n\r\nexport function getSecondOfDayFromBrowserTime(date, baseUTCDate) {\r\n let xmDays = date.getDate() - baseUTCDate;\r\n let secOfDay = date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds();\r\n let result = secOfDay + xmDays * 24 * 3600;\r\n return result;\r\n}\r\n\r\nexport function getSecondOfDayFromISO(date, baseUTCDate) {\r\n if (!date)\r\n return;\r\n\r\n if (!baseUTCDate)\r\n return;\r\n\r\n let segments = date.split('T');\r\n let xmDays = parseInt(segments[0].split('-')[2]) - baseUTCDate;\r\n let timeStrings = segments[1].split(\":\");\r\n let secOfDay = parseInt(timeStrings[0]) * 3600 + parseInt(timeStrings[1]) * 60 + parseInt(timeStrings[2].substr(0, 2));\r\n secOfDay += xmDays * 24 * 3600;\r\n return secOfDay;\r\n\r\n}\r\n\r\nexport function padTo2(num) {\r\n return (\"00\" + num).slice(-2);\r\n}\r\n\r\nexport function formatDateTimeAsSetting(dateStr, type, SystemSettings ) {\r\n let dateValue = parseCSDateTime(dateStr);\r\n if (type == 'datetime') {\r\n return kendo.toString(dateValue, SystemSettings.shortDateFormat + \" \" + SystemSettings.shortTimeFormat);\r\n }\r\n else if (type == 'date') {\r\n return kendo.toString(dateValue, SystemSettings.shortDateFormat);\r\n }\r\n else if (type == 'time') {\r\n return kendo.toString(dateValue, SystemSettings.shortTimeFormat);\r\n }\r\n else {\r\n return dateStr.toString();\r\n }\r\n}\r\n\r\nexport function formatDateTime(date, format) {\r\n if (!Util.isNullOrUndefined(format)) {\r\n return kendo.toString(date, format);\r\n } \r\n else {\r\n return date.toString();\r\n }\r\n}\r\n\r\nexport function parseCSDateTime(csharpTime) {\r\n let safeBrowserformat = csharpTime.replace(/-/g, '/').replace('T', ' ');\r\n return new Date(safeBrowserformat);\r\n}\r\n\r\n\r\n/**\r\n* fromISO assume C# serialize client time in pretented utc format before serialization. It will parse into browser time, to display correct client time.\r\n* The result tick is no longer equal to the same moment.\r\n* @param s string \r\n*/\r\nexport function getDateFromISO(s) {\r\n if (typeof s === 'object') return s;\r\n let day, tz,\r\n rx = /^(\\d{4}-\\d\\d-\\d\\d([tT ][\\d:.]*)?)([zZ]|([+-])(\\d\\d):(\\d\\d))?$/,\r\n p = rx.exec(s) || [];\r\n if (p[1]) {\r\n day = p[1].split(/\\D/);\r\n for (let i = 0, L = day.length; i < L; i++) {\r\n day[i] = parseInt(day[i], 10) || 0;\r\n }\r\n day[1] -= 1;\r\n day = new Date(day[0], day[1], day[2], day[3], day[4], day[5], 0);\r\n if (!day.getDate()) return NaN;\r\n if (p[5]) {\r\n tz = (parseInt(p[5], 10) * 60);\r\n if (p[6]) tz += parseInt(p[6], 10);\r\n if (p[4] === '+') tz *= -1;\r\n if (tz) day.setUTCMinutes(day.getUTCMinutes() + tz);\r\n }\r\n return day;\r\n }\r\n return NaN;\r\n};\r\n\r\nexport function getDateStringAsDisplayValue(datetime) {\r\n if (!datetime.getTime) throw \"Not Date type\";\r\n return datetime.getFullYear() + \"/\" + _padTo2(datetime.getMonth() + 1) + \"/\" + _padTo2(datetime.getDate());\r\n};\r\n\r\nexport function getDateTimeStringAsDisplayValue(datetime) {\r\n if (!datetime.getTime) throw \"Not Date type\";\r\n return datetime.getFullYear() + \"/\" + _padTo2(datetime.getMonth() + 1) + \"/\" + _padTo2(datetime.getDate())\r\n + \" \" + _padTo2(datetime.getHours()) + \":\" + _padTo2(datetime.getMinutes()) + \":\" + _padTo2(datetime.getSeconds());\r\n};\r\n\r\nexport function _padTo2(num) {\r\n return (\"00\" + num).slice(-2);\r\n};\r\n\r\nexport function flexibleTimeParse (str) {\r\n str = str.replace(/\\s/g, '');\r\n if (!str) return null;\r\n\r\n //Convert three-digit military time to four-digit military time\r\n if (/^\\d+$/.test(str) && str.length === 3) str = '0' + str;\r\n\r\n let digitsEnd = 0; //position where digit part of string ends\r\n let colons = 0; //semicolons count\r\n\r\n //find where to split time string positions and count semiclolons in digital part\r\n for (digitsEnd = 0; digitsEnd < str.length; digitsEnd++) {\r\n let chr = str.charAt(digitsEnd);\r\n if (isNaN(chr) && chr != ':') break;\r\n else if (chr == ':') colons++;\r\n }\r\n\r\n //split input to digit and characters part (e.g. \"01:23 PM\" to \"01:23\" and \"PM\"\r\n let digitPart = str.substring(0, digitsEnd);\r\n let charPart = str.substring(digitsEnd);\r\n\r\n if (colons > 1 && digitPart.substring(0, 1) == ':' && digitPart.charAt(digitPart.length - 1) == ':') {\r\n //i.e. 2 or 3 : \":01:23:\" or \":0123:\";\r\n digitPart = digitPart.substring(1, digitPart.length - 2);\r\n colons -= 2;\r\n }\r\n else if (colons == 2 && digitPart.substring(0, 1) == ':') {\r\n //more than one semicolon and one is on the first place\r\n digitPart = digitPart.substring(1, digitPart.length - 1);\r\n colons--;\r\n }\r\n else if (colons == 2 && digitPart.charAt(digitPart.length - 1) == ':') //more than one semicolon and one is on the last place\r\n {\r\n digitPart = digitPart.substring(0, digitPart.length - 1);\r\n colons--;\r\n }\r\n else if (digitPart.charAt(digitPart.length - 1) == ':') {\r\n //one semicolon on the end - means minutes = 0, e.g \"10:\" became \"10:00\"\r\n digitPart = digitPart + '00';\r\n }\r\n else if (digitPart.substring(0, 1) == ':') {\r\n //one semicolon on the beginning - means hours = 0, e.g \":10\" became \"00:10\"\r\n digitPart = '00' + digitPart;\r\n }\r\n\r\n if (colons == 0) //if no semicolons then it inserted befor two digitson the end, e.g. \"1003\" became \"10:03\"\r\n { \r\n if (digitPart.length < 2) digitPart = digitPart.padStart(2, \"0\");\r\n if (digitPart.length < 3) digitPart = digitPart.padEnd(4, \"0\");\r\n digitPart = digitPart.substring(0, 2) + ':' + digitPart.substring(digitPart.length - 2);\r\n }\r\n\r\n let timeArr = digitPart.split(':');\r\n let hours = parseInt(timeArr[0]);\r\n let minutes = parseInt(timeArr[1]);\r\n\r\n if (isNaN(hours) || isNaN(minutes)) return null;\r\n\r\n if (charPart.length > 0) {\r\n let firstChar = charPart.toLowerCase().substring(0, 1);\r\n if (firstChar == 'x' && hours != 12)\r\n hours += 24;\r\n else if (firstChar == 'x' && hours == 12)\r\n hours = 24;\r\n else if (firstChar == 'p' && hours != 12)\r\n hours += 12;\r\n else if (firstChar == 'a' && hours == 12)\r\n hours = 0;\r\n }\r\n\r\n return { hour: hours, minute: minutes };\r\n}\r\n\r\nexport function stripTimeFromDate(date) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\r\n}\r\n\r\nexport function parseISODateWithNoTime(str) {\r\n if (!str) return null;\r\n let arr = str.split('-');\r\n return new Date(parseInt(arr[0]), parseInt(arr[1]) - 1, parseInt(arr[2]));\r\n}\r\n\r\nexport function parseISODateWithTimeOnly(str) {\r\n if (!str) return null;\r\n let arr = str.split(':');\r\n return new Date(2000, 1, 1, parseInt(arr[0]), parseInt(arr[1]), parseInt(arr[2]));\r\n}\r\n\r\nexport function isValidDate(date) {\r\n return date && Object.prototype.toString.call(date) === \"[object Date]\" && !isNaN(date);\r\n}\r\n\r\nexport function isDate(str) { \r\n if (!str) return false;\r\n str = str.toString();\r\n if (!isNaN(str)) return false;\r\n let momentDate = moment(str); \r\n return momentDate.isValid();\r\n}\r\n\r\n/* Returns a string of the passed date at midnight, for passing dates to Web API\r\n */\r\nexport function getMidnightDateString(date) {\r\n let year = date.getFullYear();\r\n let month = date.getMonth() + 1;\r\n if (month <= 9) month = '0' + month;\r\n let day = date.getDate();\r\n if (day <= 9) day = '0' + day;\r\n return year + '-' + month + '-' + day + 'T00:00:00';\r\n}\r\n\r\nexport function convertToUTC(date) {\r\n return new Date(date.getTime() + date.getTimezoneOffset() * 60000); \r\n}\r\n\r\nexport function convertScheduleDate(schDate) {\r\n if (schDate) {\r\n var currentDate = new Date(schDate);\r\n var fullYear = currentDate.getFullYear().toString().substr(2, 2);\r\n var month = _padTo2((currentDate.getMonth() + 1), 2);\r\n var date = _padTo2(currentDate.getDate(), 2);\r\n return fullYear + '-' + month + '-' + date;\r\n } else\r\n return 'Onwards';\r\n}\r\n\r\n\r\nexport function formatMinutes(minutes) {\r\n if (!minutes) return '0:00';\r\n var timeHours = Math.floor(minutes / 60);\r\n var timeMinutes = Math.round(minutes % 60);\r\n if (timeMinutes < 10) timeMinutes = '0' + timeMinutes;\r\n return timeHours + ':' + timeMinutes;\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\n\r\nexport function kendoAlert(text, title, buttonText, onCloseCallback, isError = false) {\r\n const kendoAlertContainer = document.createElement(\"div\");\r\n document.body.append(kendoAlertContainer);\r\n\r\n const onClose = () => {\r\n //Destroy dialog component and remove container from DOM\r\n ReactDOM.unmountComponentAtNode(kendoAlertContainer);\r\n kendoAlertContainer.remove();\r\n }\r\n\r\n const onCloseWithCallback = () => {\r\n onClose();\r\n //Call the callback passed as a parameter, if any\r\n if (onCloseCallback) onCloseCallback();\r\n }\r\n\r\n if (!title) title = '\\xa0';\r\n if (!buttonText) buttonText = 'OK';\r\n\r\n let newText = text.split('\\n').map((item, i) =>

{item}

);\r\n\r\n const dialogJsx = (\r\n \r\n
\r\n {newText}\r\n
\r\n \r\n {buttonText}\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n ReactDOM.render(dialogJsx, kendoAlertContainer);\r\n}\r\n\r\nexport function kendoConfirm(text, title, onConfirmCallback, onCancelCallback, width = null, okayButtonText = 'OK', cancelButtonText = 'Cancel') {\r\n const kendoAlertContainer = document.createElement(\"div\");\r\n document.body.append(kendoAlertContainer);\r\n\r\n const onConfirm = () => {\r\n //Destroy dialog component and remove container from DOM\r\n ReactDOM.unmountComponentAtNode(kendoAlertContainer);\r\n kendoAlertContainer.remove();\r\n\r\n //Call the callback passed as a parameter, if any\r\n if (onConfirmCallback) onConfirmCallback();\r\n }\r\n\r\n const onCancel = () => {\r\n //Destroy dialog component and remove container from DOM\r\n ReactDOM.unmountComponentAtNode(kendoAlertContainer);\r\n kendoAlertContainer.remove();\r\n\r\n if (onCancelCallback) onCancelCallback();\r\n }\r\n\r\n if (!title) title = '\\xa0';\r\n\r\n const dialogJsx = (\r\n \r\n
\r\n

\r\n

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

\r\n
\r\n
\r\n );\r\n\r\n ReactDOM.render(dialogJsx, kendoAlertContainer);\r\n}\r\n\r\nexport function showMessage(title, message, onCloseCallback, isDiabledMessage = false) {\r\n\r\n const existingKendoAlertContainer = document.getElementById('showMessageDialog');\r\n if (existingKendoAlertContainer) removeElement(existingKendoAlertContainer);\r\n\r\n const kendoAlertContainer = document.createElement(\"div\");\r\n kendoAlertContainer.setAttribute(\"id\", \"showMessageDialog\");\r\n document.body.append(kendoAlertContainer);\r\n\r\n const onClose = () => {\r\n ////Destroy dialog component and remove container from DOM\r\n //ReactDOM.unmountComponentAtNode(kendoAlertContainer);\r\n //kendoAlertContainer.remove();\r\n\r\n removeElement(kendoAlertContainer);\r\n }\r\n\r\n const onCloseWithCallback = () => {\r\n onClose();\r\n //Call the callback passed as a parameter, if any\r\n if (onCloseCallback) onCloseCallback();\r\n }\r\n\r\n if (!title) title = '\\xa0'; \r\n const strong = ({ children }) => ;\r\n\r\n\r\nconst dialogJsx = (\r\n \r\n
\r\n
\r\n {!isDiabledMessage &&

\r\n \r\n

}\r\n
\r\n
\r\n);\r\n\r\nReactDOM.render(dialogJsx, kendoAlertContainer);\r\n}\r\n\r\nfunction removeElement(elment) {\r\n ReactDOM.unmountComponentAtNode(elment);\r\n elment.remove();\r\n}\r\n\r\n","import React from 'react';\r\n\r\nexport const SystemSettingContext = React.createContext({});\r\n\r\n//export const Provider = SystemSettingContext.Provider;\r\n//export const Consumer = SystemSettingContext.Consumer;","import axios from 'axios';\n\nlet alertDiv;\nfunction updateOnlineStatus(event) {\n if (!navigator.onLine && !alertDiv) {\n alertDiv = document.createElement('div');\n alertDiv.id = 'alertDiv';\n alertDiv.style =\n 'text-align:center; position:fixed; display:inline-block; width:100%;min-height:60px;box-sizing: border-box; font-weight:bold; color:#a94442;border-color:#dca7a7; background-image:linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);padding:15px; border-radius:4px; z-index:9999';\n alertDiv.innerText = 'No internet connection is available.';\n document.getElementsByTagName('body')[0].appendChild(alertDiv);\n } else if (alertDiv && navigator.onLine) {\n document.getElementsByTagName('body')[0].removeChild(alertDiv);\n alertDiv = null;\n }\n}\n\nwindow.addEventListener('load', updateOnlineStatus);\nwindow.addEventListener('online', updateOnlineStatus);\nwindow.addEventListener('offline', updateOnlineStatus);\nwindow.addEventListener('beforeunload', (e) => {\n if (!navigator.onLine) {\n window.stop();\n e.preventDefault();\n console.log('no connection and if you reload you will loose contents');\n }\n});\n\naxios.interceptors.request.use(\n (config) => {\n var connection = navigator.onLine;\n config.withCredentials = true;\n if (!connection) {\n return Promise.reject(\n 'Request can not be processed because no internet connection is available',\n );\n }\n var rawUser = localStorage.getItem('user');\n if (rawUser) {\n var user = JSON.parse(localStorage.getItem('user'));\n config.headers.Authorization = `Bearer ${user.authToken}`;\n }\n //config.url += \"/\";\n return config;\n },\n (error) => {\n console.log(error);\n return Promise.reject(error);\n },\n);\n\naxios.interceptors.response.use(\n (response) => {\n if (response.status === 401) logOut();\n return response;\n },\n (error) => {\n if (error.response && error.response.status === 401) logOut();\n if (\n error.response &&\n error.response.data &&\n error.response.data.ErrorMessage\n )\n console.log(error.response.data.ErrorMessage);\n try {\n if (\n error.response &&\n error.response.data &&\n !error.response.data.ErrorMessage &&\n error.response.data.toLowerCase().search('accessdenied') !== -1\n ) {\n logOut();\n } else console.log(error.message);\n } catch (e) {}\n return Promise.reject(error);\n },\n);\n\nfunction logOut() {\n localStorage.clear();\n window.location = '/';\n}\n","import React, { Component } from 'react';\r\nimport './Login.scss';\r\n\r\nexport default class LoginPresentation extends Component {\r\n\r\n state = {\r\n username: localStorage.getItem('username') || '',\r\n password: '',\r\n rememberUsername: false\r\n }\r\n\r\n handleInputChange = (event) => this.setState({ [event.target.name]: event.target.type === 'checkbox' ? event.target.checked : event.target.value })\r\n\r\n onSubmit = (e) => {\r\n e.preventDefault();\r\n this.props.onSubmit(this.state.username, this.state.password, this.state.rememberUsername);\r\n }\r\n\r\n render() { \r\n return (\r\n
\r\n

WELCOME

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

\r\n \r\n

\r\n

\r\n \r\n

\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}","import React from 'react';\r\nimport smiLogo from '../../images/smi_logo.png';\r\nimport './LoginHeader.scss';\r\nimport Util from '../../Utils/Util';\r\n\r\nexport default (props) => { \r\n if (Util.isNullOrUndefined(props.customLogoUrl)) return null;\r\n return (\r\n
\r\n \r\n \"Strategic\r\n \r\n \"Transit\r\n
\r\n )\r\n}","import React, { Component } from 'react';\r\nimport axios from 'axios';\r\n\r\n\r\nexport default class ForgotPasswordPresentation extends Component {\r\n\r\n state = {\r\n email: '',\r\n isSuccess: false\r\n }\r\n\r\n handleInputChange = (event) => this.setState({ [event.target.name]: event.target.type === 'checkbox' ? event.target.checked : event.target.value })\r\n\r\n onSubmit = (e) => {\r\n e.preventDefault();\r\n \r\n //this.props.onSubmit(this.state.email);\r\n axios.post('/api/ResetPassword', { emailAddress: this.state.email.toString() }).then((response => {\r\n this.setState({ isSuccess: true });\r\n }),\r\n (Error) => {\r\n this.setState({ isSuccess: false });\r\n });\r\n };\r\n\r\n render() {\r\n\r\n const SuccessMessage = () => (

Check your email for your new temporary password.

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

FORGOT YOUR PASSWORD?

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

Enter your email below and we'll send you a link to reset your password

\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.isSuccess && }\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n","import React from 'react';\r\n\r\nimport './CompatibilityTagline.css';\r\n\r\nexport default () => (\r\n

\r\n Best viewed on Google Chrome, Microsoft Edge, or Mozilla Firefox
\r\n Ideal screen resolution of at least 1376x768\r\n

\r\n);","import React from 'react';\r\n\r\nimport './CompatibilityTagline.css';\r\n\r\nexport default (props) => {\r\n const queryStr = `smiuser=${props.username}&keyid=${props.guid}&origin=${window.location.origin}`;\r\n return (\r\n
\r\n

SMI LOGIN

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n","import React, { Component } from 'react';\r\nimport LoginPresentation from './LoginPresentation';\r\nimport LoginHeaderPresentation from './LoginHeaderPresentation';\r\nimport ForgotPasswordPresentation from './ForgotPasswordPresentation';\r\nimport CompatibilityTaglinePresentation from './CompatibilityTaglinePresentation';\r\nimport SMILoginPresentation from './SMILoginPresentation';\r\nimport axios from 'axios';\r\nimport queryString from 'query-string';\r\nimport Util, { getGuid } from '../../Utils/Util';\r\n\r\nexport default class Login extends Component { \r\n\r\n state = {\r\n isSmiLogin: false,\r\n isForgotPassword: false,\r\n smiUsername: '',\r\n smiGuid: '',\r\n errorMessage: '',\r\n customLogoUrl: null,\r\n inProgress: false\r\n }\r\n\r\n counter = 0;\r\n\r\n componentWillMount() {\r\n axios.get(\"/api/InitialSettings\").then(response => {\r\n var settings = response.data;\r\n this.setState({ customLogoUrl: settings.customLogoUrl });\r\n });\r\n }\r\n componentDidMount() { \r\n const parsed = queryString.parse(window.location.search);\r\n\r\n if (parsed && parsed.ticket && parsed.username && this.counter === 0 && this.state.inProgress === false) {\r\n this.counter = 1;\r\n this.setState({ inProgress: true, errorMessage: '' });\r\n axios.post('/api/SMILogin/LoginUserWithTicket', { loginTicket: parsed.ticket, userName: parsed.username }).then(response => {\r\n if (response.data.result == 1) {\r\n localStorage.setItem('user', JSON.stringify(response.data));\r\n this.setState({ isSmiLogin: true });\r\n this.props.onLoginSuccess();\r\n this.counter = 0;\r\n }\r\n else {\r\n this.setState({ errorMessage: response.data.responseMessage });\r\n this.counter = 0;\r\n }\r\n\r\n }).catch((err) => {\r\n this.setState({ errorMessage: err.response.data.responseMessage, inProgress: false });\r\n console.log(err.response);\r\n this.counter = 0;\r\n })\r\n }\r\n\r\n window.addEventListener('message', this.onSmiLoginMessage);\r\n }\r\n\r\n onLoginSubmit = (username, password, rememberUsername) => {\r\n if (rememberUsername) localStorage.setItem('username', username);\r\n else localStorage.removeItem('username');\r\n this.setState({ inProgress: true, errorMessage: '' });\r\n const mapstratPos = username.indexOf('@mapstrat');\r\n if (mapstratPos !== -1) {\r\n //Load dialog for mapstrat user login\r\n axios.get('/api/SMILogin').then(response => {\r\n const guid = getGuid();\r\n const xmlPublicKey = response.data;\r\n var authenInfo = { id: guid, pubkey: xmlPublicKey };\r\n axios.post('https://api.mapstrat.com/api/ClientPubKey', authenInfo);\r\n this.setState({ isSmiLogin: true, inProgress: false, smiUsername: username.substr(0, mapstratPos + 9), smiGuid: guid });\r\n }).catch((err) => {\r\n let _errorMessage = 'Login Failed';\r\n if (err && err.response && err.response.data && err.response.data.responseMessage)\r\n _errorMessage = err.response.data.responseMessage;\r\n\r\n this.setState({ errorMessage: _errorMessage, isSmiLogin: false, inProgress: false });\r\n console.log(err.response); \r\n });\r\n }\r\n else {\r\n //axios call to login API\r\n axios.post('/api/SMILogin', { userName: username, password: password }).then((response) => { \r\n if (response.data.result === 1) { // result 1 means login success\r\n localStorage.setItem('user', JSON.stringify(response.data));\r\n this.setState({ isSmiLogin: true }); \r\n this.props.onLoginSuccess();\r\n }\r\n else if (response.data.result === 6) //result 6 means much change password\r\n {\r\n this.props.onChangePassword();\r\n }\r\n else {\r\n this.setState({ errorMessage: response.data.responseMessage });\r\n }\r\n this.setState({ inProgress: false });\r\n }).catch((err) => { \r\n let _errorMessage = 'Login Failed';\r\n if (err && err.response && err.response.data && err.response.data.responseMessage)\r\n _errorMessage = err.response.data.responseMessage;\r\n\r\n this.setState({ errorMessage: _errorMessage, inProgress: false });\r\n console.log(err.response);\r\n });\r\n }\r\n }\r\n\r\n onSmiLoginMessage = (e) => {\r\n const data = e && e.data;\r\n if (data && data.message === 'SMILOGIN') { \r\n axios.post('/api/SMILogin/SMILogin', { userName: this.state.smiUsername, SmiPass: data.passToken }).then((response) => {\r\n localStorage.setItem('user', JSON.stringify(response.data));\r\n this.setState({ isSmiLogin: true }); \r\n this.props.onLoginSuccess();\r\n }).catch((err) => {\r\n let _errorMessage = 'Login Failed';\r\n if (err && err.response && err.response.data && err.response.data.responseMessage)\r\n _errorMessage = err.response.data.responseMessage;\r\n\r\n this.setState({ errorMessage: _errorMessage, isSmiLogin: false, inProgress: false });\r\n console.log(err.response);\r\n });\r\n }\r\n }\r\n\r\n onForgotPassword = () => {\r\n this.setState({ isForgotPassword: true });\r\n }\r\n\r\n onForgotPasswordSubmit = (email) => {\r\n //axios call to forgot password API goes here\r\n this.setState({ isForgotPassword: false });\r\n }\r\n\r\n onForgotPasswordCancel = () => {\r\n this.setState({ isForgotPassword: false });\r\n }\r\n\r\n onSmiLoginCancel = () => {\r\n this.setState({ isSmiLogin: false })\r\n }\r\n \r\n render() { \r\n\r\n if (Util.isNullOrUndefined(this.state.customLogoUrl)) return null;\r\n return (\r\n \r\n \r\n {this.state.isForgotPassword && }\r\n {this.state.isSmiLogin && }\r\n {!this.state.isSmiLogin && !this.state.isForgotPassword && }\r\n \r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\nimport { Route } from 'react-router-dom';\n\n\nconst HardwareRegistrationPage = React.lazy(() => import('../../pages/Mobile/HardwareRegistrationPage'));\nconst HardwareAssignmentPage = React.lazy(() => import('../../pages/Mobile/HardwareRegistrationPage'));\nconst SwitchCommunity = React.lazy(() => import('../../pages/Mobile/SwitchCommunity'));\n\nexport default class MobileRoutes extends Component {\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import './MobileMainPage.css';\r\nimport React, { useState, Suspense } from 'react';\r\nimport axios from 'axios';\r\nimport { Router, BrowserRouter, Link } from 'react-router-dom';\r\nimport MobileRoutes from '../MobileRoutes/MobileRoutes';\r\nimport { createBrowserHistory } from 'history';\r\nimport HardwareRegistrationPage from '../../pages/Mobile/HardwareRegistrationPage';\r\nimport SwitchCommunity from '../../pages/Mobile/SwitchCommunity';\r\nimport MainPage from '../MainPage/MainPage';\r\n\r\nexport default class MobileMainPage extends React.Component {\r\n\r\n state = {\r\n baseUrl: '',\r\n isCommunity: false,\r\n canHardwareRegister: false,\r\n checkingPermission: false\r\n }\r\n\r\n componentDidMount() {\r\n this.changeViewportForMobile();\r\n this.setState({ checkingPermission: true });\r\n axios.get(\"/api/HasOperation?operation=HardwareRegistration\").then(response => {\r\n if (response.data) this.setState({ canHardwareRegister: true, checkingPermission: false });\r\n else this.setState({ canHardwareRegister: false, checkingPermission: false });\r\n }).catch(err => this.setState({ checkingPermission: false }));\r\n\r\n axios.get('/api/Communities').then(result => {\r\n if (result.data && result.data.length > 0) {\r\n this.setState({ baseUrl: '/Mobile/SwitchCommunity', isCommunity: true });\r\n\r\n }\r\n else {\r\n this.setState({ baseUrl: '/Mobile/HardwareRegistration', isCommunity: false });\r\n }\r\n })\r\n }\r\n\r\n changeViewportForMobile = () => {\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\r\n\r\n var ww = window.screen.width;\r\n var mw = 1200; // min width of site\r\n var ratio = ww / mw; //calculate ratio\r\n var viewport_meta_tag = document.getElementById('viewport');\r\n if (ww < mw) { //smaller than minimum size\r\n viewport_meta_tag.setAttribute('content', `width=device-width, initial-scale=1`);\r\n }\r\n\r\n }\r\n }\r\n\r\n RenderPage(props) {\r\n const isCommunityPage = props.isCommunityPage;\r\n\r\n var uri = window.location.toString();\r\n\r\n if (uri && uri.indexOf(\"?\") > 0) {\r\n var cleanUri = uri.substring(0, uri.indexOf(\"?\"));\r\n window.history.replaceState({}, document.title, cleanUri);\r\n }\r\n\r\n if (isCommunityPage) {\r\n return \r\n }\r\n else if (props.canHardwareRegister) {\r\n return \r\n }\r\n else if (props.checkingPermission) {\r\n return
\r\n Wait... Checking your permission\r\n
\r\n }\r\n else if (!props.canHardwareRegister && !props.checkingPermission)\r\n return \r\n }\r\n\r\n\r\n\r\n history = createBrowserHistory({ basename: this.state.baseUrl })\r\n\r\n render() {\r\n\r\n let communityCheck = this.state.isCommunity;\r\n\r\n\r\n return (\r\n \r\n );\r\n }\r\n}","import './UploadIncidentAttachment.scss';\r\n\r\nimport * as $ from 'jquery';\r\nimport axios from 'axios';\r\nimport React, { Fragment, useState, useEffect } from 'react';\r\nimport query from 'query-string';\r\n\r\nexport default () => {\r\n const [state, setValue] = useState({\r\n IsValidLink: false,\r\n IncidentId: -1,\r\n IncidentType: '',\r\n key: '',\r\n isLoaded: false,\r\n files: null,\r\n isFileUploading: false\r\n });\r\n\r\n useEffect(() => {\r\n var params = query.parse(window.location.search); \r\n if (params) {\r\n axios.get(`/api/UploadLinkValidate?key=${params.key}&incidentId=${params.incidentId}`).then(res => { \r\n setValue({ ...state, IsValidLink: res.data.isValidLink, isLoaded:true, key: params.key, IncidentId: params.incidentId, IncidentType: res.data.incidentType });\r\n }).catch(err => {\r\n console.log(err.message);\r\n setValue({ ...state, isLoaded: true });\r\n });\r\n }\r\n }, []);\r\n\r\n const openFileSelector = (e) => {\r\n e.preventDefault();\r\n $('#fileNameField').blur();\r\n if (!state.isFileUploading) $('#fileUpload').click(); \r\n }\r\n\r\n const onChange = e => { \r\n var file = e.target.files[0];\r\n if (!file) return;\r\n setValue({ ...state, files: e.target.files });\r\n $('#fileNameField').val(file.name);\r\n $('#uploadButton').show();\r\n }\r\n\r\n const uploadFiles = (e) => {\r\n e.preventDefault();\r\n var file = state.files[0];\r\n if (!file) return;\r\n setValue({ ...state, isFileUploading: true }); \r\n var formdata = new FormData();\r\n formdata.append('file', file);\r\n $('#uploadButton').addClass('clicked');\r\n $('#uploadButton').show();\r\n\r\n axios.post(`/api/IncidentAttachment?incidentId=${state.IncidentId}&key=${state.key}`, formdata).then(res => { \r\n setValue({ ...state, isFileUploading: false });\r\n $('#uploadButton').removeClass('clicked').hide();\r\n $('#fileNameField').val('');\r\n $('#uploadSuccess').show().delay(2400).fadeOut(800);\r\n }).catch(err => {\r\n console.log(err.message);\r\n setValue({ ...state, isFileUploading: false });\r\n $('#uploadButton').removeClass('clicked').hide();\r\n });\r\n }\r\n return (\r\n
\r\n {state.IsValidLink && (\r\n \r\n

Upload Incident Attachment

\r\n

Incident {state.IncidentId}: {state.IncidentType}

\r\n
\r\n \r\n onChange(e)} style={{ display: \"none\" }} />\r\n \r\n
\r\n Upload\r\n
\r\n File Uploaded\r\n
\r\n
\r\n )}\r\n {!state.IsValidLink && state.isLoaded && (\r\n < h3 className=\"center\" id=\"expiredMessage\">Sorry, your attachment upload link has expired)\r\n }\r\n
\r\n );\r\n}","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n try {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n } catch (e) {\r\n if (e.name !== \"SecurityError\") {\r\n throw e;\r\n }\r\n }\r\n}\r\n","import 'react-app-polyfill/ie11';\r\nimport './OfflineFunctinality';\r\nimport './index.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport App from './App';\r\nimport registerServiceWorker, { unregister } from './registerServiceWorker';\r\nimport * as Sentry from '@sentry/browser';\r\nimport store from './reducers/Index';\r\n\r\n\r\n//Initialize JavaScript error tracking with Sentry unless we're running on localhost\r\nif (window.location.host.indexOf('localhost') !== 0) {\r\n Sentry.init({\r\n dsn: 'https://d19cbee58793409f8628635f766908e5@sentry.io/1476573'\r\n });\r\n}\r\n\r\nconst rootElement = document.getElementById('root');\r\n\r\nunregister();\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\nrootElement);\r\n////Commented out the service worker because it prevents to get the current directory\r\n//// For an example,if you enter nanaimo.dev.mapstrat.com/current, it redirects to login \r\n//// page instead of showing /current directory files\r\n//registerServiceWorker();\r\n","import React, { useState, useEffect } from 'react';\r\nimport Login from './components/Login/Login';\r\nimport MainPage from './components/MainPage/MainPage';\r\nimport ChangePassword from '../src/pages/Settings/ChangePassword/ChangePassword';\r\nimport { SystemSettingContext } from './SystemSettingContext';\r\nimport * as DateUtils from \"../src/Utils/DateUtil\";\r\nimport axios from 'axios';\r\nimport MobileMainPage from './components/MobileRoutes/MobileMainPage';\r\nimport HardwareRegistrationPage from './pages/Mobile/HardwareRegistrationPage';\r\nimport UploadIncidentAttachment from './pages/View/ReduxIncidentListing/UploadIncidentAttachment';\r\nimport LoadingPanel from './components/SMIGrid/LoadingPanel';\r\nimport Media from 'react-media';\r\nimport Util from './Utils/Util';\r\nimport queryString from 'query-string';\r\n\r\nexport default () => {\r\n const [isLoggedIn, setIsLoggedIn] = useState(false);\r\n const [isForceChangePassword, setForceChangePassword] = useState(false);\r\n const [SystemSettings, setSystemSettings] = useState(null);\r\n const [isMobileLogin, setIsMobileLogin] = useState(false);\r\n const [isIncidentAttachment, setIsIncidentAttachment] = useState(false);\r\n const [isAuthTokenVarifing, SetAuthTokenVarifiedFlag] = useState(true);\r\n const [isSystemSettigsLoaded, SetSystemSettingLoadFlag] = useState(false);\r\n\r\n useEffect(() => {\r\n let location = window.location;\r\n if (location && location.pathname && location.pathname.indexOf('View/Incidents/UploadIncidentAttachment') !== -1) {\r\n setIsIncidentAttachment(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (window.innerWidth > 600 && window.screen.width > 600) {\r\n setIsMobileLogin(false);\r\n }\r\n else {\r\n setIsMobileLogin(true);\r\n }\r\n }, [isMobileLogin]);\r\n\r\n\r\n useEffect(() => {\r\n if (sessionStorage.getItem('changePassword') && sessionStorage.getItem('changePassword') === 'true' && !isForceChangePassword) {\r\n setForceChangePassword(true);\r\n }\r\n }, [isForceChangePassword]);\r\n\r\n useEffect(() => {\r\n const parsed = queryString.parse(window.location.search);\r\n if (parsed && parsed.ticket && parsed.username) {\r\n window.history.replaceState({}, document.title, \"/\");\r\n localStorage.clear();\r\n SetAuthTokenVarifiedFlag(true);\r\n axios.post('/api/SMILogin/LoginUserWithTicket', { loginTicket: parsed.ticket, userName: parsed.username }).then(response => {\r\n if (response.data.result == 1) {\r\n localStorage.setItem('user', JSON.stringify(response.data));\r\n loadSystemSettings();\r\n }\r\n else {\r\n logOut();\r\n }\r\n\r\n }).catch((err) => {\r\n SetAuthTokenVarifiedFlag(false);\r\n });\r\n }\r\n else if (localStorage.getItem('user')) {\r\n SetAuthTokenVarifiedFlag(true);\r\n var user = JSON.parse(localStorage.getItem('user'));\r\n axios.post('/api/SmiLogin/LoginwithAuthToken', { UserName: user.username, Token: user.authToken })\r\n .then(response => {\r\n if (response.data.result === 1) { // result 1 means login success\r\n localStorage.setItem('user', JSON.stringify(response.data));\r\n loadSystemSettings();\r\n }\r\n else {\r\n logOut();\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n logOut();\r\n SetAuthTokenVarifiedFlag(false);\r\n });\r\n }\r\n else {\r\n SetAuthTokenVarifiedFlag(false);\r\n }\r\n }, []);\r\n\r\n const loadSystemSettings = () => {\r\n axios.get('/api/SystemSettings').then((response) => {\r\n window.SystemSettings = response.data;\r\n window.SystemSettings.currentServerTime = new Date(window.SystemSettings.currentServerTime);\r\n window.SystemSettings.serverPageLoadTime = window.SystemSettings.currentServerTime;\r\n window.SystemSettings.clientPageLoadTime = new Date();\r\n window.SystemSettings.localServerTimeDiff = new Date().getTime() - window.SystemSettings.currentServerTime.getTime();\r\n window.SystemSettings.getCurrentServerTime = function () {\r\n var offset = window.SystemSettings.serverPageLoadTime.getTime() - window.SystemSettings.clientPageLoadTime.getTime();\r\n var currentTime = new Date(new Date().getTime() + offset);\r\n return currentTime;\r\n };\r\n\r\n setIsLoggedIn(true);\r\n localStorage.setItem('isLoggedIn', true);\r\n SetAuthTokenVarifiedFlag(false);\r\n SetSystemSettingLoadFlag(true);\r\n setSystemSettings(response.data);\r\n }).catch((err) => { });\r\n }\r\n\r\n const logOut = () => {\r\n localStorage.clear();\r\n window.location = \"/\";\r\n }\r\n\r\n if (isIncidentAttachment)\r\n return ;\r\n\r\n const onLoginSuccess = e => {\r\n localStorage.setItem('isLoggedIn', true);\r\n setIsLoggedIn(true);\r\n loadSystemSettings();\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n {!isLoggedIn && !isForceChangePassword && !isAuthTokenVarifing && { setForceChangePassword(true); sessionStorage.setItem('changePassword', 'true'); }} />}\r\n
\r\n \r\n {matches =>\r\n isMobileLogin ? (\r\n (isLoggedIn && )\r\n ) : (\r\n (isLoggedIn && )\r\n )\r\n }\r\n \r\n
\r\n {isAuthTokenVarifing && ()}\r\n {!isLoggedIn && isForceChangePassword && }\r\n
\r\n
);\r\n}","import React from 'react';\r\n\r\nexport default () => (\r\n
\r\n

\r\n

The application has encountered an error. A notification has been sent to our team of expert developers and we'll look into it. In the meantime you may want to try using a different feature of the app or reloading and trying again.

\r\n
\r\n);","import React, { Component } from 'react';\r\nimport * as Sentry from '@sentry/browser';\r\nimport ErrorBoundaryPresentation from './ErrorBoundaryPresentation';\r\nimport { getWithExpiry, setWithExpiry } from \"./Storage\";\r\n\r\n\r\nexport default class ErrorBoundary extends Component {\r\n state = {\r\n error: null\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n this.setState({ error });\r\n\r\n //Send error to Sentry\r\n Sentry.withScope(scope => {\r\n Object.keys(errorInfo).forEach(key => {\r\n scope.setExtra(key, errorInfo[key]);\r\n });\r\n Sentry.captureException(error);\r\n });\r\n\r\n //Write error to console\r\n console.error(error);\r\n console.error(errorInfo);\r\n\r\n const chunkFailedMessage = /Loading chunk [\\d]+ failed/;\r\n if (error&& error.message && chunkFailedMessage.test(error.message)) {\r\n if (!getWithExpiry(\"chunk_failed\")) {\r\n setWithExpiry(\"chunk_failed\", \"true\", 10000);\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n //render fallback UI\r\n return (\r\n \r\n );\r\n } else {\r\n //when there's not an error, render children untouched\r\n return this.props.children;\r\n }\r\n }\r\n}","\r\nexport function setWithExpiry(key, value, ttl) {\r\n const item = {\r\n value: value,\r\n expiry: new Date().getTime() + ttl\r\n };\r\n localStorage.setItem(key, JSON.stringify(item));\r\n}\r\n\r\nexport function getWithExpiry(key) {\r\n const itemString = window.localStorage.getItem(key);\r\n if (!itemString) return null;\r\n\r\n const item = JSON.parse(itemString);\r\n const isExpired = new Date().getTime() > item.expiry;\r\n\r\n if (isExpired) {\r\n localStorage.removeItem(key);\r\n return null;\r\n }\r\n\r\n return item.value;\r\n}","import React from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary';\r\n\r\n//Wraps a route in an error boundary so that even if the page encounters an error, other routes remain accessible\r\nexport default (props) => (\r\n \r\n \r\n \r\n)","\n //This is auto generated component. Do not change the generated file. If you need to add or change anything, please change or add in Portal.Sitemap\n //Generated on Wed Mar 29 2023 08:24:23 GMT-0400 (Eastern Daylight Time)\n\n import React from 'react';\n import Route from './SafeRoute';\n\n\n\t\t\tconst Vehicle = React.lazy(() => import('../../pages/View/Vehicle'));\r\n\t\t\tconst ViewAvailability = React.lazy(() => import('../../pages/View/ViewAvailability'));\r\n\t\t\tconst ViewVehicleHistory = React.lazy(() => import('../../pages/View/ViewVehicleHistory'));\r\n\t\t\tconst ViewVehicleHistoryExFull = React.lazy(() => import('../../pages/View/ViewVehicleHistoryExFull'));\r\n\t\t\tconst ViewVehicleHistoryEx = React.lazy(() => import('../../pages/View/ViewVehicleHistoryEx'));\r\n\t\t\tconst ViewRoutes = React.lazy(() => import('../../pages/View/ViewRoutes'));\r\n\t\t\tconst ViewDailySchedule = React.lazy(() => import('../../pages/View/ViewDailySchedule'));\r\n\t\t\tconst DriverArrivalStatus = React.lazy(() => import('../../pages/View/DriverArrivalStatus'));\r\n\t\t\tconst RefusalList = React.lazy(() => import('../../pages/View/RefusalList'));\r\n\t\t\tconst IncidentListing = React.lazy(() => import('../../pages/View/IncidentListing'));\r\n\t\t\tconst EngineDiagnostics = React.lazy(() => import('../../pages/View/EngineDiagnostics'));\r\n\t\t\tconst EngineDiagnosticReport = React.lazy(() => import('../../pages/View/EngineDiagnosticReport'));\r\n\t\t\tconst Zones = React.lazy(() => import('../../pages/Maintain/Zones/Zones'));\r\n\t\t\tconst ZoneTypes = React.lazy(() => import('../../pages/Maintain/Zones/ZoneTypes'));\r\n\t\t\tconst DailyBlockEdit = React.lazy(() => import('../../pages/Maintain/DailySchedule/DailyBlockEdit'));\r\n\t\t\tconst ReduxDetour = React.lazy(() => import('../../pages/Maintain/DailySchedule/ReduxDetour'));\r\n\t\t\tconst Schedule = React.lazy(() => import('../../pages/Maintain/Scheduling/Schedule'));\r\n\t\t\tconst Direction = React.lazy(() => import('../../pages/Maintain/Scheduling/Direction'));\r\n\t\t\tconst Transfer = React.lazy(() => import('../../pages/Maintain/Scheduling/Transfer'));\r\n\t\t\tconst TransferAudio = React.lazy(() => import('../../pages/Maintain/Scheduling/TransferAudio'));\r\n\t\t\tconst ServiceList = React.lazy(() => import('../../pages/Maintain/Scheduling/ServiceList'));\r\n\t\t\tconst ServiceDates = React.lazy(() => import('../../pages/Maintain/Scheduling/ServiceDates'));\r\n\t\t\tconst TaggedDates = React.lazy(() => import('../../pages/Maintain/Scheduling/TaggedDates'));\r\n\t\t\tconst StopEdit = React.lazy(() => import('../../pages/Maintain/Scheduling/StopEdit'));\r\n\t\t\tconst InterStop = React.lazy(() => import('../../pages/Maintain/Scheduling/InterStop'));\r\n\t\t\tconst MaintainRoute = React.lazy(() => import('../../pages/Maintain/Scheduling/MaintainRoute'));\r\n\t\t\tconst HeadSignAssign = React.lazy(() => import('../../pages/Maintain/Scheduling/HeadSignAssign'));\r\n\t\t\tconst Pattern = React.lazy(() => import('../../pages/Maintain/Scheduling/Pattern'));\r\n\t\t\tconst MaintainTrips = React.lazy(() => import('../../pages/Maintain/Scheduling/MaintainTrips'));\r\n\t\t\tconst Block = React.lazy(() => import('../../pages/Maintain/Scheduling/Block'));\r\n\t\t\tconst Pieces = React.lazy(() => import('../../pages/Maintain/Scheduling/Pieces'));\r\n\t\t\tconst MaintainVehicles = React.lazy(() => import('../../pages/Maintain/Vehicles/MaintainVehicles'));\r\n\t\t\tconst VehicleCategory = React.lazy(() => import('../../pages/Maintain/Vehicles/VehicleCategory'));\r\n\t\t\tconst ServiceStatus = React.lazy(() => import('../../pages/Maintain/Vehicles/ServiceStatus'));\r\n\t\t\tconst Inspection = React.lazy(() => import('../../pages/Maintain/Inspection/Inspection'));\r\n\t\t\tconst VehicleInspection = React.lazy(() => import('../../pages/Maintain/Inspection/VehicleInspection'));\r\n\t\t\tconst WorkAssignments = React.lazy(() => import('../../pages/Maintain/DriverSchedule/WorkAssignments'));\r\n\t\t\tconst HardwareRegistration = React.lazy(() => import('../../pages/Maintain/Hardware/HardwareRegistration'));\r\n\t\t\tconst HardwareStatus = React.lazy(() => import('../../pages/Maintain/Hardware/HardwareStatus'));\r\n\t\t\tconst HardwareSettings = React.lazy(() => import('../../pages/Maintain/Hardware/HardwareSettings'));\r\n\t\t\tconst RMA = React.lazy(() => import('../../pages/Maintain/Hardware/RMA'));\r\n\t\t\tconst WaysideSignStatus = React.lazy(() => import('../../pages/Maintain/Hardware/WaysideSignStatus'));\r\n\t\t\tconst AssemblyStatus = React.lazy(() => import('../../pages/Maintain/Hardware/AssemblyStatus'));\r\n\t\t\tconst MessageCategories = React.lazy(() => import('../../pages/Maintain/Messages/MessageCategories'));\r\n\t\t\tconst Messages = React.lazy(() => import('../../pages/Maintain/Messages/Messages'));\r\n\t\t\tconst IncidentFields = React.lazy(() => import('../../pages/Maintain/Incidents/IncidentFields'));\r\n\t\t\tconst IncidentTypes = React.lazy(() => import('../../pages/Maintain/Incidents/IncidentTypes'));\r\n\t\t\tconst IncidentEmailGroups = React.lazy(() => import('../../pages/Maintain/Incidents/IncidentEmailGroups'));\r\n\t\t\tconst AdVideos = React.lazy(() => import('../../pages/Maintain/TOBI/AdVideos'));\r\n\t\t\tconst AdVideoPlaylists = React.lazy(() => import('../../pages/Maintain/TOBI/AdVideoPlaylists'));\r\n\t\t\tconst AdAssociations = React.lazy(() => import('../../pages/Maintain/TOBI/AdAssociations'));\r\n\t\t\tconst AdVisualizer = React.lazy(() => import('../../pages/Maintain/TOBI/AdVisualizer'));\r\n\t\t\tconst AdUserGroups = React.lazy(() => import('../../pages/Maintain/TOBI/AdUserGroups'));\r\n\t\t\tconst PublishReports = React.lazy(() => import('../../pages/Maintain/Communities/PublishReports'));\r\n\t\t\tconst GroupMapping = React.lazy(() => import('../../pages/Maintain/EngineDiagnostic/GroupMapping'));\r\n\t\t\tconst CodeConfiguration = React.lazy(() => import('../../pages/Maintain/EngineDiagnostic/CodeConfiguration'));\r\n\t\t\tconst AlertConfig = React.lazy(() => import('../../pages/Maintain/EngineDiagnostic/AlertConfig'));\r\n\t\t\tconst StopBroadcast = React.lazy(() => import('../../pages/Maintain/StopBroadcast'));\r\n\t\t\tconst CannedAnnouncements = React.lazy(() => import('../../pages/Maintain/CannedAnnouncements'));\r\n\t\t\tconst BypassReason = React.lazy(() => import('../../pages/Maintain/BypassReason'));\r\n\t\t\tconst LateCheckOutReason = React.lazy(() => import('../../pages/Maintain/LateCheckOutReason'));\r\n\t\t\tconst MaintainEmergencyType = React.lazy(() => import('../../pages/Maintain/MaintainEmergencyType'));\r\n\t\t\tconst HeadSign = React.lazy(() => import('../../pages/Maintain/HeadSign'));\r\n\t\t\tconst DateTags = React.lazy(() => import('../../pages/Maintain/DateTags'));\r\n\t\t\tconst AlertLog = React.lazy(() => import('../../pages/Maintain/AlertLog'));\r\n\t\t\tconst About = React.lazy(() => import('../../pages/System/About'));\r\n\t\t\tconst MaintainOperation = React.lazy(() => import('../../pages/System/MaintainOperation'));\r\n\t\t\tconst Users = React.lazy(() => import('../../pages/System/Users'));\r\n\t\t\tconst Communities = React.lazy(() => import('../../pages/System/Communities'));\r\n\t\t\tconst Settings = React.lazy(() => import('../../pages/System/Settings'));\r\n\t\t\tconst AuditLog = React.lazy(() => import('../../pages/System/AuditLog'));\r\n\t\t\tconst HardwareAuditLog = React.lazy(() => import('../../pages/System/Diagnostics/HardwareAuditLog'));\r\n\t\t\tconst HardwareStatusLog = React.lazy(() => import('../../pages/System/Diagnostics/HardwareStatusLog'));\r\n\t\t\tconst VehicleDiagnostics = React.lazy(() => import('../../pages/System/Diagnostics/VehicleDiagnostics'));\r\n\t\t\tconst StopVoicePreview = React.lazy(() => import('../../pages/System/StopVoicePreview'));\r\n\t\t\tconst ATPExport = React.lazy(() => import('../../pages/System/ATPExport'));\r\n\t\t\tconst ConfigStatus = React.lazy(() => import('../../pages/System/ConfigStatus'));\r\n\t\t\tconst DailyRidershipSummary = React.lazy(() => import('../../pages/Reports/DailyRidershipSummary'));\r\n\t\t\tconst PassengerCount = React.lazy(() => import('../../pages/Reports/PassengerCount')); \n\n export default () => (\n \n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t \n \n \n );\n ","import React, { useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport './Submenu.scss';\r\n\r\n\r\n\r\nconst SubmenuPresentation = (props) => {\r\n const [shouldRender, setShouldRender] = useState(true);\r\n const forceMenuHide = () => { setShouldRender(false); setTimeout(() => setShouldRender(true)) };\r\n if (!shouldRender) return null;\r\n return (\r\n
    \r\n {props.items.map((item, i) => {\r\n const itemPath = props.parentPath + \"/\" + item.title.replace(/\\s+/g, '');\r\n const currentPath = window.location.pathname.substr(1);\r\n\r\n // The \"Select Editing Schedule\" and Support Menu items launch popup windows or other special behaviour rather than taking the user to a new page\r\n const isSelectSchedule = item.title === 'Select Editing Schedule';\r\n const isSupportMenu = itemPath.startsWith('System/Support/') && (!item.subMenu || item.subMenu.length === 0);\r\n const isCommunityMenu = itemPath.startsWith('COMMUNITY/') && (!item.subMenu || item.subMenu.length === 0);\r\n return (\r\n
  • \r\n {!isSupportMenu && !isSelectSchedule && !isCommunityMenu && { props.onItemSelected(); forceMenuHide(); }}>{item.title}}\r\n {isSelectSchedule && }\r\n {isSupportMenu && } \r\n {isCommunityMenu && { e.preventDefault(); forceMenuHide(); props.onCommunityClick(item); }}>{item.title}}\r\n {item.subMenu && item.subMenu.length && }\r\n
  • \r\n );\r\n })}\r\n
\r\n );\r\n}\r\n\r\nexport default SubmenuPresentation;","import React, { useState } from 'react';\r\nimport SubmenuPresentation from './SubmenuPresentation';\r\n\r\n//forceUpdate hook taken from https://stackoverflow.com/a/53837442/2457005\r\nfunction useForceUpdate() {\r\n const [value, set] = useState(true);\r\n return () => set(!value);\r\n}\r\n\r\nexport default (props) => {\r\n const forceUpdate = useForceUpdate();\r\n return (\r\n
    \r\n {props.menuTree && props.menuTree.subMenu.map((item, i) => (\r\n
  • \r\n {item.title}\r\n \r\n
  • \r\n ))}\r\n
\r\n );\r\n}","import React from 'react';\r\n\r\nexport default (props) => {\r\n\r\n return (\r\n
    \r\n {props.flattenedMenu.map((m, i) =>
  • props.onItemClick(m.path)} key={m.label}>{m.label}
  • )}\r\n
\r\n );\r\n}","import React, { useState, useMemo } from 'react';\r\nimport HomepageMenuPresentation from './HomepageMenuPresentation';\r\nimport SortHelper from '../../../Utils/SortHelper';\r\nimport axios from 'axios';\r\n\r\nfunction getFlattenedMenu(flattenedMenuArr, parentPath, menuItem) {\r\n if (!menuItem || !menuItem.title) return;\r\n\r\n const parentName = menuItem.title.toUpperCase();\r\n parentPath = parentPath + '/' + menuItem.title.replace(/\\s+/g, '');\r\n\r\n //Support menu items should not be added to the list of selectable homepages\r\n if (parentPath === '/System/Support') return;\r\n\r\n if (menuItem.subMenu && menuItem.subMenu.length) {\r\n menuItem.subMenu.forEach(s => {\r\n //The select editing schedule menu item should not be selectable as a homepage\r\n if (s.title === 'Select Editing Schedule') return;\r\n\r\n // Only menu items without submenus should be selectable as a homepage\r\n if (!s.subMenu || s.subMenu.length === 0) flattenedMenuArr.push({ label: parentName + '.' + s.title, path: parentPath + '/' + s.title.replace(/\\s+/g, '') });\r\n else getFlattenedMenu(flattenedMenuArr, parentPath, s);\r\n })\r\n }\r\n}\r\n\r\nexport default (props) => {\r\n\r\n const user = JSON.parse(localStorage.getItem('user'));\r\n const [selectedHomepage, setSelectedHomepage] = useState(user.homepage);\r\n\r\n const flattenedMenu = useMemo(() => {\r\n const flattenedMenuArr = [];\r\n if (props.menuTree) props.menuTree.subMenu.forEach(s => getFlattenedMenu(flattenedMenuArr, '', s));\r\n SortHelper.sortArrayNaturalAlphaNumeric(flattenedMenuArr,'label');\r\n return flattenedMenuArr;\r\n }, [props.menuTree]);\r\n\r\n const updateHomepage = (newHomepage) => {\r\n axios.post('/api/Homepage', { homepage: newHomepage }).then(response => {\r\n if (response && response.data) {\r\n setSelectedHomepage(newHomepage);\r\n user.homepage = newHomepage;\r\n localStorage.removeItem('user');\r\n localStorage.setItem('user', JSON.stringify(user));\r\n }\r\n });\r\n \r\n }\r\n\r\n return (\r\n \r\n );\r\n}","import React, { Component } from 'react';\r\nimport axios from 'axios';\r\n\r\nexport default class ReportEngine extends Component {\r\n\r\n state = {\r\n reportURL: '',\r\n isError: false\r\n }\r\n\r\n componentDidMount() {\r\n axios.get('/api/ReportEngine').then((response) => {\r\n if (response.data) {\r\n this.setState({ isError: false, reportURL: response.data });\r\n }\r\n else {\r\n this.setState({ isError: true, reportURL: '' });\r\n }\r\n\r\n }).catch(err => console.log('Report engine internal server error'));\r\n }\r\n\r\n render() {\r\n console.log(this.state.reportURL);\r\n const ReportErrorMessage = () => (\r\n
\r\n \"\"
\r\n

Unable to load report engine. Please contact Strategic Mapping for assistance.

\r\n
\r\n )\r\n\r\n return (\r\n\r\n
\r\n {!this.state.isError && \n//);\n\nconst alertStatus = [\n {\n label: 'Active',\n value: 'Active',\n },\n {\n label: 'Inactive',\n value: 'InActive',\n },\n {\n label: 'All',\n value: '-1',\n },\n];\n\nconst defaultSubscriptionType = { subscriptionTypeID: 0, subscriptionTypeName: 'Add New Alert' };\n\nexport default () => {\n const [reloadGrid, setGridReload] = useState(false);\n const [state, setState] = useState({\r\n alertStatus: alertStatus,\r\n editingAlert: null,\r\n zoneTypes: [],\r\n alertLogTypes: [],\r\n routes: [],\r\n hardwareTypes: [],\r\n smsSettings: [],\r\n segments: [],\r\n incidentTypes: [],\r\n subscriptionTypes: [],\r\n subscriptionTypeId: -1,\r\n selectedSubscriptionType: defaultSubscriptionType,\r\n showAlert: false,\r\n showIncidentAlert: false,\r\n showSegmentAlert: false,\r\n reloadGrid: false\r\n });\r\n\r\n useEffect(() => {\r\n let zonePromise = axios.get('/api/MyAlertZones');\r\n let alertLogTypesPromise = axios.get('/api/MyAlertLogTypes');\r\n let routePromise = axios.get('/api/MyAlertRoutes');\r\n let hardwarePromise = axios.get('/api/MyAlertHardwareTypes');\r\n let settingsPromise = axios.get('/api/SMSSettings');\r\n let incidentTypesPromise = axios.get('/api/MyAlertIncidentTypes');\r\n let subTypesPromise = axios.get('/api/MyAlertSubTypes');\r\n let segmentPromise = axios.get('/api/MyAlertSegments');\r\n\r\n axios.all([zonePromise, alertLogTypesPromise,\r\n routePromise, hardwarePromise, settingsPromise,\r\n incidentTypesPromise, subTypesPromise, segmentPromise]).then(axios.spread((...response) => {\r\n let _subscriptionTypes = response[6].data\r\n _subscriptionTypes.unshift(defaultSubscriptionType);\r\n let segments = response[7].data;\r\n\r\n setState(_state => ({\r\n ..._state,\r\n zoneTypes: response[0].data,\r\n alertLogTypes: response[1].data,\r\n routes: response[2].data,\r\n hardwareTypes: response[3].data,\r\n smsSettings: response[4].data,\r\n incidentTypes: response[5].data,\r\n subscriptionTypes: _subscriptionTypes,\r\n segments: segments,\r\n }));\r\n })).catch(err => console.log(err));\r\n }, []);\r\n\r\n const getTemplateToShow = subscriptionTypeID => {\r\n if (subscriptionTypeID === 12\r\n || subscriptionTypeID === 13) return 'showSegmentAlert';\r\n if (subscriptionTypeID === 14) return 'showIncidentAlert';\r\n else return 'showAlert';\r\n }\r\n const subscriptionChanged = e => {\r\n console.log(e);\r\n let subscriptionType = e.value;\r\n\r\n setState({\r\n ...state,\r\n selectedSubscriptionType: subscriptionType,\r\n subscriptionTypeId: subscriptionType.subscriptionTypeID,\r\n [getTemplateToShow(subscriptionType.subscriptionTypeID)]: true\r\n })\r\n }\r\n\r\n const getSubscriptionType = () => {\r\n let subscriptionType = state.selectedSubscriptionType;\r\n if (state.editingAlert)\r\n subscriptionType = state.subscriptionTypes.find(s => s.subscriptionTypeID === state.editingAlert.subscriptionType);\r\n\r\n return subscriptionType;\r\n }\r\n\r\n const subscriptionModalClose = (e, isReload = false) => {\r\n let sybscriptionType = getSubscriptionType();\r\n setState(_state => ({\r\n ..._state,\r\n [getTemplateToShow(sybscriptionType.subscriptionTypeID)]: false,\r\n selectedSubscriptionType: defaultSubscriptionType,\r\n editingAlert: null,\r\n reloadGrid: isReload\r\n }));\r\n }\r\n\r\n const onEdit = (e, dataItem) => {\n setState({\r\n ...state,\n editingAlert: dataItem,\r\n [getTemplateToShow(dataItem.subscriptionType)]: true\r\n });\n }\r\n\r\n const dataLoaded = data => {\r\n setState({ ...state, reloadGrid : false});\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {(state.showAlert || state.showIncidentAlert || state.showSegmentAlert) &&\r\n \r\n }\r\n \r\n );\r\n};","import React, { useState, useContext } from 'react';\r\nimport CurrentRecipients from '../SendMessage/CurrentRecipients';\r\nimport { playAudio } from '../../Utils/AudioUtil'\r\nimport { SystemSettingContext } from '../../SystemSettingContext';\r\nimport Util from '../../Utils/Util';\r\n\r\nexport default ({ recipients, onRemoveRecipient, onSend, onCancel, onClearRecipients }) => {\r\n\r\n const [signText, setSignText] = useState('');\r\n const [audioText1, setAudioText1] = useState('');\r\n const [audioText2, setAudioText2] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const systemSettings = useContext(SystemSettingContext);\r\n\r\n if (Util.isNullOrUndefined(systemSettings)) return null;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n

Internal Sign Announcement:

\r\n \r\n {systemSettings.announcementLanguage1 && \r\n

\r\n Audio Announcement{systemSettings.announcementLanguage2 && - {systemSettings.announcementLanguage1.subStr(0, 2)}}:\r\n \r\n

\r\n \r\n
}\r\n {systemSettings.announcementLanguage2 && \r\n

\r\n Audio Announcement{systemSettings.announcementLanguage1 && - {systemSettings.announcementLanguage2.subStr(0, 2)}}:\r\n \r\n

\r\n \r\n
}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n}","import React, { useCallback, useState, useContext } from 'react';\r\nimport MessageRecipients from '../SendMessage/MessageRecipients';\r\nimport axios from 'axios';\r\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary';\r\nimport MSGRecipientType from '../SendMessage/MSGRecipientType';\r\nimport LoadingMask from '../LoadingMask/LoadingMask';\r\nimport AnnouncementComposition from './AnnouncementComposition';\r\n\r\nimport '../SendMessage/SendMessage.scss';\r\nimport './MakeAnnouncement.scss';\r\n\r\nexport default ({ onClose, preselectedRecipients }) => {\r\n\r\n\r\n const [selectedRecipients, setSelectedRecipients] = useState(preselectedRecipients || []);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const recipientSelected = useCallback((event) => {\r\n const selectedRecipient = event.item;\r\n if (selectedRecipient.type === MSGRecipientType.Vehicle && selectedRecipient.cannotReceiveMessages) alert('Vehicle ' + selectedRecipient.text + ' cannot receive announcements as it does not have an OBU');\r\n else {\r\n setSelectedRecipients((currentSelectedRecipients) => {\r\n if (currentSelectedRecipients.indexOf(selectedRecipient) === -1) return currentSelectedRecipients.concat([selectedRecipient]);\r\n return currentSelectedRecipients;\r\n });\r\n }\r\n }, []);\r\n\r\n const removeRecipient = useCallback((recipientToRemove) => {\r\n setSelectedRecipients((currentSelectedRecipients) => currentSelectedRecipients.filter(csr => csr !== recipientToRemove));\r\n }, []);\r\n\r\n const makeAnnouncement = useCallback((recipients, signText, audioText1, audioText2) => {\r\n if (recipients && recipients.length > 0) {\r\n if (signText || audioText1 || audioText2) {\r\n const cleanRecipients = recipients.map(r => ({ type: r.type, id: r.id, parentId: r.parentId, text: r.text }));\r\n setIsLoading(true);\r\n axios.post('/api/MakeAnnouncement', { recipients: cleanRecipients, signText, audioText1, audioText2 }).then(() => {\r\n //If announcement was sent successfully, close the make announcement dialog\r\n onClose();\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n setIsLoading(false);\r\n alert('There was an error sending your announcement. Please try again. If you are still unable to send, please contact SMI support');\r\n })\r\n }\r\n else {\r\n alert('Please enter content for your announcement before sending');\r\n }\r\n }\r\n else {\r\n alert('Your message must have at least one recipient');\r\n }\r\n }, [onClose]);\r\n\r\n return (\r\n \r\n
\r\n \r\n setSelectedRecipients([])} onRemoveRecipient={removeRecipient} onCancel={onClose} onSend={makeAnnouncement} />\r\n {isLoading && }\r\n
\r\n
\r\n );\r\n}","import axios from 'axios';\r\nimport React, { Component, useState, useEffect, Fragment, useContext, useRef } from 'react';\r\nimport PageWrapper from '../PageWrapper/PageWrapper';\r\nimport SMIGrid from '../SMIGrid/SMIGrid';\r\nimport * as GridCustomTemplates from '../SMIGrid/GridCustomTemplates';\r\nimport * as GridCustomFilters from '../SMIGrid/GridCustomFilters';\r\nimport { GridColumn as Column, getSelectedState } from '@progress/kendo-react-grid';\r\nimport SMIActionColumn from '../SMIGrid/SMIActionColumn';\r\nimport { process } from '@progress/kendo-data-query';\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { SystemSettingContext } from '../../SystemSettingContext';\r\nimport { MapComponentUnconnected } from '../../pages/Shared/Map/MapComponent';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport L from 'leaflet';\r\nimport { Marker } from 'react-leaflet';\r\n\r\nconst initialFilter = {\r\n logic: \"and\",\r\n filters: [\r\n {\r\n field: \"isRead\",\r\n operator: \"eq\",\r\n value: 0,\r\n },\r\n ],\r\n};\r\n\r\nexport default () => {\r\n let systemSettings = useContext(SystemSettingContext);\r\n const gridRef = useRef();\r\n const excelExportRef = useRef();\r\n\r\n const [selectedAlerts, setSelectedAlerts] = useState([]);\r\n const [selectedAlert, setSelectedAlert] = useState(null);\r\n const [filters, setFilters] = useState(initialFilter);\r\n const [lastFilters, setLastFilters] = useState(initialFilter);\r\n const [showMap, setShowMap] = useState(false);\r\n\r\n useEffect(() => {\r\n if (gridRef.current)\r\n gridRef.current.setGridFilter(filters);\r\n }, [filters]);\r\n\r\n const onSingleCheckboxChange = (e, alertId) => {\r\n if (e.target.checked && !selectedAlerts.includes(alertId)) {\r\n let _selectedAlerts = selectedAlerts.slice(0);\r\n _selectedAlerts.push(alertId);\r\n setSelectedAlerts(_selectedAlerts);\r\n }\r\n else if (!e.target.checked && selectedAlerts.includes(alertId)) {\r\n let _selectedAlerts = selectedAlerts.slice(0);\r\n let index = _selectedAlerts.indexOf(alertId);\r\n _selectedAlerts.splice(index, 1);\r\n setSelectedAlerts(_selectedAlerts);\r\n }\r\n }\r\n\r\n const onAllCheckboxChange = e => {\r\n let _selectedAlerts = selectedAlerts.slice(0);\r\n let processedData = getProcessedData(gridRef);\r\n\r\n if (processedData && processedData.data && processedData.data.length > 0) {\r\n if (e.target.checked) {\r\n processedData.data.forEach(d => {\r\n if (!_selectedAlerts.includes(d.ID) && !d.isRead)\r\n _selectedAlerts.push(d.ID);\r\n });\r\n setSelectedAlerts(_selectedAlerts);\r\n }\r\n else {\r\n processedData.data.forEach(d => {\r\n let index = _selectedAlerts.indexOf(d.ID);\r\n _selectedAlerts.splice(index, 1);\r\n });\r\n setSelectedAlerts(_selectedAlerts);\r\n }\r\n }\r\n }\r\n\r\n const clearAlerts = e => {\r\n if (selectedAlerts && selectedAlerts.length > 0) {\r\n markAlertsAsRead(gridRef, selectedAlerts); \r\n setSelectedAlerts([]);\r\n }\r\n }\r\n\r\n const showPosition = dataItem => {\r\n setShowMap(true);\r\n setSelectedAlert(dataItem);\r\n }\r\n\r\n const onCloseVehiclePosition = e => {\r\n setShowMap(false);\r\n }\r\n\r\n const checkBoxCell = event => {\r\n return onSingleCheckboxChange(e, event.dataItem.ID)}> ;\r\n }\r\n\r\n const headerCheckboxCell = dataItem => {\r\n let isChecked = false;\r\n let isDisabled = false;\r\n let processedData = getProcessedData(gridRef);\r\n\r\n if (selectedAlerts && processedData && processedData.data && processedData.data.length > 0) {\r\n let filteredAlertIds = processedData.data.filter(d => !d.isRead).map(d => d.ID);\r\n if (filteredAlertIds && filteredAlertIds.length > 0 && selectedAlerts && selectedAlerts.length > 0) isChecked = filteredAlertIds.every(item => selectedAlerts.includes(item));\r\n if (!filteredAlertIds || filteredAlertIds.length < 1) isDisabled = true;\r\n }\r\n else isDisabled = true;\r\n\r\n return ;\r\n }\r\n\r\n const positionCell = event => {\r\n let _className = \"k-grid-Position\";\r\n if (!event.dataItem.Lat || !event.dataItem.Long || (event.dataItem.Lat == 0 && event.dataItem.Long == 0))\r\n _className += \" disabled\";\r\n return \r\n }\r\n\r\n const alertMessageCell = event => {\r\n return {event.dataItem.Alert} \r\n }\r\n\r\n const onShowReadMessage = e => {\r\n if (e.target.checked) setFilters(null);\r\n else setFilters(initialFilter);\r\n }\r\n\r\n const onDataLoaded = data => {\r\n if (gridRef.current) gridRef.current.setGridFilter(filters);\r\n }\r\n\r\n const onExcelExport = e => {\r\n if (gridRef.current && excelExportRef.current) {\r\n try { \r\n let result = getProcessedData(gridRef);\r\n let _excelData = gridRef.current.deepCopy(result.data);\r\n\r\n _excelData.forEach((d) => {\r\n for (let field in gridRef.current.columnsByField) {\r\n const template = gridRef.current.columnsByField[field].props.customTemplate;\r\n if (template && typeof template === 'function') d[field] = template(d, field);\r\n }\r\n });\r\n\r\n const excelColumns = gridRef.current.state.columns.filter(c => c.field.indexOf('_') !== 0 && c.show);\r\n excelExportRef.current.save(_excelData, excelColumns);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n }\r\n\r\n const filterChange = e => { \r\n if (e.filter !== lastFilters) {\r\n setLastFilters(e.filter);\r\n setSelectedAlerts([]);\r\n }\r\n }\r\n\r\n const toolbarButtons = (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n if (!systemSettings) return null;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showMap && }\r\n \r\n
\r\n );\r\n}\r\n\r\nexport const MapView = (props) => {\r\n const [vehicleMarker, setVehicleMarker] = useState(null);\r\n\r\n useEffect(() => {\r\n if (props.selectedAlert && props.selectedAlert.Lat && props.selectedAlert.Long) {\r\n var location = [props.selectedAlert.Lat, props.selectedAlert.Long];\r\n let isBunchingPin = props.selectedAlert.Subject.indexOf('Bunching') > -1;\r\n var pinClass = isBunchingPin ? 'inboxMapPushpin bunch' : 'inboxMapPushpin';\r\n var mid = 12;\r\n\r\n var _icon = L.divIcon({\r\n html: `
`,\r\n iconSize: L.point(24, 24),\r\n iconAnchor: L.point(mid, mid),\r\n className: 'my-div-icon'\r\n });\r\n\r\n let pin = ;\r\n setVehicleMarker(pin);\r\n }\r\n\r\n }, [props]);\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\n\r\nfunction getProcessedData(gridRef) {\r\n if (!gridRef.current || !gridRef.current.state.data || gridRef.current.state.data.length < 1) return { data: [], total: 0 };\r\n\r\n let dataState = Object.assign({}, gridRef.current.state.dataState);\r\n dataState.skip = 0;\r\n dataState.take = null;\r\n\r\n const data = gridRef.current.state.data;\r\n const processedData = process(data, dataState);\r\n return processedData;\r\n}\r\n\r\nfunction markAlertsAsRead(gridRef, alertIds) {\r\n if (gridRef.current)\r\n gridRef.current.loadingOn();\r\n axios.delete(`/api/AlertsInbox`, { data: alertIds }).then(response => {\r\n if (gridRef.current) {\r\n gridRef.current.flashSavedMessage();\r\n gridRef.current.loadData();\r\n } \r\n\r\n }).catch(err => {\r\n console.log('marked as read');\r\n if (gridRef.current)\r\n gridRef.current.flashErrorMessage();\r\n }).finally(() => {\r\n if (gridRef.current)\r\n gridRef.current.loadingOff();\r\n });\r\n}\r\n","\r\nimport React from 'react';\r\nimport './AlertInbox.scss';\r\nimport AlertsInboxPresentation from './AlertsInboxPresentation';\r\n\r\n//export default () => (\r\n// \r\n//);\r\n\r\nexport default () => (\r\n \r\n);","\r\n\r\nimport React from 'react';\r\n\r\nexport default () => (\r\n \r\n);","import React, { Component } from 'react';\r\nimport axios from 'axios';\r\nimport { Router, BrowserRouter } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport MainPagePresentation from './MainPagePresentation';\r\nimport ChangePassword from '../../pages/Settings/ChangePassword/ChangePassword';\r\nimport ScheduleEdit from \"../../pages/Maintain/Scheduling/ScheduleEdit/ScheduleEdit\";\r\nimport Emergencies from './Emergencies/Emergencies';\r\nimport SupportVideo from '../Support/Video';\r\nimport SendMessage from '../SendMessage/SendMessage';\r\nimport MessageInbox from '../MessageInbox/MessageInbox';\r\nimport MyAlerts from '../MyAlerts/MyAlerts';\r\nimport MakeAnnouncement from '../MakeAnnouncement/MakeAnnouncement';\r\nimport MSGRecipientType from '../SendMessage/MSGRecipientType';\r\nimport AlertInbox from '../AlertInbox/AlertsInbox';\r\nimport AlertOutbox from '../AlertInbox/AlertOutbox';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../styles/kendo-styles.scss';\r\nimport './MainPage.scss';\r\nimport Util from '../../Utils/Util';\r\nimport { kendoAlert } from '../../Utils/DialogUtil';\r\n\r\nexport default class MainPage extends Component {\r\n\r\n state = {\r\n menuTree: null,\r\n subModules: [],\r\n messageCount: null,\r\n notificationCount: null,\r\n showChangePassword: false,\r\n showSelectSchedule: false,\r\n showSendMessage: false,\r\n showMessageInbox: false,\r\n showMakeAnnouncement: false,\r\n showMyAlerts: false,\r\n selectedHomepage: '',\r\n supportItem: null,\r\n preselectedRecipients: null,\r\n showAlertInbox: false,\r\n showAlertOutbox: false\r\n }\r\n\r\n user = JSON.parse(localStorage.getItem('user'));\r\n baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n history = createBrowserHistory({ basename: this.baseUrl });\r\n\r\n componentDidMount() {\r\n this.changeViewportForMobile();\r\n\r\n axios.get('/api/Menu').then(result => {\r\n this.setState(result.data); //Sets menuTree and subModules\r\n\r\n let userHomePage;\r\n\r\n axios.get('/api/HomePage').then(response => {\r\n if (response && response.data) {\r\n userHomePage = response.data;\r\n }\r\n }).finally(e => {\r\n if (userHomePage) {\r\n if (!userHomePage || Util.isNullOrUndefined(userHomePage) || Util.isNullOrWhitespace(userHomePage) || userHomePage.search('.aspx') > -1)\r\n userHomePage = \"/View/Vehicles\";\r\n\r\n //If the user came from login page, the pathname will be '/' and we should redirect them to their homepage\r\n if (!window.location.pathname || window.location.pathname === this.baseUrl)\r\n this.history.push(userHomePage);\r\n }\r\n else {\r\n if (!window.location.pathname || (window.location.pathname === this.baseUrl) || window.location.pathname.toLocaleLowerCase().search('login.aspx') > -1)\r\n if (result.data) {\r\n let menuTree = result.data.menuTree;\r\n let menu = '';\r\n while (true) {\r\n if (!menuTree.subMenu)\r\n break;\r\n menu += '/' + menuTree.subMenu[0].title.replace(\" \", \"\");\r\n menuTree = menuTree.subMenu[0];\r\n }\r\n if (menu.length > 0)\r\n this.history.push(menu);\r\n }\r\n else\r\n this.history.push('/View/Vehicles');\r\n }\r\n });\r\n\r\n }).catch(err => {\r\n //clear localstorage and return to login page\r\n localStorage.clear();\r\n window.location = \"/\";\r\n });\r\n\r\n axios.get('/api/SchApiCru').then((response) => {\r\n if (response.data.length === 0) {\r\n localStorage.setItem('smiPortalSchedule', '');\r\n } else {\r\n response.data.sort((a, b) => this.date_sort_desc(a.startDate, b.startDate));\r\n this.checkStoredSchedule(response.data); \r\n }\r\n });\r\n }\r\n\r\n checkStoredSchedule = (scheduleList) => {\r\n var item = null;\r\n let schedule = null;\r\n\r\n if (localStorage.getItem('smiPortalSchedule'))\r\n schedule = JSON.parse(localStorage.getItem('smiPortalSchedule'));\r\n\r\n if (scheduleList && scheduleList.length > 0) {\r\n let validSchedule = false;\r\n if (schedule) {\r\n let s = scheduleList.find(s => s.scheduleID == schedule.scheduleID && s.name == schedule.name);\r\n if (s)\r\n validSchedule = true;\r\n }\r\n\r\n if (!schedule || !validSchedule) {\r\n var index = this.findActiveScheduleIndex(scheduleList);\r\n item = scheduleList[index];\r\n localStorage.setItem('smiPortalSchedule', JSON.stringify(item));\r\n }\r\n }\r\n }\r\n\r\n findActiveScheduleIndex = (data) => {\r\n var tempDate = null;\r\n var s = new Date();\r\n var index = -1;\r\n\r\n s.setHours(0, 0, 0, 0);\r\n tempDate = new Date(s.toISOString());\r\n\r\n for (let j = 0; j < data.length; j++) {\r\n if (tempDate >= new Date(data[j].startDate)) {\r\n if (data[j].endDate && tempDate > new Date(data[j].endDate)) {\r\n continue;\r\n }\r\n index = j;\r\n break;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n changeViewportForMobile = () => {\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\r\n\r\n var ww = window.screen.width;\r\n var mw = 1200; // min width of site\r\n var ratio = ww / mw; //calculate ratio\r\n var viewport_meta_tag = document.getElementById('viewport');\r\n if (ww < mw) { //smaller than minimum size\r\n viewport_meta_tag.setAttribute('content', `width=1400`);\r\n }\r\n \r\n }\r\n }\r\n date_sort_desc(date1, date2) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n if (new Date(date1) > new Date(date2)) return -1;\r\n if (new Date(date1) < new Date(date2)) return 1;\r\n return 0;\r\n }\r\n\r\n\r\n onSupportMenuClick = (item) => {\r\n if (!item) return;\r\n if (!item.isPopup) {\r\n window.open(item.url, \"_blank\");\r\n return;\r\n }\r\n this.setState({ supportItem: item });\r\n }\r\n\r\n onCommunityClick = (portalMenu) => {\r\n\r\n var parser = document.createElement('a');\r\n parser.href = portalMenu.url;\r\n axios.get('/api/SwitchCommunity?serverName=' + encodeURIComponent(parser.hostname)).then(function (response) {\r\n var ticket = response.data;\r\n if (ticket && /[A-Fa-f0-9]{64}/.test(ticket)) {\r\n var username = window.SystemSettings.loggedInUser.split('@')[0];\r\n window.location.href = portalMenu.url + '/login?ticket=' + encodeURIComponent(ticket) + '&username=' + encodeURIComponent(username);\r\n }\r\n else {\r\n kendoAlert(\"Unable to authenticate community. Please check configuration.\");\r\n }\r\n }, function (err) {\r\n kendoAlert(\"Unable to authenticate community. Please check configuration.\");\r\n console.log(err);\r\n });\r\n }\r\n\r\n toggleAlertInbox = () => this.setState({ showAlertInbox: !this.state.showAlertInbox });\r\n\r\n toggleAlertOutbox = () => this.setState({ showAlertOutbox: !this.state.showAlertOutbox });\r\n\r\n toggleChangePassword = () => this.setState({ showChangePassword: !this.state.showChangePassword });\r\n toggleSelectSchedule = () => this.setState({ showSelectSchedule: !this.state.showSelectSchedule });\r\n toggleSendMessage = (emergencyVehicle) => {\r\n if (!this.state.showSendMessage && emergencyVehicle) this.setState({ showSendMessage: true, preselectedRecipients: [{ id: emergencyVehicle.id, type: MSGRecipientType.Vehicle, text: emergencyVehicle.name }] });\r\n else this.setState({ showSendMessage: !this.state.showSendMessage, preselectedRecipients: [] });\r\n }\r\n toggleMakeAnnouncement = () => this.setState({ showSendMessage: !this.state.showSendMessage });\r\n toggleMessageInbox = () => {\r\n this.setState({ showMessageInbox: !this.state.showMessageInbox });\r\n }\r\n toggleMyAlerts = () => {\r\n this.setState({ showMyAlerts: !this.state.showMyAlerts });\r\n }\r\n\r\n onCancel = () => {\r\n this.setState({\r\n showSelectSchedule: false\r\n });\r\n }\r\n\r\n onSupportVideoDialogClose = () => {\r\n this.setState({ supportItem: null });\r\n }\r\n\r\n render() {\r\n\r\n let systemSettings = window.SystemSettings || window.parent.SystemSettings;\r\n\r\n if (Util.isNullOrUndefined(systemSettings)) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.showChangePassword && this.setState({ showChangePassword: false })} />}\r\n {this.state.showSelectSchedule &&
}\r\n {this.state.showSendMessage &&
}\r\n {this.state.showMyAlerts &&
}\r\n {this.state.showMessageInbox && }\r\n {this.state.showMakeAnnouncement && }\r\n {this.state.supportItem && this.state.supportItem.isPopup && }\r\n {this.state.showAlertInbox &&
this.setState({ showAlertInbox: false })} />
}\r\n {this.state.showAlertOutbox &&
this.setState({ showAlertOutbox: false })} />
}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}","import React from 'react';\r\n\r\nexport default () => (\r\n
\r\n Loading...\r\n
\r\n
\r\n
\r\n);","import React, { useState, useCallback } from 'react';\r\nimport './SMIGridSearch.scss';\r\n\r\nexport default (props) => {\r\n\r\n const [searchQuery, setSearchQuery] = useState('');\r\n\r\n const onSubmit = props.onSubmit;\r\n\r\n const submitSearchQuery = useCallback((e) => {\r\n e.preventDefault();\r\n if (onSubmit) onSubmit(searchQuery);\r\n return false;\r\n }, [onSubmit, searchQuery]);\r\n\r\n const clearSearchQuery = useCallback(() => {\r\n setSearchQuery('');\r\n if (onSubmit) onSubmit('');\r\n return false;\r\n }, [onSubmit]);\r\n\r\n return (\r\n
\r\n setSearchQuery(e.target.value)} />\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
);\r\n }\r\n}","import React, { useMemo } from 'react';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport SMIGridSearch from './SMIGridSearch';\r\nimport LoadingPanel from './LoadingPanel';\r\nimport SMIColumnMenu from './SMIColumnMenu';\r\nimport { getGuid } from '../../Utils/Util';\r\n\r\nexport default (props) => {\r\n const identifier = useMemo(() => getGuid(), []);\r\n\r\n const gridProps = Object.assign({}, props.gridProps);\r\n gridProps.data = props.data;\r\n gridProps.onDataStateChange = props.onDataStateChange; \r\n if (gridProps.editable !== false) {\r\n gridProps.onItemChange = props.onItemChange;\r\n gridProps.editField = \"inEdit\";\r\n gridProps.cellRender = props.renderers.cellRender;\r\n gridProps.rowRender = gridProps.rowRender ? gridProps.rowRender : props.renderers.rowRender;\r\n }\r\n else {\r\n gridProps.cellRender = props.renderers.cellRender;\r\n gridProps.rowRender = gridProps.rowRender ? gridProps.rowRender : props.renderers.rowRender;\r\n }\r\n\r\n if (gridProps.groupable) {\r\n gridProps.expandField = '_expanded';\r\n gridProps.onExpandChange = props.onExpandChange;\r\n }\r\n\r\n const addLabel = 'Add New ' + (gridProps.dataName || '');\r\n\r\n //Filter out hidden columns\r\n let children = props.children.filter((c) => {\r\n if (!c) return false;\r\n if (c.props.field) {\r\n const columnMenuEntry = props.columns.filter((col) => col.field === c.props.field);\r\n return columnMenuEntry.length === 0 || columnMenuEntry[0].show;\r\n }\r\n return true;\r\n });\r\n\r\n if (gridProps.showColumnMenu) {\r\n children = children.map((c, i) => {\r\n //Don't add column menu to columns with fields starting with \"_\" as these are action columns (e.g. the delete button)\r\n if (c.props.field && c.props.field.indexOf('_') !== 0 && !c.props.hideColumnMenu) {\r\n const copyProps = Object.assign({}, c.props);\r\n let width;\r\n if (copyProps.width) {\r\n width = copyProps.width;\r\n delete copyProps.width;\r\n }\r\n //If at least one column in the grid has a width prop (e.g. the delete button column) then all columns must have a width prop, even if it's just width={undefined} or columns can appear squished when they're hidden and then shown using the column menu\r\n return } />\r\n }\r\n return c;\r\n });\r\n }\r\n \r\n return (\r\n
\r\n
\r\n {gridProps.editable && }\r\n {gridProps.editable && }\r\n {gridProps.editable && }\r\n {gridProps.allowExcelExport && }\r\n {gridProps.toolbarButtons}\r\n {props.showSavedMessage && Saved}\r\n {props.showErrorMessage && {props.errorMessage}}\r\n {gridProps.searchable && }\r\n
\r\n \r\n {children}\r\n \r\n {props.isLoading && }\r\n \r\n
\r\n )\r\n}","import React, { useState, useCallback, useEffect } from 'react';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport { kendoConfirm } from '../../Utils/DialogUtil';\r\n\r\n// Renderers class adapted from https://www.telerik.com/kendo-react-ui/components/grid/editing/editing-in-cell/\r\nexport default class SMIGridRenderers {\r\n constructor(enterEdit, exitEdit, itemChange, columns, rowColor, editFieldName, gridState, gridProps, onRowClick) {\r\n this.enterEdit = enterEdit;\r\n this.exitEdit = exitEdit;\r\n this.editFieldName = editFieldName;\r\n this.itemChange = itemChange;\r\n this.rowColor = rowColor;\r\n this.columns = columns.filter(c => c && !!c.props.field);\r\n this.columnsByField = {};\r\n this.gridState = gridState;\r\n this.gridProps = gridProps;\r\n this.onRowClick = onRowClick;\r\n this.columns.forEach((c) => {\r\n if (c && c.props.field) this.columnsByField[c.props.field] = c;\r\n });\r\n this.cellRender = this.cellRender.bind(this);\r\n this.rowRender = this.rowRender.bind(this);\r\n }\r\n\r\n deleteRender(cellProps, column) {\r\n //If a disabled callback was passed, call it to determine if the delete button is disabled and what message to display if it is\r\n const disabledMessage = column.props.disabled && typeof column.props.disabled === 'function' ? column.props.disabled(cellProps.dataItem) : null;\r\n const onDelete = dataItem => {\r\n if (column.props.deleteMessage)\r\n kendoConfirm(column.props.deleteMessage, 'Delete?', () => {\r\n cellProps.onChange({ field: '_delete', dataItem: cellProps.dataItem }); });\r\n else cellProps.onChange({ field: '_delete', dataItem: cellProps.dataItem });\r\n } \r\n return \r\n ;\r\n }\r\n\r\n cellRender(tdElement, cellProps) {\r\n if (!tdElement) return null;\r\n const dataItem = cellProps.dataItem;\r\n const field = cellProps.field;\r\n let column = null;\r\n if (cellProps.field && this.columnsByField[cellProps.field]) column = this.columnsByField[cellProps.field];\r\n\r\n if (!column || cellProps.rowType === 'groupHeader') {\r\n return tdElement;\r\n }\r\n\r\n if (field === '_delete') {\r\n //This column is a delete button, render it with the delete renderer\r\n return this.deleteRender(cellProps, column);\r\n }\r\n\r\n if (field === '_actionColumn') {\r\n return this.actionColumnRender(cellProps, column);\r\n }\r\n\r\n let isNotApplicable = false;\r\n if (column && column.props.isNotApplicable) isNotApplicable = typeof column.props.isNotApplicable === 'function' ? column.props.isNotApplicable(dataItem) : column.props.isNotApplicable;\r\n\r\n let tooltip = null;\r\n const preventEnterEditResult = column.props.preventEnterEdit ? column.props.preventEnterEdit(dataItem) : null;\r\n const flaggedToEdit = cellProps.dataItem[this.editFieldName] && (cellProps.field === cellProps.dataItem[this.editFieldName]);\r\n let isEditing = false;\r\n if (flaggedToEdit && !isNotApplicable && !preventEnterEditResult && this.gridProps.editable) {\r\n this.currentEditingField = field;\r\n this.currentEditingItem = dataItem;\r\n isEditing = true;\r\n }\r\n if (isEditing) {\r\n //Render custom editor if one was provided\r\n let CustomEditor = column.props.customEditor;\r\n if (!CustomEditor) CustomEditor = DefaultEditor;\r\n const editProps = {\r\n title: dataItem.preventExitEditMessage,\r\n ref: (td) => {\r\n if (tooltip) {\r\n tooltip.targetElement = td;\r\n tooltip.handleMouseOver({ target: td, persist: () => { } });\r\n setTimeout(() => {\r\n if (tooltip && tooltip.handleMouseOut)\r\n tooltip.handleMouseOut({ clientX: tooltip.left, clientY: tooltip.top });\r\n }, 2000);\r\n }\r\n }\r\n };\r\n let editorChildren = [ { this.itemChange(e); }} exitEdit={this.exitEdit} onRowClick={this.onRowClick} />];\r\n //dataItem.preventExitEditMessage is set in the exitEdit() method in SMIGrid.jsx, and is generated by the preventExitEdit prop passed to the column\r\n if (dataItem.preventExitEditMessage) editorChildren.push( tooltip = el} anchorElement=\"target\" openDelay={0} content={(props) => {dataItem.preventExitEditMessage}} />);\r\n return React.cloneElement(tdElement, editProps, editorChildren);\r\n }\r\n let additionalProps = {};\r\n let children = tdElement.props.children ? tdElement.props.children : [];\r\n if (isNotApplicable) {\r\n children = [Not Applicable];\r\n }\r\n else if (!isEditing && column && column.props.customTemplate && typeof column.props.customTemplate === 'function') {\r\n //Use custom template function to render cell content\r\n children = [{column.props.customTemplate(cellProps.dataItem, cellProps.field, this.gridState.data)}];\r\n }\r\n else if (!isEditing) {\r\n const displayValue = cellProps.dataItem[cellProps.field] !== null && typeof cellProps.dataItem[cellProps.field] !== 'undefined' ? cellProps.dataItem[cellProps.field].toString() : '';\r\n children = [displayValue];\r\n }\r\n if (!isEditing) additionalProps = {\r\n onClick: (e) => { if (!isNotApplicable && !!column.props.editable) this.enterEdit(dataItem, field); },\r\n ref: (td) => {\r\n if (td) {\r\n if (!isNotApplicable) {\r\n //Mark dirty cells or cells that have failed validation with their appropriate classes\r\n if (cellProps.dataItem.dirtyFields && cellProps.dataItem.dirtyFields[field]) td.classList.add('dirty');\r\n else td.classList.remove('dirty');\r\n if (cellProps.dataItem.errorFields && cellProps.dataItem.errorFields[field]) {\r\n td.classList.add('error');\r\n }\r\n else td.classList.remove('error');\r\n }\r\n else {\r\n //Not applicable cells should not be marked dirty or error\r\n td.classList.remove('dirty');\r\n td.classList.remove('error');\r\n }\r\n if (tooltip) {\r\n tooltip.targetElement = td;\r\n tooltip.handleMouseOver({ target: td, persist: () => { } });\r\n // Have tooltip disappear after 4 seconds to prevent it from blocking access to other cells\r\n setTimeout(() => tooltip && tooltip.handleMouseOut({ clientX: tooltip.left, clientY: tooltip.top }), 4000);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //If preventEnterEdit() returned a string, we'll display that string as a tooltip message\r\n const preventEnterEditMessage = typeof preventEnterEditResult === 'string' ? preventEnterEditResult : null;\r\n\r\n if (cellProps.dataItem.errorFields && cellProps.dataItem.errorFields[field] && typeof cellProps.dataItem.errorFields[field] === 'string' && !isNotApplicable && !isEditing) {\r\n //Add tooltip to field that failed validation on save\r\n const errorMessage = cellProps.dataItem.errorFields[field];\r\n children.push( tooltip = el} anchorElement=\"target\" openDelay={0} content={(props) => {errorMessage}} />);\r\n additionalProps['title'] = errorMessage;\r\n }\r\n else if (flaggedToEdit && preventEnterEditMessage) {\r\n //Add tooltip to field the user clicked but cannot edit due to some condition specified in the preventEnterEdit prop\r\n children.push( tooltip = el} anchorElement=\"target\" openDelay={0} content={(props) => {preventEnterEditMessage}} />);\r\n additionalProps['title'] = preventEnterEditMessage;\r\n }\r\n if (column.props.customCssClass) {\r\n if (typeof column.props.customCssClass === 'function')\r\n additionalProps['className'] = column.props.customCssClass(cellProps.dataItem, cellProps.field, this.gridState.data);\r\n else\r\n additionalProps['className'] = column.props.customCssClass;\r\n }\r\n\r\n return React.cloneElement(tdElement, { ...tdElement.props, ...additionalProps }, children);\r\n }\r\n\r\n rowRender(trElement, rowData) {\r\n const trProps = {\r\n ...trElement.props,\r\n onKeyDown: (event) => {\r\n if (event.keyCode === 13) {\r\n //Enter key pressed, stop editing\r\n this.exitEdit();\r\n }\r\n },\r\n className: trElement.props.className + (rowData.dataItem.inEdit ? ' k-grid-edit-row' : '')\r\n };\r\n if (this.rowColor) {\r\n if (typeof this.rowColor === 'function') trProps.style = { backgroundColor: this.rowColor(rowData.dataItem) };\r\n else trProps.style = { backgroundColor: this.rowColor };\r\n }\r\n else trProps.style = {};\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n}\r\n\r\nconst DefaultEditor = ({ dataItem, field, exitEdit, onChange, onRowClick }) => {\r\n const [value, setValue] = useState(dataItem[field]);\r\n const saveValue = useCallback(() => onChange({ dataItem, field, value }), [onChange, dataItem, field, value]);\r\n\r\n const onKeyPress = useCallback((e) => {\r\n // Save value if enter or tab is pressed\r\n if (e.keyCode === 13 || e.keyCode === 9) saveValue();\r\n }, [saveValue]);\r\n return setValue(e.target.value)} onBlur={() => { saveValue(); exitEdit(); }} />\r\n}","import React, { Component } from 'react';\r\nimport SMIGridPresentation from './SMIGridPresentation';\r\nimport { process } from '@progress/kendo-data-query';\r\nimport SMIGridRenderers from './SMIGridRenderers';\r\nimport axios from 'axios';\r\nimport { convertDateStringsToDates, convertDatesToStrings } from '../../Utils/DateUtil';\r\nimport { kendoAlert } from '../../Utils/DialogUtil';\r\nimport { setTimeout } from 'timers';\r\n\r\nimport './SMIGrid.scss';\r\nimport { Prompt } from 'react-router-dom';\r\n\r\nexport default class SMIGrid extends Component {\r\n\r\n state = {\r\n data: [],\r\n showSavedMessage: false,\r\n filter: null,\r\n sort: null,\r\n columns: [],\r\n dataState: { sort: this.props.sort, group: this.props.group, skip: 0, take: this.props.pageable ? this.props.itemsPerPage : undefined },\r\n editField: undefined,\r\n selectedItems: new Set(),\r\n pageNumber: 1,\r\n loading: false,\r\n result: null,\r\n searchQuery: '',\r\n showErrorMessage: false,\r\n errorMessage: '',\r\n isSaving: false\r\n };\r\n\r\n pristineData: [];\r\n deletedItems = [];\r\n columnsByField = {};\r\n dummyId = -1;\r\n expandToggledFields = new Set();\r\n gridRef = React.createRef();\r\n excelExportRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.renderers = new SMIGridRenderers(this.enterEdit.bind(this), this.exitEdit.bind(this), this.itemChange.bind(this), props.children, props.rowColor, 'inEdit', this.state, props, this.onRowClick.bind(this));\r\n }\r\n\r\n enterEdit(dataItem, field) {\r\n if (dataItem.inEdit && field === this.state.editField) {\r\n return;\r\n }\r\n if (!this.exitEdit()) return;\r\n dataItem.inEdit = field;\r\n this.setState({\r\n editField: field,\r\n data: this.state.data\r\n });\r\n const column = this.columnsByField[field];\r\n if (column && column.props.onEnterEdit) column.props.onEnterEdit(dataItem);\r\n }\r\n\r\n exitEdit() {\r\n if (this.state.editField) {\r\n //If the current column being edited has a preventExitEdit prop, call it to check if it's okay to allow the user to stop editing the cell\r\n const column = this.columnsByField[this.state.editField];\r\n if (column) {\r\n const editItemArr = this.state.data.filter((d) => !!d.inEdit);\r\n if (column.props.preventExitEdit) {\r\n if (editItemArr.length > 0) {\r\n editItemArr[0].preventExitEditMessage = column.props.preventExitEdit(editItemArr[0]);\r\n if (editItemArr[0].preventExitEditMessage) {\r\n this.forceUpdate();\r\n return false;\r\n }\r\n }\r\n }\r\n if (column.props.onExitEdit && editItemArr.length > 0) column.props.onExitEdit(editItemArr[0]);\r\n }\r\n }\r\n this.state.data.forEach((d) => { d.inEdit = undefined; d.preventExitEditMessage = undefined; });\r\n this.setState({\r\n data: this.state.data,\r\n editField: undefined\r\n });\r\n return true;\r\n }\r\n\r\n deepCopy(aObject) {\r\n if (!aObject) {\r\n return aObject;\r\n }\r\n\r\n var bObject, v, k;\r\n bObject = Array.isArray(aObject) ? [] : {};\r\n for (k in aObject) {\r\n v = aObject[k];\r\n bObject[k] = (typeof v === \"object\" && !(v instanceof Date)) ? this.deepCopy(v) : v;\r\n }\r\n return bObject;\r\n }\r\n\r\n loadingOn = () => this.setState({ loading: true });\r\n loadingOff = () => this.setState({ loading: false });\r\n\r\n loadData = () => {\r\n if (!this.props.crudUrl) return;\r\n this.setState({ loading: true });\r\n axios.get(this.props.crudUrl).then(response => {\r\n let data = response.data;\r\n convertDateStringsToDates(data); \r\n this.pristineData = this.deepCopy(data);\r\n this.setState({ data: data }, () => {\r\n if (this.state.selectedItems && this.state.selectedItems.size > 0) {\r\n this.updateSelectedItems();\r\n }\r\n });\r\n if (this.props.onDataLoaded) this.props.onDataLoaded(data);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n kendoAlert('Error loading data');\r\n })\r\n .then(() => this.setState({ loading: false }));\r\n }\r\n\r\n updateSelectedItems = () => {\r\n let isSelectedItemChanged = false;\r\n let updatedSelectedItems = new Set();\r\n let idField = this.gridRef.current.props.idField || 'id';\r\n let firstSelectedItem;\r\n\r\n this.state.selectedItems.forEach((item) => {\r\n let updatedItem = this.state.data.find(d => d[idField] && d[idField] === item[idField]);\r\n if (updatedItem) {\r\n updatedSelectedItems.add(updatedItem); \r\n isSelectedItemChanged = true;\r\n if (!firstSelectedItem) firstSelectedItem = updatedItem;\r\n }\r\n });\r\n\r\n if (isSelectedItemChanged) {\r\n this.setState({ selectedItems: updatedSelectedItems }, () => {\r\n this.updateDataResult(this.state.dataState);\r\n //Call the custom onRowClick method so that clients get the updated selectedItems\r\n if (this.props.onRowClick) this.props.onRowClick({ dataItem: this.state.selectedItems.values().next().value });\r\n });\r\n }\r\n \r\n }\r\n\r\n setGridFilter = (_filter) => {\r\n let newDataState = Object.assign({}, this.state.dataState);\r\n newDataState.filter = _filter;\r\n this.setState({ dataState: newDataState }, () => {\r\n this.updateDataResult(this.state.dataState);\r\n });\r\n }\r\n\r\n getDummyId() {\r\n this.dummyId--;\r\n return this.dummyId;\r\n }\r\n\r\n flashSavedMessage = () => {\r\n this.setState({ showSavedMessage: true });\r\n setTimeout(() => this.setState({ showSavedMessage: false }), 4000);\r\n }\r\n\r\n flashErrorMessage = (errStr) => {\r\n let message = 'Failed';\r\n if (errStr.message)\r\n message = errStr.message;\r\n else if (errStr.ErrorMessage)\r\n message = \"Failed\";\r\n else\r\n message = errStr;\r\n\r\n this.setState({ showErrorMessage: true, errorMessage: message || 'Failed' });\r\n setTimeout(() => this.setState({ showErrorMessage: false }), 4000);\r\n }\r\n\r\n saveData = () => {\r\n this.exitEdit();\r\n if (this.validate()) {\r\n //Need to make two requests. One to save new/updated data items, and one to delete data items\r\n const dirtyData = this.state.data.filter(d => d.dirty).map(d => Object.assign({}, d));\r\n convertDatesToStrings(dirtyData);\r\n if (dirtyData.length > 0 || this.deletedItems.length > 0) {\r\n\r\n const saveRequest = dirtyData.length > 0 ? (this.props.onSave ? this.props.onSave(dirtyData) : axios.post(this.props.postUrl || this.props.crudUrl, dirtyData).then(response => {\r\n\r\n if (response && response.data) {\r\n var dataObj = response.data[0];\r\n if (dataObj && dataObj.message && dataObj.message != '' && dataObj.message !== \"\") { \r\n return Promise.reject(dataObj.message);\r\n }\r\n else {\r\n return Promise.resolve();\r\n }\r\n }\r\n })) : Promise.resolve();\r\n\r\n const deleteRequest = this.deletedItems.length > 0 ? (this.props.onDelete ? this.props.onDelete(this.deletedItems) : axios.delete(this.props.deleteUrl || this.props.crudUrl, { data: this.deletedItems })).then(response => this.deletedItems = []) : Promise.resolve();\r\n this.setState({ loading: true, isSaving : true });\r\n Promise.all([saveRequest, deleteRequest]).then(() => {\r\n this.loadData();\r\n this.deletedItems = [];\r\n this.setPageDirtyValue(false);\r\n this.flashSavedMessage();\r\n if (this.props.onSaveComplete && typeof this.props.onSaveComplete === 'function') this.props.onSaveComplete();\r\n }).catch(error => {\r\n \r\n let err = error.response && error.response.data ? error.response.data : {};\r\n let errorMessage = err.ErrorMessage || 'Unable to save due to an error';\r\n console.log(errorMessage);\r\n if (errorMessage.toLowerCase().search('reference') !== -1) {\r\n if (errorMessage.toLowerCase().search('delete') !== -1)\r\n errorMessage = 'Delete failed due to reference error!';\r\n else\r\n errorMessage = 'Save failed due to reference error!';\r\n }\r\n this.flashErrorMessage(errorMessage);\r\n })\r\n .then(() => this.setState({ loading: false, isSaving: false }));\r\n }\r\n }\r\n else this.setState({ data: this.state.data });\r\n }\r\n\r\n forceRender = () => {\r\n this.setState({ data: this.state.data });\r\n }\r\n\r\n cancelChanges = () => {\r\n this.deletedItems = [];\r\n this.setState({ data: this.deepCopy(this.pristineData) }, () => {\r\n if (this.props.onCancelChanges) this.props.onCancelChanges();\r\n });\r\n this.setPageDirtyValue(false);\r\n }\r\n\r\n getColumnListForColumnMenu() {\r\n let columns = [];\r\n this.props.children.forEach((c) => {\r\n if (!c) return;\r\n //Exclude columns with fields starting with \"_\" from the column menu as these are action columns (e.g. the delete button)\r\n if (c.props.field && c.props.field.indexOf('_') !== 0) {\r\n let isColumnShow = !c.props.hidden;\r\n //If a column is selected to show, then that column show state should be selected from the previous state\r\n if (this.state.columns) {\r\n let prevColumnState = this.state.columns.find(col => col.field === c.props.field);\r\n if (prevColumnState)\r\n isColumnShow = prevColumnState.show;\r\n }\r\n columns.push({ field: c.props.field, title: c.props.title, show: isColumnShow });\r\n }\r\n \r\n });\r\n return columns;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.crudUrl) this.loadData();\r\n else if (this.props.data) {\r\n this.pristineData = this.deepCopy(this.props.data);\r\n this.setState({ data: this.props.data });\r\n }\r\n this.columnsByField = this.getColumnsByField();\r\n this.setState({ columns: this.getColumnListForColumnMenu() });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.crudUrl !== this.props.crudUrl) {\r\n if (this.props.crudUrl) this.loadData();\r\n else this.setState({ data: [] });\r\n }\r\n //Update columns and renderers incase column props changed\r\n let columnsChanged = false;\r\n if (this.props.children.length !== prevProps.children.length) columnsChanged = true;\r\n else {\r\n for (let i = 0; i < this.props.children.length; i++) {\r\n if (this.props.children[i] !== prevProps.children[i]) {\r\n columnsChanged = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (columnsChanged) {\r\n this.columnsByField = this.getColumnsByField();\r\n this.renderers = new SMIGridRenderers(this.enterEdit.bind(this), this.exitEdit.bind(this), this.itemChange.bind(this), this.props.children, this.props.rowColor, 'inEdit', this.state, this.props, this.onRowClick.bind(this));\r\n this.setState({ columns: this.getColumnListForColumnMenu() });\r\n }\r\n if (prevProps.data !== this.props.data) {\r\n this.pristineData = this.deepCopy(this.props.data);\r\n this.setState({ data: this.props.data });\r\n }\r\n if (prevState.data !== this.state.data || prevState.searchQuery !== this.state.searchQuery) {\r\n this.updateDataResult(this.state.dataState);\r\n }\r\n if (prevProps.itemsPerPage !== this.props.itemsPerPage || prevProps.pageable !== this.props.pageable) {\r\n const newDataState = Object.assign({}, this.state.dataState);\r\n newDataState.take = this.props.pageable ? this.props.itemsPerPage : undefined;\r\n newDataState.skip = 0;\r\n this.setState({ pageNumber: 1, dataState: newDataState });\r\n this.updateDataResult(newDataState);\r\n }\r\n }\r\n\r\n //React prompt cannot prevent page refresh . So added onbeforeunload window function\r\n componentWillMount() {\r\n onbeforeunload = event => {\r\n const dirtyData = this.state.data.filter(d => d.dirty).map(d => Object.assign({}, d));\r\n if (dirtyData && dirtyData.length > 0) {\r\n event.preventDefault();\r\n event.returnValue = 'Data going to loss';\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n onbeforeunload = null;\r\n }\r\n\r\n getColumnsByField() {\r\n let columnsByField = {};\r\n this.props.children.forEach((c) => {\r\n if (!c) return;\r\n //Exclude columns with fields starting with \"_\" from the column menu as these are action columns (e.g. the delete button)\r\n if (c.props.field) columnsByField[c.props.field] = c;\r\n });\r\n return columnsByField;\r\n }\r\n\r\n getDefaultValues() {\r\n let defaults = {};\r\n this.props.children.filter(c => c && c.props.field).forEach(c => defaults[c.props.field] = (c.props.defaultValue === undefined ? '' : c.props.defaultValue));\r\n return defaults;\r\n }\r\n\r\n onColumnsSubmit = (columnsState) => {\r\n this.setState({\r\n columns: columnsState\r\n }, () => {\r\n if (this.props.onColumnsSubmit && typeof this.props.onColumnsSubmit === 'function')\r\n this.props.onColumnsSubmit(columnsState);\r\n });\r\n }\r\n\r\n addNew = () => {\r\n const defaults = this.getDefaultValues();\r\n let newItem = Object.assign({}, defaults);\r\n if (this.props.idField) newItem[this.props.idField] = this.getDummyId();\r\n else newItem.id = this.getDummyId();\r\n let newData = this.state.data.slice(0);\r\n newItem.dirty = true;\r\n newData.unshift(newItem);\r\n this.setState({ data: newData });\r\n\r\n //Automatically start editing the first editable column in the grid for the new item\r\n const firstEditableField = this.getFirstEditableColumnField();\r\n setTimeout(() => this.enterEdit(newItem, firstEditableField), 10);\r\n\r\n if (this.props.onAddNew) this.props.onAddNew(newItem);\r\n this.selectChange(newItem);\r\n return newItem;\r\n }\r\n\r\n addNewDataItem = newItem => {\r\n const defaults = this.getDefaultValues();\r\n let newData = this.state.data.slice(0);\r\n newData.unshift(newItem);\r\n this.setState({ data: newData }); \r\n return newItem;\r\n }\r\n\r\n removeDataItem = dataItem => {\r\n let data = this.state.data.slice(0);\r\n let index = data.findIndex(item => item.id == dataItem.id);\r\n data.splice(index, 1);\r\n this.setState({ data: data });\r\n }\r\n\r\n expandChange = (event) => {\r\n event.dataItem[event.target.props.expandField] = event.value;\r\n if (event.value !== !this.props.collapseGroups) this.expandToggledFields.add(event.dataItem.value);\r\n else this.expandToggledFields.delete(event.dataItem.value);\r\n this.setState({ result: Object.assign({}, this.state.result), dataState: this.state.dataState });\r\n }\r\n\r\n setPageDirtyValue(value) {\r\n if (!this.props.disableNavigationWarning && window.self !== window.top && window.parent && typeof window.parent.setChildPageDirty === 'function') {\r\n window.parent.setChildPageDirty(value);\r\n }\r\n }\r\n\r\n searchQuerySubmitted = (searchQuery) => {\r\n this.setState({ searchQuery: searchQuery });\r\n }\r\n\r\n validate() {\r\n let validationPassed = true;\r\n if (this.state.data) {\r\n for (let i = 0; i < this.props.children.length; i++) {\r\n if (this.props.children[i] && this.props.children[i].props.field && this.props.children[i].props.validationRules) {\r\n const field = this.props.children[i].props.field; \r\n this.props.children[i].props.validationRules.forEach((rule) => {\r\n this.state.data.forEach((item) => {\r\n const result = rule(item[field], item, field, this.state.data);\r\n if (result !== true) {\r\n //Validation failed. Mark this item as having an error\r\n validationPassed = false;\r\n if (!item.errorFields) item.errorFields = {};\r\n if (!item.errorFields[field]) item.errorFields[field] = typeof result === 'string' ? result : true; //If validation function returned a string, store it in errorFields so it can be displayed as a tooltip\r\n }\r\n\r\n //else {\r\n // if (item.errorFields && item.errorFields[field]) {\r\n // delete item.errorFields[field]; //If there is no error, then remove it from the errorFields\r\n // }\r\n //}\r\n });\r\n });\r\n }\r\n }\r\n }\r\n return validationPassed;\r\n }\r\n\r\n getFirstEditableColumnField() {\r\n for (let i = 0; i < this.props.children.length; i++) {\r\n if (this.props.children[i] && this.props.children[i].props.editable && this.props.children[i].props.field && !this.props.children[i].props.hidden)\r\n return this.props.children[i].props.field;\r\n }\r\n return null;\r\n }\r\n\r\n itemChange = (event) => {\r\n let updatedData = this.state.data.slice(0);\r\n if (event.field === '_delete') {\r\n //Delete button was pressed, delete the item\r\n this.deletedItems.push(event.dataItem);\r\n for (let i = 0; i < updatedData.length; i++) {\r\n if (this.state.data[i] === event.dataItem) {\r\n updatedData.splice(i, 1);\r\n break;\r\n }\r\n }\r\n this.setPageDirtyValue(true);\r\n }\r\n else if (event.dataItem[event.field] !== event.value) {\r\n //If the new value in the change event is different from the current value, change the field value to the new value\r\n this.setValue(event.dataItem, event.field, event.value);\r\n }\r\n //Update state so that grid cells will refresh\r\n this.setState({ data: updatedData }, () => {\r\n if (this.props.onItemChange && typeof this.props.onItemChange === 'function')\r\n this.props.onItemChange(event);\r\n }); \r\n }\r\n\r\n setValue = (dataItem, field, value) => {\r\n const column = this.columnsByField[field];\r\n const oldValue = dataItem[field];\r\n dataItem[field] = value;\r\n dataItem.dirty = true;\r\n if (!dataItem.dirtyFields) dataItem.dirtyFields = {};\r\n dataItem.dirtyFields[field] = true;\r\n this.setPageDirtyValue(true);\r\n //Clear any errors and then validate again on next save\r\n dataItem.errorFields = [];\r\n dataItem.errorMessages = {};\r\n if (column && column.props.onChange) column.props.onChange(dataItem, field, oldValue, value, this.setValue.bind(this));\r\n\r\n }\r\n\r\n navigateOnTab = (e) => {\r\n if (e.keyCode === 9) {\r\n //Tab key pressed, switch to editing the next cell over\r\n let editingItem = null;\r\n for (let i = 0; i < this.state.data.length; i++) {\r\n if (this.state.data[i].inEdit) {\r\n editingItem = this.state.data[i];\r\n break;\r\n }\r\n }\r\n if (editingItem) {\r\n e.preventDefault();\r\n const editableColumns = this.props.children.filter(c => c && !!c.props.field && c.props.editable !== false);\r\n let currentColumnIndex = -1;\r\n for (let i = 0; i < editableColumns.length; i++) {\r\n if (editableColumns[i].props.field === editingItem.inEdit) {\r\n currentColumnIndex = i;\r\n break;\r\n }\r\n }\r\n if (currentColumnIndex !== -1 && editableColumns.length > currentColumnIndex + 1)\r\n this.enterEdit(editingItem, editableColumns[currentColumnIndex + 1].props.field);\r\n else\r\n this.exitEdit();\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n export = (exportAll = true) => {\r\n let data = []; \r\n // By default is export all, if you want to export only current page data, then exportAll false\r\n if (exportAll)\r\n data = this.deepCopy(process(this.state.data, { }).data);\r\n else\r\n data = this.deepCopy(process(this.state.data, this.state.dataState).data);\r\n //Apply templates to data so that they will appear in the exported excel file the same way they appear in the grid\r\n data.forEach((d) => {\r\n for (let field in this.columnsByField) {\r\n const template = this.columnsByField[field].props.customTemplate;\r\n if (template && typeof template === 'function') d[field] = template(d, field);\r\n }\r\n });\r\n //Changing to gridRef.columns to state.columns because first one doesn't allow to include hidden columns (if the user select hidden column to show)\r\n const columns = this.state.columns.filter(c=> c.show);\r\n //const excelColumns = this.gridRef.current.columns.filter(c => c.field.indexOf('_') !== 0);\r\n this.excelExportRef.current.save(data, columns);\r\n }\r\n\r\n pageChange = (event) => {\r\n this.setState({\r\n pageNumber: Math.floor(event.page.skip / this.props.itemsPerPage) + 1\r\n });\r\n }\r\n\r\n isGroup(item) {\r\n return item.aggregates && item.items;\r\n }\r\n\r\n isDirty = () => {\r\n const dirtyData = this.state.data.filter(d => d.dirty);\r\n return dirtyData? dirtyData.length > 0 : false;\r\n }\r\n\r\n performSearchFilter = (data, searchQuery) => {\r\n if (!searchQuery) return data;\r\n const searchQueryLower = searchQuery.toLowerCase();\r\n return data.filter(dataItem => {\r\n for (let field in this.columnsByField) {\r\n if (field.indexOf('_') === 0) continue; // Skip columns starting with _ since these are buttons.\r\n let dataValue = dataItem[field];\r\n if (this.columnsByField[field].props.customTemplate) {\r\n dataValue = this.columnsByField[field].props.customTemplate(dataItem, field, data);\r\n }\r\n if (dataValue && dataValue.toString().toLowerCase().indexOf(searchQueryLower) !== -1) return true;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n updateDataItem = (newDataItem, field = 'id') => {\r\n let _data = this.deepCopy(this.state.data);\r\n for (let i = 0; i < _data.length; i++) {\r\n if (_data[i][field] === newDataItem[field]) {\r\n _data[i] = newDataItem;\r\n break;\r\n }\r\n } \r\n if (_data) { \r\n this.setState({ data: _data }, () => {\r\n this.selectChange(newDataItem);\r\n });\r\n }\r\n }\r\n\r\n updateDataResult = (dataState, selectedItems) => {\r\n if (!selectedItems) selectedItems = this.state.selectedItems;\r\n let data = this.state.data;\r\n if (this.props.searchable) data = this.performSearchFilter(data, this.state.searchQuery);\r\n if (this.props.selectMode) data.forEach(item => { item[this.props.selectedField] = selectedItems.has(item); });\r\n const result = process(data, dataState);\r\n if (this.props.groupable) {\r\n result.data.forEach(item => {\r\n //If this item is grouping, set its expanded state based on the previously saved value or the default value based on the collapseGroups prop\r\n if (this.isGroup(item) && item._expanded === undefined) {\r\n\r\n if (this.expandToggledFields.has(item.value)) item._expanded = !!this.props.collapseGroups;\r\n else item._expanded = !this.props.collapseGroups;\r\n }\r\n });\r\n }\r\n if (this.props.onDataUpdate && typeof this.props.onDataUpdate === 'function')\r\n this.props.onDataUpdate(result);\r\n\r\n try {\r\n //Include new data item with data result so that the user can see what new data s/he is added\r\n let id = this.props.idField || 'id';\r\n if (this.state.data.find(d => d[id] <= 0)) {\r\n let allNewData = this.state.data.filter(d => d[id] <= 0); \r\n if (allNewData)\r\n allNewData.forEach(newData => {\r\n if (!result.data.find(d => d[id] === newData[id]))\r\n result.data.unshift(newData);\r\n });\r\n }\r\n } catch (e) { \r\n }\r\n \r\n\r\n this.setState({ result: result, dataState: dataState });\r\n }\r\n\r\n dataStateChange = (event) => {\r\n this.updateDataResult(event.dataState);\r\n if (this.props.onDataStateChange) this.props.onDataStateChange(event.dataState);\r\n }\r\n\r\n selectChange = (selectedItems) => {\r\n selectedItems = new Set(Array.isArray(selectedItems) ? selectedItems : [selectedItems]);\r\n this.setState({ selectedItems: selectedItems }, () => {\r\n this.updateDataResult(this.state.dataState, selectedItems);\r\n if (this.props.onSelectChange) setTimeout(() => this.props.onSelectChange(Array.from(selectedItems)));\r\n });\r\n }\r\n\r\n onRowClick = (event) => {\r\n if (!this.props.selectMode) return;\r\n else if (this.props.selectMode === 'single') {\r\n if (!this.state.selectedItems.has(event.dataItem)) this.selectChange([event.dataItem]);\r\n }\r\n else if (this.props.selectMode === 'multiple') {\r\n const data = this.state.result.data || this.state.result;\r\n let last = this.lastSelectedIndex;\r\n const current = data.findIndex(dataItem => dataItem === event.dataItem);\r\n\r\n if (!event.nativeEvent || !event.nativeEvent.shiftKey || (!last && last !== 0)) {\r\n this.lastSelectedIndex = last = current;\r\n }\r\n else {\r\n if (window.getSelection) { window.getSelection().removeAllRanges(); }\r\n else if (document.selection) { document.selection.empty(); }\r\n }\r\n\r\n const selectedItems = this.state.selectedItems;\r\n //Check if the selected items are still exist in dataset\r\n //if you remove any dataitem from the grid, it might not update\r\n //selecetdItems list\r\n let arrSelectedItems = Array.from(selectedItems);\r\n for (let i = 0; i < arrSelectedItems.length; i++) {\r\n let item = data.findIndex(dataItem => dataItem === arrSelectedItems[i]);\r\n if (item < 0) selectedItems.delete(arrSelectedItems[i]);\r\n }\r\n\r\n if (!event.nativeEvent || !event.nativeEvent.ctrlKey) {\r\n data.forEach(item => { item.selected = false; selectedItems.delete(item); });\r\n }\r\n\r\n const select = !event.dataItem.selected;\r\n for (let i = Math.min(last, current); i <= Math.max(last, current); i++) {\r\n data[i].selected = select;\r\n if (this.state.result.data[i].selected) selectedItems.add(data[i]);\r\n else selectedItems.delete(data[i]);\r\n }\r\n\r\n this.selectChange(Array.from(selectedItems));\r\n }\r\n\r\n //If the currenct selected column is non editable then exit the edit\r\n let column = this.columnsByField[event.dataItem.inEdit]; \r\n if (!column)\r\n this.exitEdit();\r\n\r\n if (this.props.onRowClick) this.props.onRowClick(event);\r\n } \r\n\r\n render() {\r\n const gridProps = Object.assign({}, this.props);\r\n const children = this.props.children;\r\n delete gridProps.children; \r\n \r\n const dirtyData = this.state.data? this.state.data.filter(d => d.dirty).map(d => Object.assign({}, d)) : [];\r\n\r\n // We include a div wrapper so that we can get the component instance from the DOM node (see getComponentFromDomNode() in ReactUtils.js)\r\n return (\r\n
\r\n 0} message=\"Please save or cancel your change before you navigate.\" />\r\n \r\n {children}\r\n \r\n
\r\n );\r\n\r\n }\r\n}\r\n\r\nSMIGrid.defaultProps = {\r\n filterable: true,\r\n sortable: true,\r\n editable: true,\r\n groupable: false,\r\n showColumnMenu: false,\r\n searchable: false,\r\n resizable: true,\r\n selectedField: '_isSelected',\r\n selectMode: 'single',\r\n addSaveEvent: true\r\n}"],"sourceRoot":""}