{"version":3,"sources":["Utils/DialogUtil.js","components/LoadingMask/LoadingMask.js","GridHelper.js","Utils/Util.js","reducers/Map.js","pages/Mobile/SwitchCommunity.js","Utils/SortHelper.js","images/smi_logo.png","Utils/AudioUtil.js","pages/Mobile/HardwareAssignment.js","pages/Mobile/HardwareRegistrationPage.js","components/SMIGrid/SMIGridSearch.js","components/SMIGrid/SMIColumnMenu.js","components/SMIGrid/SMIGridPresentation.js","components/SMIGrid/SMIGridRenderers.js","components/SMIGrid/SMIGrid.js","components/SMIGrid/LoadingPanel.js","pages/Shared/Map/VehicleMarker.js","pages/Settings/ChangePassword/PasswordContext.js","pages/Settings/ChangePassword/ChangePasswordPresentation.js","pages/Settings/ChangePassword/ChangePassword.js","Utils/ScheduleUtil.js","pages/System/Diagnostics/VehicleDiagnostics/ReduxAction.js","images/Location_Icon_18x27.png","components/SMIGrid/SMIActionColumn.js","pages/Shared/Map/DrawableRoute.js","pages/Shared/Map/MapComponentPresentation.js","pages/Shared/Map/MapComponent.js","reducers/SimulatorReducer.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","components/SMIGrid/GridCustomTemplates.js","components/PageWrapper/PageWrapper.js","images/loader.gif","Utils/DateUtil.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/MyAlerts.js","components/MakeAnnouncement/AnnouncementComposition.js","components/MakeAnnouncement/MakeAnnouncement.js","components/AlertInbox/AlertsInbox.js","components/AlertInbox/AlertOutbox.js","components/MainPage/MainPage.js","SystemSettingContext.js"],"names":["__webpack_require__","d","__webpack_exports__","kendoAlert","kendoConfirm","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","_progress_kendo_react_dialogs__WEBPACK_IMPORTED_MODULE_2__","text","title","buttonText","onCloseCallback","isError","arguments","length","undefined","kendoAlertContainer","document","createElement","body","append","onClose","ReactDOM","unmountComponentAtNode","remove","newText","split","map","item","i","a","key","style","textAlign","color","dialogJsx","padding","maxWidth","className","minWidth","onClick","render","onConfirmCallback","onCancelCallback","width","okayButtonText","cancelButtonText","closeIcon","dangerouslySetInnerHTML","__html","background","marginRight","border","sortNaturalAlphaNumeric","_Utils_Util__WEBPACK_IMPORTED_MODULE_0__","b","field","Util","isNullOrUndefined","ax","bx","toLowerCase","Math","max","t","as","substr","bs","an","parseInt","bn","isNaN","toString","val","isNullOrWhitespace","str","match","_padTo2","num","slice","strContains","containsVal","caseInsensitive","Array","valToCheck","indexOf","endsWith","endsWithVal","showMessage","divtitle","boxtitle","_React$Component","_temp","_getPrototypeOf2","_this","Object","F_a1_work_11_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","_len","args","_key","F_a1_work_11_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","F_a1_work_11_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","concat","state","visible","toggleDialog","e","setState","F_a1_work_11_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__","F_a1_work_11_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__","value","react__WEBPACK_IMPORTED_MODULE_6___default","react__WEBPACK_IMPORTED_MODULE_6__","_progress_kendo_react_dialogs__WEBPACK_IMPORTED_MODULE_7__","margin","React","Component","showMessage1","mWindow","$","data","content","open","kendoWindow","actions","animation","effects","duration","close","draggable","modal","resizable","center","$closeButton","click","insertAfter","children","last","console","log","charLimit","limit","trim","substring","roundToPrecision","precision","multiplier","pow","round","flatDataToHierarchical","idFieldName","parentIdFieldName","parentIdentifier","hierarchicalDataArr","newItem","extend","populateHierarchicalChildren","push","parentItem","subItems","items","flattenHierarchicalData","childrenArrayName","flatDataArr","childArr","getQueryStringParameterByName","name","queryString","decodeURI","window","location","search","replace","o_reg","RegExp","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","min","x3","y3","x4","y4","x","y","char","escapedChar","escapeStringForRegExp","regexStr","startsWith","startsWithVal","lastIndexOf","loadingOn","currentlyLoading","self","addClass","_loadingOnCancelTimer","clearTimeout","setTimeout","loadingOff","error","removeClass","setCookie","c_name","exdays","exdate","Date","setDate","getDate","c_value","escape","toUTCString","cookie","getCookie","ARRcookies","unescape","copyTextToClipboard","element","appendChild","focus","setSelectionRange","execCommand","removeChild","lastDummyIdUsed","getNewDummyId","getCopyName","itemToCopy","nameField","otherFieldsToMatch","cleanName","namePattern","copyCount","test","otherFieldsMatch","fieldToMatch","getGuid","random","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","action","type","F_a1_work_11_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","Name","Markers","markers","ShouldZoom","shouldZoom","filter","g","tripData","vehiclePosition","vehicleFixTaken","vehicleAuditLogs","clusterMarkers","vehicleMarker","historyRouteLines","stopMarkers","routeLines","circleMarkers","zoomPosition","boundPosition","polygons","DrawableRoutes","drawableRoutes","mapRef","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","_this2","currentUser","JSON","parse","localStorage","getItem","username","axios","get","then","result","communityItem","menuTree","subMenu","find","catch","response","status","origin","url","_this3","parsedUrl","URL","encodeURIComponent","hostname","ticket","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","goToCommunity","id","react_router_dom__WEBPACK_IMPORTED_MODULE_8__","react_router_dom__WEBPACK_IMPORTED_MODULE_9__","updatePage","to","display","src","require","_Util__WEBPACK_IMPORTED_MODULE_0__","SortHelper","sortArrayNaturalAlphaNumeric","arr","sort","module","exports","playAudio","audioSnippets","speechSynthesizerRate","smiMapService","onLoadedCallback","rate","voice","ttsUrl","soundEmbedContainer","getElementById","visibility","position","height","firstChild","soundEmbed","onplaying","pause","play","HardwareAssignment","assemblyStatuses","hardwares","unassignedVehicleList","assignableVehicles","selectedHardware","selectedVehicle","canTestSignSound","sendingSignSoundCommand","hardwareSelected","h","target","vehicleId","testSignSound","post","commandParams","repetitions","commandType","hardwareIds","selectedVehicleChanged","_hardwares","vehicleName","forEach","hardwareId","formattedHardwares","vehicleID","hVehicleResponse","formattedHVehicles","sortHelper","prevProps","prevState","v","isSaving","r","unassignedVehicle","notes","subOptions","generateAssemblyOption","react_default","label","MainPage","HardwareRegistrationPage_HardwareRegistrationPage","hardwareOptions","vehicleOptions","react_router","react_router_dom","hasCommunities","onChange","event","disabled","marginTop","saveClicked","HardwareRegistrationPage","vehicles","hardware","hardwareVehicle","_hardware","_vehicles","hardwareVehicles","_unassignedVehicleList","hardwareAssemblyStatuses","getChildren","assemblyStatusId","allAssemblyStatuses","parentAssemblyStatusID","hardwareAssemblyStatusID","description","selectedAssemblyStatus","hardwareAssemblyNotes","unassignedVehicleIndex","findIndex","splice","preventDefault","_this5","HardwareAssignment_HardwareAssignment","assemblyOptions","communityName","hardwareVehicleOptions","vehicleSelected","unassignedVehicleChnaged","assemblyStatusSelected","notesUpdated","SMIGrid_SMIGridSearch","props","_useState","useState","_useState2","slicedToArray","searchQuery","setSearchQuery","onSubmit","submitSearchQuery","useCallback","clearSearchQuery","SMIColumnMenu","classCallCheck","possibleConstructorReturn","getPrototypeOf","onToggleColumn","columns","column","idx","objectSpread","show","onReset","allColumns","col","onColumnsSubmit","onCloseMenu","onMenuItemClick","columnsExpanded","filterExpanded","onFilterExpandChange","oneVisibleColumn","es_main","iconClass","readOnly","checked","htmlFor","userSelect","SMIGridPresentation","identifier","useMemo","gridProps","assign","onDataStateChange","editable","onItemChange","editField","cellRender","renderers","rowRender","groupable","expandField","onExpandChange","addLabel","dataName","columnMenuEntry","showColumnMenu","copyProps","columnMenu","columnMenuProps","SMIColumnMenu_SMIColumnMenu","onKeyDown","main","onAdd","addSaveEvent","onSave","saving","onCancelChanges","allowExcelExport","onExcelExport","toolbarButtons","showSavedMessage","showErrorMessage","errorMessage","searchable","onSearch","dataState","onRowClick","skip","ref","gridRef","isLoading","LoadingPanel","dist_es_main","excelExportRef","SMIGridRenderers","enterEdit","exitEdit","itemChange","rowColor","editFieldName","gridState","columnsByField","bind","cellProps","disabledMessage","dataItem","tabIndex","classNames","tdElement","rowType","deleteRender","actionColumnRender","isNotApplicable","tooltip","preventEnterEditResult","preventEnterEdit","flaggedToEdit","isEditing","currentEditingField","currentEditingItem","CustomEditor","customEditor","DefaultEditor","editProps","preventExitEditMessage","td","targetElement","handleMouseOver","persist","handleMouseOut","clientX","left","clientY","top","editorChildren","kendo_react_tooltip_dist_es_main","el","anchorElement","openDelay","cloneElement","additionalProps","customTemplate","Fragment","classList","dirtyFields","add","errorFields","preventEnterEditMessage","trElement","rowData","trProps","keyCode","inEdit","backgroundColor","_ref","setValue","saveValue","onKeyPress","autoFocus","onBlur","SMIGrid","group","take","pageable","itemsPerPage","selectedItems","Set","pageNumber","deletedItems","dummyId","expandToggledFields","createRef","loadData","crudUrl","convertDateStringsToDates","pristineData","deepCopy","size","updateSelectedItems","onDataLoaded","firstSelectedItem","isSelectedItemChanged","updatedSelectedItems","idField","current","updatedItem","updateDataResult","values","next","setGridFilter","_filter","newDataState","flashSavedMessage","flashErrorMessage","errStr","message","ErrorMessage","saveData","validate","dirtyData","dirty","convertDatesToStrings","saveRequest","postUrl","dataObj","Promise","reject","resolve","deleteRequest","onDelete","delete","deleteUrl","all","setPageDirtyValue","onSaveComplete","cancelChanges","columnsState","addNew","defaults","getDefaultValues","getDummyId","newData","unshift","firstEditableField","getFirstEditableColumnField","onAddNew","selectChange","addNewDataItem","removeDataItem","index","expandChange","collapseGroups","searchQuerySubmitted","updatedData","oldValue","errorMessages","assertThisInitialized","navigateOnTab","editingItem","editableColumns","currentColumnIndex","export","exportAll","process","template","excelColumns","save","pageChange","floor","page","performSearchFilter","searchQueryLower","dataValue","updateDataItem","newDataItem","_data","selectMode","selectedField","has","isGroup","_expanded","onDataUpdate","allNewData","dataStateChange","isArray","onSelectChange","from","lastSelectedIndex","nativeEvent","shiftKey","getSelection","removeAllRanges","selection","empty","arrSelectedItems","_loop","ctrlKey","selected","select","onEnterEdit","editItemArr","preventExitEdit","forceUpdate","onExitEdit","aObject","bObject","isColumnShow","hidden","prevColumnState","getColumnsByField","getColumnListForColumnMenu","columnsChanged","onbeforeunload","returnValue","defaultValue","disableNavigationWarning","setChildPageDirty","validationPassed","validationRules","rule","aggregates","when","defaultProps","filterable","sortable","loadingPanel","gridContent","querySelector","createPortal","VehicleBubbleSvgWithoutBearing","VehicleBubbleSvg","vehicleRef","VehicleMarkerUnconnected","memo","dispatch","bindActionCreators","F_a1_work_11_s_Server_Presentation_DispatchPortal_DispatchPortal_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_1___default","react_leaflet__WEBPACK_IMPORTED_MODULE_3__","Lat","Lng","zIndexOffset","icon","bearing","iconUrl","zoomLevel","vehicleSvg","scale","actualSize","L","divIcon","html","iconAnchor","getVehicleIcon","Br","showVehiclePopup","vehiclePopUpContent","react_leaflet__WEBPACK_IMPORTED_MODULE_4__","nextProps","leafletElement","setLatLng","connect","mapReducer","PasswordContext","createContext","Provider","Consumer","ChangePasswordPresentation","context","showModal","oldPasswordError","oldPassword","handleInput","newPasswordError","newPassword","confirmPasswordError","confirmPassword","handleSave","alertImage","alt","passwordPolicy","ChangePassword","formModel","formError","getPasswordPolicy","res","policy","regex","invalidPasswordError","minLength","maxLength","sessionStorage","clear","onfirmPasswordError","showModel","defineProperty","getSelectedSchedule","getSelectedScheduleStartDateStr","getSelectedScheduleLabel","selectedScheduleIsInPast","selectedScheduleIsInFuture","selectedScheduleIsCurrentSchedule","_DateUtil__WEBPACK_IMPORTED_MODULE_1__","selectedScheduleJSON","schedule","startDate","getDateFromISO","toLocaleDateString","month","day","year","endDate","getTodayDate","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","SMIActionColumn","displayName","onMarkerMouseOver","openPopup","DrawableRoute","interStopPoints","polylines","pathPoints","clickHandler","stopIndex","posArr","polylineArr","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","point","lat","lng","_ret","startStop","endStop","Polyline","positions","stroke","return","getPolyLines","routeColor","onPathClick","stopIcons","s","stopSvg","seq","Marker","onMouseOver","Popup","stopName","stopCode","forwardRef","centerPosition","zoom","showArial","mapTiles","toggleAerial","showArialMapView","drawableRouteElements","markersFromGroups","markerGroups","reduce","m","addLayer","attr","es_Map","maxZoom","showVehicleInfoBox","openStreetAttribution","azureMapAttribution","getFullYear","MapComponentUnconnected","useRef","setShowArial","_useState3","_useState4","bingLayer","setBingLayer","_useState5","_useState6","mapAttribution","SetMapAttribution","SystemSettings","useContext","SystemSettingContext","mapCenterLatitude","mapCenterLongitude","mapCenterZoom","TileLayer","attribution","useMapTiles","mapTileUrl","useEffect","fitBounds","mapZoomPosition","flyTo","animate","mapActions","MapComponentPresentation","oncontextmenu","options","removeLayer","_layer","tileLayer","subscriptionKey","azureMapSubscriptionKey","tilesetId","language","view","callback","addTo","getZoom","setZoom","vehicleLogs","isConnected","simulatorState","LocationPoints","isPaused","isReset","SimulatorMode","isStart","Speed","OBUList","SelectedOBU","actionTypes","locationPoints","simulatorMode","speed","obuList","selectedObu","setLocationPoints","_locationPoints","setPause","setReset","setStart","setSimulatorMode","setSpeed","setObuList","setSelectedObu","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","types","user","comments","createStore","combineReducers","authReducer","commentReducer","toConsumableArray","comment","simulatorReducer","diagnosticReducer","applyMiddleware","thunk","DateTime","Color","Enum","CSV","YesNoBinary","XM36HourTime","AudioField","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","react__WEBPACK_IMPORTED_MODULE_1__","_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","formatDate","dataValueField","dataTextField","inheritanceCallback","isInherited","listData","searchedData","join","splitStr","shortFormatXM36hour","audioCallback","stopPropagation","playButton","audio","failsafeTimeout","triggerPlayAudio","_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","addDaysToDate","addYearsToDate","parseDateToFormattedShortString","dateRangesAreOverlapping","dateToImpreciseISOStr","getISODateWithNoTime","isImpreciseISOStr","getMinutesBetweenDates","dateToTimelessISO","dateToTimeOnlyISO","formatDateTimeAsSetting","formatDateTime","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__","days","years","setFullYear","time","timeFormat","stringTimeDate","format","stringDate","hoursPart","hoursNum","startDate1","endDate1","startDate2","endDate2","today","setHours","getMonth","date1","date2","getTime","hour","getHours","minute","getMinutes","second","getSeconds","dateStr","dateValue","csharpTime","safeBrowserformat","parseCSDateTime","kendo","tz","p","setUTCMinutes","getUTCMinutes","NaN","datetime","digitsEnd","colons","chr","charAt","digitPart","charPart","timeArr","hours","minutes","firstChar","prototype","moment","isValid","schDate","currentDate","alertDiv","updateOnlineStatus","navigator","onLine","getElementsByTagName","innerText","logOut","addEventListener","interceptors","request","use","config","Authorization","authToken","LoginPresentation","password","rememberUsername","handleInputChange","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","stringify","onLoginSuccess","onChangePassword","responseMessage","_errorMessage","onSmiLoginMessage","SmiPass","passToken","onForgotPasswordSubmit","onForgotPasswordCancel","onSmiLoginCancel","settings","parsed","loginTicket","ForgotPasswordPresentation_ForgotPasswordPresentation","LoginPresentation_LoginPresentation","lazy","HardwareAssignmentPage","MobileMainPage","isCommunity","canHardwareRegister","checkingPermission","changeViewportForMobile","userAgent","ww","screen","viewport_meta_tag","setAttribute","isCommunityPage","uri","cleanUri","replaceState","Mobile_SwitchCommunity","Mobile_HardwareRegistrationPage","communityCheck","RenderPage","ReduxIncidentListing_UploadIncidentAttachment","IsValidLink","IncidentId","IncidentType","isLoaded","files","isFileUploading","params","query","incidentId","isValidLink","incidentType","react","placeholder","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","ErrorBoundaryPresentation","fontSize","fontFamily","ErrorBoundary","errorInfo","scope","keys","setExtra","itemString","expiry","getWithExpiry","ttl","setWithExpiry","SafeRoute","ErrorBoundary_ErrorBoundary","Vehicle","ViewAvailability","ViewVehicleHistory","ViewVehicleHistoryExFull","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","SLSimulator","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","set","useForceUpdate","MainPage_SubmenuPresentation","HomepageMenuPresentation","flattenedMenu","selectedHomepage","onItemClick","HomepageMenu","homepage","setSelectedHomepage","flattenedMenuArr","getFlattenedMenu","menuItem","parentName","toUpperCase","newHomepage","ReportEngine","reportURL","overflow","zIndex","textalign","marginLeft","fontWeight","NotificationMenu","messageCount","notificationCount","intervalObj","onLogOut","_intervalObj","setInterval","clearInterval","subModules","onOpenInbox","onOpenMyAlerts","onOpenOutbox","onOpenMessageInbox","onOpenSendMessage","MainPagePresentation","isCollapsed","setIsCollapsed","companyLogo","NotificationMenu_NotificationMenu","userFullName","fallback","ScheduleEdit","storedSchedule","scheduleEditList","selectedSchedule","itemRender","li","itemProps","startEndDates","itemChildren","setCurrentSchedule","currentScheduleItem","setScheduleOnDialog","handleChange","findActiveScheduleIndex","tempDate","toISOString","selectActiveSchedule","scheduleEditData","scheduleObj","scheduleID","externalID","recordCreated","date_sort_desc","scheduleItem","tzo","getTimezoneOffset","textField","dataItemKey","EmergencyPresentation","emergency","mapCenter","LocationIcon","markerGroup","alertText","animationName","MapComponent","drawableRoute","isBusy","onAcknowledge","onRespond","driver","block","lastStopMade","textDecoration","address","Emergencies","emergencyMessages","acknowledgmentsInProgress","acknowledged","emergencyPollingInterval","signalRConnection","loadEmergencyMessages","finally","onSendMessage","em","payloadRecipients","isClass","payload","priority","emergencyMark","replyTo","recipients","sendAcknowledge","alertLogId","vehicleAlertLogId","invoke","openSignalR","signalR","withUrl","build","keepAliveIntervalInMilliseconds","serverTimeoutInMilliseconds","on","start","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","expandIcons","expanded","LoadingMask","SendMessage_RecipientPresentation","recipient","onRemoveRecipient","hasChildrenCount","countChildren","childrenCount","viewBox","version","xmlns","cx","cy","fill","strokeWidth","allVehicles","CannedMessages","cannedMessages","setCannedMessages","popupShown","setPopupShown","buttonRef","kendo_react_popup_dist_es_main","anchor","CurrentRecipients","onClearRecipients","MessageComposition","onSend","setMessage","Priorities","Medium","setPriority","requireYesNo","setRequireYesNo","Low","High","SendMessage_SendMessage","preselectedRecipients","selectedRecipients","setSelectedRecipients","setIsLoading","recipientSelected","selectedRecipient","cannotReceiveMessages","currentSelectedRecipients","removeRecipient","recipientToRemove","csr","sendMessage","valid","alertMessage","cleanRecipients","DetailComponent","showSendMessage","replyCell","replyHandler","vehicleIds","dataRender","markUnread","markRead","ids","unreadMessage","isUnread","detailsData","defaultHeight","gridHeight","maxHeight","marginBottom","kendo_react_grid_dist_es_main","cell","GridDetailRow","MessageInbox_MessageInbox","systemSettings","SetRenderTime","interval","SetIntervalObj","lastReadTime","SetVehicles","SetExpanded","SetValue","_interval","lastUpdate","textSearch","searchString","$rows","each","hasMatch","cellText","messageDeleteIds","Id","onSendMessageClose","detail","GridDetails","unreadMessages","strTime","now","isoDate","MyAlerts","AnnouncementComposition","signText","setSignText","audioText1","setAudioText1","audioText2","setAudioText2","setLoading","announcementLanguage1","announcementLanguage2","subStr","voice1","voice2","MakeAnnouncement_MakeAnnouncement","makeAnnouncement","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"],"mappings":"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","file":"static/js/main.6a71ef6a.chunk.js","sourcesContent":["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

\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}","import React from 'react';\r\n\r\nexport default () => (\r\n
\r\n Loading...\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","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 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};\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;","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 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, { 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) {\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\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 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\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\r\n //useEffect(() => {\r\n // if (onRowClick && typeof onRowClick === 'function') {\r\n // onRowClick({ dataItem: dataItem }); \r\n // }\r\n //}, []);\r\n\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 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 });\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) => {\r\n let data = [];\r\n //if there is paging enable, export is exporting only current page data. So pass exportAll if you want export all data\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 const excelColumns = this.gridRef.current.columns.filter(c => c.field.indexOf('_') !== 0);\r\n this.excelExportRef.current.save(data, excelColumns);\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 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 }\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}","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, {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 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 this.setState({ errorMessage: err.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}","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;","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 './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 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\n\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 = 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 //let _layer = L.tileLayer.bing({\r\n // bingMapsKey: SystemSettings.bingMapKey,\r\n // imagerySet: 'AerialWithLabels'\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 setBingLayerStateWithCallback(_layer, () => _layer.addTo(mapRef.current.leafletElement)); \r\n }\r\n if (bingLayer) { \r\n bingLayer.addTo(mapRef.current.leafletElement);\r\n 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);","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","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+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+3kBQswAADC9JREFUeNrsWXlslNcR/+293stre9c32PgADMbGxuCYmJsk5QghSa8cTarQNmqUKFKk/lEpbRS1UqVWahslqtS0UYtyUFBTAnVCDhLMaeoQgy9ssL2+Db53faz33s4877f5WHzQqooUqZ81/r7vvXkzvzdv3sx8bxXhcBhfx0uJr+n1f+Bf9aXmfxs2bLgT3gNE+4k2EcVH2rqJzhIdJDp5h/qeJNoakZMlk1EdkRNYSEBtba24K3hzLgK8kOh1oopFQB0ienSB/oeJfkFUsABPC9HPiN5dDLh6ETAMmjnjklOtKLtrOZYXZECn10ChUEKnTkBTQzuq3quG1+N/hPiyiTbOA/rv/LCxsgzFJflQaKZgjo+DyzmNns5hNF3pQk/XUEGE75sLgV/M4jaiBqK0NSXZ2L3/Vp44vQlWSwqCwQCamuvx/tFaDN10zmX5KOgd31iL3XvvgUqlhnNiEDOeqVtkXqq5jk8/vCK93jOX+92JxX/HoPNXZtwGmi+9zhR95tXY8+AGvPOXU5Ll22Ss2yXQZRXLbxkfC5z7vV4/zp1q5teXFto38wHPi1gKO3athXvai66OQQwPOeGZ8cFmj0fBKi1y84zEEY6CX0+KI0p/LhcWbzVGQYcj/P29Y2i52oaRYRf0cVrYk63Izk3B3VtXo/FyF7tQZSQgvPGfuMqbRI+vLFwCg1GHtqs3sKJgGRJtRqjUIcxMK9DXM4Rp9zQq7i5G/upEMYj99V/nW3Gzfxw3+sdEW1pGIrbeW4Sl2cniva15DDXn62E0GGBPtcBi1SEYUMA15kHrVQfyV6XBmmDCZ7Mucy4Sfe7IVdQSc3vrAO5/YCeefvoA3B4XXJPDtLyTyM8ug8/nRXubA28dPIaeniRhKbYsG3Ry5ga27VmJ8vJy/PrlQ0iyWcRKna9uRn/POH7440eRuSQd466bgjRqLZISMmDQx+NE1Sn889hJxNEqzMz42Oo753KZuRIQx9msxCQrXnz5eezZt0MscCDoFxtRQX98BYNB2JIT8L2n9iLgD+PMp43s38JHlcowMjMz0d/fB6UqhPHRKdGvUivxzAsPIy09CUqKSlq1TmxUluv3e6FQKoQ+1ms0meR47ihzfp//bdteQcpTZ0GGArScPnE3Gi0IhUICeCAQoOcgikpzMDExRf7dJMCbLSbY7XY0NDYQmDA+r7lGE5pBeWU+8fuEEcTSanRQq7RChj/gRSg4m3tY75at5RKeHZEItyBw3pSVCoUC5RUl0cYgKWJlYVKQEJ8iA+4nhUw+LMtPQmO9A1OTM0hJsUOr1aK/jyxOC9TbPYiCtaliouxiwaAP4XBIgGY34Q3LwKUJ8cX61RqV2CZEDywGXDDk5C4Fu4qIAuFZN2EKkTK91iIsxMvLQBh8wE99tBr2ND35pg4drS786dUqOG8a4fOokZZliLjD7CSZQuGgcBONRi+SWUC0e6NAWH9WVqb0un+xcCgY1pcXR2KtERazDUt1q2EyfDmRqelxjIzewOjYRQLji1idXCRegc7WcTx2YDtNJij4j7x5BpYEFVnaJ4AHArRSZHFbQibMJhtW5W8UwPmacjuJzw3XxDA83mmBo6OdSxkRLNhdRuYCzh2VSqUS69avQZI1HfGUGS/VncaVxgsYuCkECCvlZhegrHQrKsv3orbuFG4O9hNQWn5FUAD86PgljAy5yNcN5NtecgTdrLWJkpOyULRiM/oGevDRJ0fR0dUiVoOv9NQsrF2zkWRvIfCDAseRQ1XsmlzUbZGXAepYN1lbUojluUXo7ulAVdNhkSAuXBlCtUMnmAwUx3cXtpFgF7KW5GJdyWYkJqTg7SOvCdfhzdjXM2sYD4VQtSYsAPOENpbdD1tiJqrPfoDu3g40NA/jgyYF3IFZ2Vtz+jE9dQbX2utRXFghcBSvXYXLdU2SN7w7VwISSee1P/wWo+O9aL1ej4t1Qzit2oelVgsytGFoaKM5gwoM+CjzdTbgRyvbkWhXY9umBzA43I+3Dr+K7pYQWUhxnmTdT/QMhcZf5hVp8Ni3n6NYnYpTZ49hbDiA11vzkLGsCOlawKqiyVH87/cp0OOcwJbgcdxVmoyCFSVItGbg2WdekErobCkByTfnpt2776Op+OHoasXBE4Oosz6B+9LNKDGFkUwKEjSAhkYEw0qoM0vwhnMfWq5N4vzFD7F65TokWDjiiDjfTjROdIHfzaYUrMhbK/haiZ/H8XiWo1XOymX5rIf1sd63PxxER+dVcjMvHnqYbSBq97zYqMINWWUbitHT147mlmGMrXgKm+MpiqgIiGKW6t1qfD6txWhITS6hglJrwPvBfRTyjKSkGetLdkD2gfFl8VS0TfQzXxXz0zgez3JqSR7LlXSwPtY7tPwpNDYPobevA+vKiiVRW2KBV6alpVBqjheJ4tA1GwoMYahZGGbpslsDh5/MQgrlpDAn42i1g9xrCKmpGXNWbKmp6aL/PeJj/lgZLJflS7pYL+s/3GaH1+eByRyH9Iw0yOsWCfiyrGWZmJxyYno6AM3SCmRoQpBgjwZV6PbryCCqOalxJpcSiY4KMm00/kdDlS2R2jWiv8GTP68Mls96JJ2sX5N9NyYnfZggXNnZwii5tyUgoylOJBjn+ATUFpvwPQ3VFkyjqjgkmrSUDWlJKVzGkpI2ECv3+mZgpY0su8Yt8SZhNe5XxqfNOZ7lsnzWI+kU+k2JmHBNiSwbZ9QLz7gtHHo8M6KA0uv1CEHFARsG3ey84gwmZEaSxOCkH0OT/lt9gRKKyUjL6nVTRefhls5IzxV+9/u430x8w8K35VeyWYMUs0Y8a8K0aiRLlMheKisIB+NhXIyPm2Mt7hweGqFY66E0S5t3oh8jYS3idCpY4tTIsBuQbdML2pBtpjaNACCRZqwVCdYkqs8nMD7uim5OTv/OcdcEt3M/88nHsRyWJ8lmPayP9bJ+xsF4GBfjY0PEAj/b3zuIoZEbWJ63AtaBT9HkM8BN4cpM/pmTqMUyEsyUY9ejeInpls21f41aFF3Xr3dQ3e11RY4byPpepjPczv3MJx/HclheVDbpYX3ukFLoZxyMh3ExPkmuHPil6WnPubZrnbgx2IMXHynExPQMTjsNmPIrsMSgoAJdFyWjTh3dVMrLf8XTT34Lff0d6O4ckITLz0aquZ37mY/5pbEsRy6X9bC+0y6D0M84GE9XZy8FDeGCx+aqDqvr69pQ31iD+3buwRPG4+ilEvXggAFnu9xIMJDLWDXwUe10ocsjNlV43IE/PnsXpf9RfP5FLRqvOFjOKzHR8BVqb+F+5mN+HsfjWQ7LY7ksn/WwPtbL+hkH47l0kY9bcIINPN835wdFpUt2bdpcgYf2HcDfDr+FXx3vh3c1fbhrjchJ0sIxSsXUmAM5ox/jN8/vpUjkwclTR3HmZAsmJzyvkYzn5joFM1v0f968swA7tz1IiUiPn7xSBUfSvVAk5iDfrkXbMG1K3zR0zYfw030Z+O53Hsc/jr+Bs2dq0FDXK4pWBj7fSRYXwEcKitIqVq/JQcWGe1G4soyKos/g6OyGa2oG8RQ2KzdWYE1hKc7VnMAnp97DFxe66QPCGz1PqauriyIuLS2VHt8xmXWPrKtYinu2P4jKil1obKrDuQs1Ubk5y7KwddN2NLVeQk3tx2hudKCl4QaP/YH0tb/QERyDfz3JbtiVmR2PJUvTUFJ8N+y2dBjiTHDPTKGtvQEt1y9joG8cbVdHKNwFBWg54NgrMoFXNVrVs/mrbEjPTEDB8hLk5xVF5Q6PDOBy/Xn6chpCj2MMo8PuW0DfBlytVsdaB5Fzvh0mi7aCjxAM5INqqrAC/hAmnF44x7wUpoJ8fPB7AvzunZ6ykg7+an9Jq1VVWmlDsmxJrtsdELKnJkQsryJ6WfJryShcOt8GfAFF0slqNvH3EDVQcX+uoaFBMjFnECmzKOYQI/3sEZAiTlFRUSl9tGyi71v+xpVOf52RqHSMgLbPhWch4MqIcmUEjDKSYVUxbco53hWyuyICmCkkuzMFZc/y92BkYrE84VjgcsQKmeJYmvfQdJ53hew5LJsEFliVuUK0JCckM8L/5BeJ8Dzv4RhF4UXG/Xe/SMQoC8kmJS27SvasiXnnuzbGPTDPndfZH+M6wUhbWOYecrea/3z8/z9efYXXvwUYAJV9k14MU97eAAAAAElFTkSuQmCC\"","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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\"","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 } 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 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) {\r\n return function (dataItem, field) {\r\n return shortFormatXM36hour(dataItem[field], shortTimeFormat);\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 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","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\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\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 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) {\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 if (date.getDate() > 1) {\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 < 3) digitPart = '00' + digitPart;\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}","import axios from 'axios';\r\n\r\nlet alertDiv;\r\nfunction updateOnlineStatus(event) {\r\n if (!navigator.onLine && !alertDiv) {\r\n alertDiv = document.createElement('div');\r\n alertDiv.id = 'alertDiv';\r\n alertDiv.style = \"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\";\r\n alertDiv.innerText = \"No internet connection is available.\";\r\n document.getElementsByTagName('body')[0].appendChild(alertDiv);\r\n }\r\n else if (alertDiv && navigator.onLine) {\r\n document.getElementsByTagName('body')[0].removeChild(alertDiv);\r\n alertDiv = null;\r\n }\r\n}\r\n\r\nwindow.addEventListener('load', updateOnlineStatus);\r\nwindow.addEventListener('online', updateOnlineStatus);\r\nwindow.addEventListener('offline', updateOnlineStatus);\r\nwindow.addEventListener('beforeunload', (e) => {\r\n if (!navigator.onLine) {\r\n window.stop();\r\n e.preventDefault();\r\n console.log('no connection and if you reload you will loose contents');\r\n }\r\n});\r\n\r\naxios.interceptors.request.use((config) => {\r\n var connection = navigator.onLine;\r\n if (!connection) { return Promise.reject('Request can not be processed because no internet connection is available') };\r\n var rawUser = localStorage.getItem('user');\r\n if (rawUser) {\r\n var user = JSON.parse(localStorage.getItem('user'));\r\n config.headers.Authorization = `Bearer ${user.authToken}`;\r\n }\r\n //config.url += \"/\";\r\n return config;\r\n}, (error) => {\r\n console.log(error);\r\n return Promise.reject(error);\r\n});\r\n\r\naxios.interceptors.response.use((response) => {\r\n if (response.status === 401)\r\n logOut();\r\n return response;\r\n}, (error) => {\r\n if (error.response && error.response.status === 401)\r\n logOut();\r\n if (error.response && error.response.data && error.response.data.ErrorMessage)\r\n console.log(error.response.data.ErrorMessage);\r\n try {\r\n if (error.response && error.response.data && !error.response.data.ErrorMessage && error.response.data.toLowerCase().search('accessdenied') !== -1) {\r\n logOut();\r\n }\r\n else\r\n console.log(error.message);\r\n } catch (e) {\r\n }\r\n return Promise.reject(error);\r\n});\r\n\r\nfunction logOut() {\r\n localStorage.clear();\r\n window.location = \"/\";\r\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) => this.setState({ isSmiLogin: false }));\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 console.log('Error');\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 Mon Nov 15 2021 13:28:03 GMT-0500 (Eastern Standard 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 SLSimulator = React.lazy(() => import('../../pages/System/Diagnostics/SLSimulator'));\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 \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\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 && \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}","\r\nimport React from 'react';\r\nimport './AlertInbox.scss';\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 const SystemSettingContext = React.createContext({});\r\n\r\n//export const Provider = SystemSettingContext.Provider;\r\n//export const Consumer = SystemSettingContext.Consumer;"],"sourceRoot":""}