{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/modules/fvu.js","webpack:///./src/components/SearchInput.vue?8591","webpack:///src/components/SearchInput.vue","webpack:///./src/components/SearchInput.vue?59fd","webpack:///./src/components/SearchInput.vue","webpack:///./src/common/feature-lib.js","webpack:///./src/mixins/EnvAware.js","webpack:///./src/views/Home.vue?562f","webpack:///./src/views/FloodDSS/Index.vue?e9ce","webpack:///./src/mixins/Closable.js","webpack:///./src/store/modules/tsc.js","webpack:///./src/components/Tooltip.vue?f39b","webpack:///src/components/Tooltip.vue","webpack:///./src/components/Tooltip.vue?556a","webpack:///./src/components/Tooltip.vue","webpack:///./src/helpers/DSRCmessage.js","webpack:///./src/static.js","webpack:///./src/api/service.js","webpack:///./src/views/FloodDSS/FloodDssSidebar.vue?bab1","webpack:///./src/components/InformationTooltip.vue?08b8","webpack:///src/components/InformationTooltip.vue","webpack:///./src/components/InformationTooltip.vue?91d4","webpack:///./src/components/InformationTooltip.vue","webpack:///./src/components/TfmMap.vue?0506","webpack:///src/components/TfmMap.vue","webpack:///./src/components/TfmMap.vue?585d","webpack:///./src/components/TfmMap.vue","webpack:///./src/mixins/ViewportAware.js","webpack:///./src/components/MainHamburgerMenu.vue?d2e3","webpack:///./src/components/map-markers/Default.vue","webpack:///src/components/map-markers/Default.vue","webpack:///./src/components/map-markers/Default.vue?4631","webpack:///./src/components/Window.vue?baf6","webpack:///./src/models/SpatVerificationData.js","webpack:///./src/api/endpoints.js","webpack:///./src/api/index.js","webpack:///./src/environment.js","webpack:///./src/helpers/MHIGeometry.js","webpack:///./src/store/modules/fvu_monitor.js","webpack:///./src/store/modules/device-scr.js","webpack:///./src/store/modules/index.js","webpack:///./src/store/getters.js","webpack:///./src/store/actions.js","webpack:///./src/store/mutations.js","webpack:///./src/store/index.js","webpack:///./src/polyfills/cssvars.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/BigMap.vue?fb73","webpack:///./src/components/Window.vue?d96e","webpack:///src/components/Window.vue","webpack:///./src/components/Window.vue?6020","webpack:///./src/components/Window.vue","webpack:///./src/views/BaseView.vue?411d","webpack:///src/views/BaseView.vue","webpack:///./src/views/BaseView.vue?51ec","webpack:///./src/views/BaseView.vue","webpack:///./src/common/permissions-lib.js","webpack:///./src/store/action-types.js","webpack:///./src/App.vue?785e","webpack:///./src/components/SiteHeader.vue?e021","webpack:///./src/components/MainHamburgerMenu.vue?516e","webpack:///src/components/MainHamburgerMenu.vue","webpack:///./src/components/MainHamburgerMenu.vue?d0c8","webpack:///./src/components/MainHamburgerMenu.vue","webpack:///src/components/SiteHeader.vue","webpack:///./src/components/SiteHeader.vue?02a6","webpack:///./src/components/SiteHeader.vue","webpack:///./src/components/Breadcrumbs.vue?5b9e","webpack:///src/components/Breadcrumbs.vue","webpack:///./src/components/Breadcrumbs.vue?6bc5","webpack:///./src/components/Breadcrumbs.vue","webpack:///./src/components/SessionManager.vue?7100","webpack:///src/components/SessionManager.vue","webpack:///./src/components/SessionManager.vue?d7e5","webpack:///./src/components/SessionManager.vue","webpack:///./src/models/MqttTopic.js","webpack:///./src/components/mqtt-client.js","webpack:///./src/components/mqtt-manager.js","webpack:///src/App.vue","webpack:///./src/App.vue?5b92","webpack:///./src/App.vue","webpack:///./src/views/Home.vue?2207","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?231f","webpack:///./src/views/Home.vue","webpack:///./src/router/Help/index.js","webpack:///./src/components/PageViewer.vue?6709","webpack:///src/components/PageViewer.vue","webpack:///./src/components/PageViewer.vue?05ac","webpack:///./src/components/PageViewer.vue","webpack:///./src/router/MOT/index.js","webpack:///./src/router/TFlowRestriction/index.js","webpack:///./src/router/Dashboard/index.js","webpack:///./src/views/DeviceManager/DMS/DmsRouteView.vue?d968","webpack:///src/views/DeviceManager/DMS/DmsRouteView.vue","webpack:///./src/views/DeviceManager/DMS/DmsRouteView.vue?5cdd","webpack:///./src/views/DeviceManager/DMS/DmsRouteView.vue","webpack:///./src/router/DeviceManager/DMS/index.js","webpack:///./src/router/DeviceManager/RSU/DSRC/index.js","webpack:///./src/router/DeviceManager/RSU/index.js","webpack:///./src/router/DeviceManager/ESS/index.js","webpack:///./src/router/DeviceManager/Verification/DeviceReport/index.js","webpack:///./src/router/DeviceManager/Verification/index.js","webpack:///./src/router/DeviceManager/index.js","webpack:///./src/router/ChangeRequests/index.js","webpack:///./src/router/VUHistory/index.js","webpack:///./src/router/VUFeed/index.js","webpack:///./src/router/WorkerPresence/index.js","webpack:///./src/views/FloodDSS/Index.vue?50f4","webpack:///./src/views/FloodDSS/FloodDssSidebar.vue?d8ee","webpack:///src/views/FloodDSS/FloodDssSidebar.vue","webpack:///./src/views/FloodDSS/FloodDssSidebar.vue?a0d2","webpack:///./src/views/FloodDSS/FloodDssSidebar.vue","webpack:///src/views/FloodDSS/Index.vue","webpack:///./src/views/FloodDSS/Index.vue?67b7","webpack:///./src/views/FloodDSS/Index.vue","webpack:///./src/router/FloodDss/index.js","webpack:///./src/views/FleetTracker/Index.vue?7154","webpack:///./src/views/FleetTracker/service.js","webpack:///src/views/FleetTracker/Index.vue","webpack:///./src/views/FleetTracker/Index.vue?1888","webpack:///./src/views/FleetTracker/Index.vue?cdd6","webpack:///./src/router/FleetTracker/index.js","webpack:///./src/router/index.js","webpack:///./src/registerServiceWorker.js","webpack:///./src/plugins/userHasFeature.js","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.js","webpack:///./src/components/Toasts.vue?b104","webpack:///src/components/Toasts.vue","webpack:///./src/components/Toasts.vue?a4d1","webpack:///./src/components/Toasts.vue","webpack:///./src/views/BreadcrumbView.vue?3271","webpack:///src/views/BreadcrumbView.vue","webpack:///./src/views/BreadcrumbView.vue?2e40","webpack:///./src/views/BreadcrumbView.vue","webpack:///./src/views/FleetTracker/Index.vue?d0cb","webpack:///./src/components/Sidebar.vue?f56c","webpack:///src/components/Sidebar.vue","webpack:///./src/components/Sidebar.vue?37e7","webpack:///./src/components/Sidebar.vue","webpack:///./src/views/DeviceManager/DeviceTypeFilter.vue?88b8","webpack:///./src/components/Breadcrumbs.vue?19f1","webpack:///./src/components/map-markers/mixin.js","webpack:///./src/components/Modal.vue?e37f","webpack:///src/components/Modal.vue","webpack:///./src/components/Modal.vue?b749","webpack:///./src/components/Modal.vue","webpack:///./src/common/filters.js","webpack:///./src/components/MapPanControl.vue?f203","webpack:///./src/store/modules/ess.js","webpack:///./src/components/ToggleSwitch.vue?624e","webpack:///src/components/ToggleSwitch.vue","webpack:///./src/components/ToggleSwitch.vue?c852","webpack:///./src/components/ToggleSwitch.vue","webpack:///./src/event-bus.js","webpack:///./src/store/modules/vu_approach_location.js","webpack:///./src/views/BreadcrumbView.vue?2804","webpack:///./src/views/MapView.vue?c5b7","webpack:///src/views/MapView.vue","webpack:///./src/views/MapView.vue?d22f","webpack:///./src/views/MapView.vue","webpack:///./src/store/modules/total_station.js","webpack:///./src/components/BigMap.vue","webpack:///src/components/BigMap.vue","webpack:///./src/components/BigMap.vue?3948","webpack:///./src/components/SearchInput.vue?3c56","webpack:///./src/components/Page.vue?d3d0","webpack:///src/components/Page.vue","webpack:///./src/components/Page.vue?f007","webpack:///./src/components/Page.vue","webpack:///./src/components/SiteHeader.vue?0619","webpack:///./src/store/mutation-types.js","webpack:///./src/components/ToggleSwitch.vue?7b34","webpack:///./src/components/Page.vue?0bbc","webpack:///./src/components/WindowManager.vue?316c","webpack:///src/components/WindowManager.vue","webpack:///./src/components/WindowManager.vue?a45d","webpack:///./src/components/WindowManager.vue","webpack:///./src/components/InformationTooltip.vue?eced","webpack:///./src/store/modules/spat-verification.js","webpack:///./src/map-icons/marker-icon-red.png","webpack:///./src/store/modules/device-manager.js","webpack:///./src/store/modules/store_module.js","webpack:///./src/store/modules/rsu.js","webpack:///./src/views/DeviceManager/DeviceTypeFilter.vue?26cc","webpack:///src/views/DeviceManager/DeviceTypeFilter.vue","webpack:///./src/views/DeviceManager/DeviceTypeFilter.vue?5146","webpack:///./src/views/DeviceManager/DeviceTypeFilter.vue","webpack:///./src/components/Tooltip.vue?26b5","webpack:///./src/polyfills/CustomEvent.js","webpack:///./src/map-icons/marker-icon-blue.png","webpack:///./src/store/modules/tim.js","webpack:///./src/models/Maneuver.js","webpack:///./src/models/Lane.js","webpack:///./src/store/modules/intersection.js","webpack:///./src/device-types.js","webpack:///./src/components/TfmMap.vue?847f","webpack:///./src/components/Toasts.vue?84a3","webpack:///./src/components/InputSelect.vue?a3f0","webpack:///src/components/InputSelect.vue","webpack:///./src/components/InputSelect.vue?26c6","webpack:///./src/components/InputSelect.vue","webpack:///./src/store/modules/mot.js","webpack:///./src/components/WindowManager.vue?f82c","webpack:///./src/components/Sidebar.vue?aab1","webpack:///./src/components/Modal.vue?a2a7","webpack:///./src/common/device-statuslib.js","webpack:///./src/components/MapPanControl.vue?581a","webpack:///src/components/MapPanControl.vue","webpack:///./src/components/MapPanControl.vue?fd38","webpack:///./src/components/MapPanControl.vue?3a42"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","MODULE_NAME","MUTATION_TYPES","ADD_FVU","CLEAR_FVUS","CLEAR_MESSAGE_QUEUE","DELETE_FVU","QUEUE_MESSAGE","UPDATE_POSITION","ACTION_TYPES","INIT_FVUS","INGEST_MESSAGES","getFvuId","fvu","fvuId","device","serial","filter","k","map","trim","join","namespaced","state","fvus","messageQueues","mutations","payload","_","isEmpty","putFVU","Vue","set","Array","isArray","delete","concat","rejection","forceUpdate","isNumber","timestamp","Date","getTime","warn","gpsData","speed","FvuMonitorStore","MODULE_CONFIG","MIN_NON_STATIONARY_SPEED","debug","actions","context","API","getWithParamsJson","ENDPOINTS","GET_VUNITS_WITH_LATEST_LOCATION","catch","each","row","commit","fvuMessageQueue","latestMessage","reduceRight","ret","getters","allFvus","fvuPosition","latitude","longitude","fvuHeading","heading","byIdentifier","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","tooltip","placeholder","domProps","on","$event","$emit","directives","rawName","expression","staticRenderFns","component","Features","FEATURE_TEST","FEATURE_TOTALSTATION","FEATURE_RSU_NEAR_NEIGHBOR","DASHBOARD","TIM_INDEX","LEGACY_TFR_ENTRY","WORKER_PRESENCE","RSU_NTCIP1218_CONFIG","FLOOD_DSS","FLEET_MANAGEMENT","EnvAware","extend","methods","envMethods","Closable","Component","props","closeOnEscapeKeyDown","Boolean","default","keydown","addEventListener","removeEventListener","ev","keyCode","close","ADD_TSC","SET_MANAGE_INFO","CLEAR_TSCS","UPDATE_TSC_DATA","FETCH_TSC_METADATA","FETCH_TSC_MANAGE_INFO","FETCH_ALL_DEVICES","FETCH_TSCS","tscs","devices","manageInfo","pushDevice","assign","deviceId","controllerid","deviceName","description","$deviceTypeId","id","index","TFMService","getTSCManageInfo","indexByIdentifier","now","dispatch","getJson","GET_TSC_BY_USER","json","retCode","retMsg","allDevices","devicePosition","identifier","manageInfoByID","statusMetadata","visible","_t","_v","_s","text","DSRCmessage","messageTypes","slug","display","shortDisplay","expectedFrequency","testable","standard","getDSRCMessageType","getExpectedFrequency","getDSRCMessageExpectedFrequency","getWeight","getDSRCMessageWeight","inP","isObject","typeData","srcKey","msgType","Math","max","staticUrl","suffix","prefix","isLocal","fetchJson","GET_TOTAL_STATIONS_DEVICES","rawDevices","GET_TOTAL_STATIONS","rawData","totalStations","chain","ts","totalStationId","totalStationName","locationDesc","locationDescription","deviceCount","numFunctional","deviceFunctionalCount","isAllFunctional","calculatedTSStatus","totalStationSCRStatus","totalStationsStatus","totalStationStatus","totalStationSCRId","totalStationOperatorId","operatorId","totalStationOwnerId","ownerId","keyBy","deviceTypeId","isSCRDraft","deviceStatus","isDeployed","isInMaintenance","projectId","ProjectId","size","numDysfunctional","GET_IP_ADDRESS_BY_DEVICE_ID","GET_CLIENT_BY_USER_LIST","GET_DEVICE_TYPES","rawDeviceTypes","dt","iconURL","GET_RSU_MANAGE_INFO","GET_TOTALSTATION_MANAGE_INFO","GET_ESS_MANAGE_INFO","GET_TSC_MANAGE_INFO","actionId","jobKey","srmId","srmType","COMMAND_PROXY_SCHEDULE","timId","labId","testIP","extInfo","COMMAND_PROXY_SCHEDULE_TEST","msgInfo","COMMAND_PROXY_LITERAL_ACTION","RSU_CONFIG_1218_LITERAL_ACTION","tsStatusId","route","GET_STATUS_TS","isNil","deviceStatusId","GET_STATUS_RSU","GET_STATUS_TSC","GET_STATUS_ESS","agency","UNVERIFIED_HEADINGS","dynamicMessageSignId","headingSlice","headingVerified","postJson","response","GET_FLOOD_LIKELIHOOD","topLeftLat","topLeftLong","bottomRightLat","bottomRightLong","GET_WEATHERSTATIONS_BY_AREA","GET_STREAMGAGES_BY_AREA","class","ref","mapCenter","mapZoom","options","updateCenter","updateZoom","onContextMenu","onBaseLayerChange","panControlNeedsBuffer","handlePan","_l","tileProvider","refInFor","url","mergeOptions","attribution","ViewportAware","viewportData","scrollOffsets","x","y","viewportSize","w","h","onScroll","onResize","debouncedOnScroll","debounce","pageXOffset","pageYOffset","innerWidth","innerHeight","SpatVerificationData","args","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","tenthsSeconds","dateTimeReceived","secondsPastHour","minuteOfHour","minuteOfHourAbs","floor","secondOfHour","secondOfHourAbs","millisOfHour","dateTimeChange","dateTimeReceivedSecondsPastHour","getMinutes","getSeconds","setMinutes","setHours","getHours","setSeconds","setMilliseconds","dateToTimecode","movementState","signalStateColors","red","indexOf","green","yellow","timeReceived","newDateTimeReceived","substr","minEndTime","lights","toString","minTimeToChange","timeOfChange","_dateTimeReceived","frameNumber","mqttMessage","JSON","parse","phaseList","newData","Timestamp","ipAddress","originalData","phase","PhaseNum","VehMinTimeToChange","PhaseStatusLightStr","movementStates","signalGroupId","movementMinEndTime","convertTenthsSecondsPastHour","movementPhaseState","getSignalColorFromMovementState","dateTime","hours","minutes","seconds","millis","getMilliseconds","GET_ESS_REPORT","GET_LATEST_ESS_READINGS","MQTT_PUBLISH","VALIDATE_TIM","UPDATE_DEPLOYMENT_INFO","UPDATE_DEVICECHECK_INFO","UPDATE_SUPPORT_CONTACT_INFO","GET_DEVICES_STATUSES","GET_TOTALSTATION_HISTORY","GET_DEVICE_HISTORY","GET_DEVICE_NEAR_NEIGHBOR_INFO","GET_ESS_OPERATIONAL_DATA","GET_RSU_DEVICES","GET_ESS_DEVICES","GET_RSU_BY_USER","GET_ESS_BY_USER","GET_RSU_DSRC_BY_USER","GET_RSU_RADIO_NEIGHBORS_BY_USER","GET_MESSAGES_BROADCAST_BY_DEVICE","GET_RSU_REGION_AND_INTERSECTION","GET_ACTIVE_TIMS_BY_DEVICE_ID","GET_CREDENTIAL_TYPE_LIST","SELECT_LIKELY_INTERSECTION_CANDIDATES_BY_DEVICE_ID","SELECT_INTERSECTION_BY_INTERSECTION_ID","SELECT_VU_APPROACH_LOCATION_BY_VU_APPROACH_LOCATION_ID","GET_TIM_CONTENT_TYPE_LIST","GET_TIM_FRAME_TYPE_LIST","GET_TIM_AREA_TYPE_LIST","GET_ITIS_CODE_LIST","GET_ROAD_SURFACE_DESCRIPTIONS","GET_ALL_TIMS_AND_METADATA_BY_DEVICE_ID","GET_TIM_WITH_METADATA","GET_RWM_LIST_BY_DEVICE_ID","GET_RWM_BY_ID","INSERT_RWM","UPDATE_RWM","DELETE_RWM","VALIDATE_RWM","DELETE_RSU_TIM","DELETE_TEST_TIMS","POST_TIM_WITH_METADATA","UPDATE_TIM_WITH_METADATA","GET_VALIDATED_TIMS_BY_DEVICE_ID","GET_MAP_PAYLOAD_BY_DEVICE_ID","INSERT_PROFILE_ATTRIBUTE","GET_PROFILE_ATTRIBUTE","CREATE_NEW_USER_REQUEST","GENERATE_PASSWORD_RESET_TOKEN_EMAIL","RESET_PASSWORD","CHECK_PASSWORD_COMPROMISED","CHECK_PASSWORD_RESET_TOKEN_EXPIRATION","CONTACT_US_QUERY","GET_LANES_BY_INTERSECTION_ID","GET_LANES_BY_RSU_ID","GET_LANE_TYPE_ATTRIBUTE_LIST","GET_LANE_SHARING_LIST","UPDATE_LANE_IS_ENABLED","UPDATE_LANE_MANEUVERS","UPDATE_LANE_CONNECT_TOS","UPDATE_TOGGLED_LANE_NODES","UPDATE_LANE_TYPE","UPDATE_LANE_SHARINGS","REDUCE_LANE_NODES","ENABLE_ALL_LANE_NODES_BY_INTERSECTION_ID","GET_INTERSECTION_SUMMARY_LIST_BY_INTERSECTION_ID","UPDATE_RSU_INTERSECTION","UPDATE_INTERSECTION_MAP_INTERSECTION_ID","GET_MAP_MESSAGE_BY_INTERSECTION_ID","GET_MAP_MANEUVER_LIST","GET_MAP_LANE_TYPE_LIST","GENERATE_MAP_PAYLOAD","GET_MAP_DATA_VALIDATION","UPDATE_LANE_NODE_OFFSETS","GET_MODEL_LIST","GET_LOCATION_TYPE_LIST","GET_IP_ADDRESS_TYPE_LIST","GET_MAC_ADDRESS_TYPE_LIST","GET_AUTH_TYPE_LIST","GET_PRIVILEGE_TYPE_LIST","GET_DEVICE_TENANT_LIST","GET_TEST_LABS","GET_VUS_NEAREST_LAB","GET_PORT_TYPES","GET_TENANT_LIST","GET_APP_TYPE_LIST","GET_MOVEMENTS_BY_INTERSECTION_ID","GET_RSUS_NEAR_VUNIT_BY_USER","GET_VUAPPROACHES_BY_INTERSECTION_ID","GET_VUAPPROACHES_BY_RSU_ID","GET_VUAPPROACHES_BY_VU_APPROACH_LOCATION_ID","GET_REPLAY_DATA_BY_TESTSETNUM","GET_REPLAY_HEADERS_BY_TESTSETNUM","GET_REPLAY_PPDATA_BY_TESTSETNUM","GET_APPROACH_RUN_TEST_RESULTS","GET_APPROACH_TEST_RESULTS","GET_APPROACH_RUN_DEFAULT_TEST_RESULTS","GET_MESSAGE_COUNTS_BY_APPROACH_DISTANCE","GENERATE_VU_FINAL_TEST","GET_SPAT_TRANSITIONS_FROM_TEST","REGISTER_DEVICE_SELECTION","RECENT_APPROACH_RUNS_BY_VUNIT","GET_RSU_LIST_WITH_COMPLETE_TEST","GET_TEST_LIST_BY_RSU","APPROACH_RUNS_BY_TESTSETNUM","GET_ROAD_SEGS_FOR_APPROACH_CREATION","GET_TEST_CONFIG_BY_TESTSETNUM","POST_RSU_SCR","UPDATE_RSU_SCR","CREATE_TOTAL_STATION_SCR","MODIFY_TOTAL_STATION_SCR","MODIFY_RSU_SCR","MODIFY_ESS_SCR","MODIFY_TSC_SCR","UPDATE_TOTAL_STATION_SCR","GET_PENDING_SCRS_BY_USER","GET_RSU_SCR_BY_DEVICE_SCR_ID","GET_TOTALSTATION_SCR_BY_SCR_ID","APPROVE_DEVICE_SCR","APPROVE_TOTALSTATION_SCR","APPROVE_TOTALSTATION_MODIFIED_SCR","REJECT_TOTALSTATION_MODIFIED_SCR","APPROVE_DEVICE_MODIFIED_SCR","REJECT_DEVICE_MODIFIED_SCR","REJECT_DEVICE_SCR","REJECT_TOTALSTATION_SCR","DELETE_TOTALSTATION_SCR","DELETE_DEVICE_SCR","POST_TSC_SCR","UPDATE_TSC_SCR","GET_TSC_SCR_BY_DEVICE_SCR_ID","GET_TOTAL_STATION_BY_DEFINED_AREA","GET_APPROACHES_BY_DEVICE_SCR_ID","GET_STATION_TYPES_LIST","GET_ESS_EXTERNALFLAG_LIST","GET_STATION_CATEGORY_LIST","GET_REGION_DISTRICT_LIST","GET_ESS_SENSOR_LIST","GET_ESS_SCR_BY_DEVICE_SCR_ID","UPDATE_ESS_SCR","POST_ESS_SCR","GET_HISTORICAL_TESTS","GET_NETWORKS_BY_SCR","SAVE_LAB_TEST_RESULTS","CHECK_IP_PORT_VALID","GET_PENDING_USER_REQUESTS","GET_FACILITY_LIST","GET_FUNCTIONAL_AREA_LIST","GET_JOB_ROLE_LIST","REQUEST_USER","APPROVE_USER_REQUEST","DECLINE_USER_REQUEST","GET_JOB_ROLE_LIST_ALLOWED","UPDATE_USER_REQUEST","GET_PERSON_LIST","GET_USER_INFO","GET_USER_EMAILINFO","CREATE_NEW_TFLOW_PROJECT","UPDATE_TFLOW_PROJECT","EDIT_MOT_REQUEST","CREATE_NEW_MOT_REQUEST","GET_NAVIGATION_BYCLIENT","GET_SECTION_TEXT","GET_MOT_CLIENTS","GET_CONTRACTORS","GET_INFRASTRUCTURE_OWNERS","GET_COUNTIES","GET_MOT_ROUTES","GET_ALL_TYPICALS","GET_MOT_HOLIDAYS","GET_MOT_SPECIALEVENTS","GET_ALL_CITY","GET_ALL_TOWNSHIP","GET_TOWNSHIP_BYMOT","GET_MOT_DISTRICTS","GET_FLEET_TRACKER_VEHICLES","GET_MOT_PROJECTS","GET_MOT_DIRECTION","GET_MOT_TIMEFRAME","GET_MOT_CLOSURES","GET_MOT_TYPICALS","GET_MOT_REQUESTS_BY_USER","GET_RAMP_OPERATION","GET_UNIT_MEASURES","GET_UNIT_TIME","GET_WORK_OPERATION","GET_JOB_DISTRICTS","GET_JOB_REGION","GET_JOB_SUB","GET_TS_OPS","GET_MSG_TIMEFRAMES","GET_MOT_CITY","GET_ALL_VARIABLE_VALUE","GET_ALL_VARIABLES","GET_MOT_CONSTRUCTION_STAGES","GET_MOT_COUNTY","GET_ROUTE_NAME","GET_MOT_RAMP","GET_MOT_TRO_TYPICAL","GET_MOTITCPRestrictedTime","GET_MOT_LANE_RESTRICTIONS","GET_MOT_NIGHT_WORK","GET_MOT_PCMS_MSG","GET_MOT_TRAFFIC_REG","GET_MOT_TS_OPS","GET_MOT_VAR_VALUE","GET_MOT_LR_CONDITION","GET_MOT_UNIQUE_REQUIREMENT","GET_MOT_MOTWZ_SL","GET_PROJECT_REGIONS","GET_PROJECT_TYPES","GET_PROJECT_REFERENCE_ITEMS","UPDATE_MOT_VARIABLE","UPDATE_MOT_PCMS_MESSAGE","UPDATE_MOT_RAMP_CLOSURE","UPDATE_MOT_RESTRICTION","UPDATE_MOT_LR_STOPPAGE","UPDATE_MOT_APPROVAL","UPDATE_MOT_SECTION_VALIDATION","DELETE_MOT_JOB_COUNTY","DELETE_MOT_REQUEST","DELETE_TFLOW_PROJECT","GET_WP_HISTORY","GET_WP_CLOSURES","UPDATE_WP_INFO","endpoints","forEach","Endpoints","defaultOptions","credentials","defaultPatchOptions","method","headers","Accept","defaultPutOptions","defaultPostOptions","defaultDeleteOptions","jsonify","errCallback","ok","api","baseUrl","setBaseUrl","newBaseUrl","buildUrl","buildOptions","fetch","retVal","buildQueryString","params","qs","stringify","getWithParams","post","body","putJson","patch","patchJson","deleteWithParams","deleteWithParamsJson","aspDateTimeConversion","dtString","LOCAL_ENV_KEY","DEV_ENV_KEY","TEST_ENV_KEY","PROD_ENV_KEY","Environments","fullName","shortName","doesLocationHostMatch","regex","test","location","host","hostname","getCurrentEnvironmentKey","getCurrentEnvironmentData","getIsLocalEnvironment","getIsProductionEnvironment","flattenedEuclideanDistance","p1","p2","pow","flattenedEuclideanDistanceSq","xy1","toXY","xy2","latCos","cos","parseFloat","lat","lng","lon","APPLY_DATA","APPLY_WSA_DATA","CLEAR_DATA","DELETE_LOCATION","LATEST_MONITOR_FRAME_UPDATE","LOCATION_HISTORY_UPDATE","MARK_VU_APPROACH_CLOSED","MARK_VU_APPROACH_INVALID","MARK_VU_APPROACH_RESULT_LOADING","MARK_VU_APPROACH_RESULT_LOADED","SET_APPROACH_TEST_RESULT","SET_COMPLETION_APPROACH_RUN","SET_NOW","SET_START_TIME","SET_TEST_CONFIG","SET_RSU_TEST_CONFIG","VU_APPROACHES_UPDATE","LOAD_APPROACH_TEST_RESULTS","LOAD_MESSAGE_COUNTS_BY_APPROACH_DISTANCE","LOAD_OVERALL_INTERSECTION_RESULT","LOAD_RSU_TEST_CONFIG","LOAD_VU_APPROACHES","LOAD_APPROACH_RUNS_FOR_TESTSETNUM","MARK_VU_APPROACH_RESULTS_LOADING","MARK_VU_APPROACH_RESULTS_LOADED","SET_TEST_CONFIG_FROM_TEST_RESULT","SET_TEST_CONFIG_FROM_TESTSETNUM","CLEANUP","HASH_RESOLUTION","MAX_LOCATIONS","GPS_ACCURACY_MULTIPLIER","GPS_MAX_CONTINUOUS_TIME_SEC","GPS_MAX_DISTANCE_FUDGE_FACTOR","LATEST_MONITOR_FRAME_TIMEOUT_SECS","VALIDATION_FREQUENCY_PRECISION","FVU_MONITOR_REGEXP","PARTIAL_PARSER_REGEXP","GPS_REGEXP","DEVICE_MESSAGE_REGEXP","FALLBACK_APPROACH","vuapproachesid","approachtype","geoJSON","coordinates","startTime","latest_monitor_frame","location_history","test_config","vu_approaches","vu_approach_location_reference","rsuId","intersectionId","rsu_data","rsu_test_config","vuApproachLocationId","approach","parentapproachid","latlngHash","gpsCount","freqCount","freqTotal","idleCount","parserErrorCount","parserFormatErrorCount","parserContentErrorCount","parserCount","latestTimestamp","enteredAt","preExitedAt","exitedAt","approachComplete","approachData","msgTypeData","typeId","frequencyChecker","srcData","srcDataTimestamp","setErrorUnheardFlags","isUnheard","WindowSizeSeconds","FrequencyHz","isError","IsCorrectFormat","IsCorrectContent","vuApproach","rsu","WSA","count","parseInt","expired","getRsu","getApproachesForPoint","getLatLngHash","tail","candidate","unshift","pop","last","stationary","gpsDifferentEnough","gpsTooDifferent","tooFarFrom","tooCloseTo","rsuData","approachesForPoint","filterFn","sort","a","b","val","min","approachRunId","validated","validationDetails","approachtestid","reduce","vuApproaches","isUndefined","approachRuns","resultData","approachRunTestResult","approachRunNonTestableCounts","approachRunData","nonTestableTypeCounts","testResultRow","messageTypeId","actualStart","actualEnd","timeInApproach","resultDetail","testResult","errorCount","rootGetters","RsuStore","topic","fvuMonitorRegexp","exec","match","approachrunid","approachid","deviceMessageRegexp","RSUId","gps_end","baseArgs","extraOpts","gpsRegexp","frameRsus","latestMonitorFrameRSUs","typeArgs","messages","messageData","rsus","thisRsu","approachArgs","approachRunIdsToLoad","nonTestableTypesStr","nonTestableMessageTypes","qString","flatTestParams","testConfig","testParams","testableMessageTypes","msgTypeExpected","validationFrequency","errorThresholdPct","expected","rows","values","resultIds","completionApproachRunId","rsuTestConfig","isLoading","req","approachesByVuApproachLocationId","approachesByIntersectionId","rsuApproaches","testsetnum","res","success","start","rsuDeviceID","resultPending","resultLoaded","testResultRows","protectedRsuIds","targetCount","ceil","locationBuckets","locationHistory","TEST_RESULTS","PASS","FAIL","UNHEARD","NULL","minNonStationarySpeed","partialParserRegexp","dsrcMessageTypes","j2735MessageTypes","isCompletionRun","latestFvuGpsData","eachRight","lhItem","tooClose","tooFar","latestFvuPosition","latestFvuHeading","latestMonitorFrame","age","rootState","polygon","pointInPolygon","completionApproachRun","rsuApproachComplete","rsuAllApproachesComplete","parentApproaches","rsuApproachValidationError","invalidApproachRuns","ar","rsuApproachObservedTypeFrequency","isNaN","rsuApproachTimeWithin","rsuRecentSignalStrength","monitorFrame","rssi","partialParser","collectedRssi","ppData","Rssi","round","mean","defaultTestConfig","globalState","vFreqFactor","attrKey","vuatppass","user","profileAttributes","dynamicTestResult","overall","dataByMsgType","typeFrameData","rsuMessage","resultCounts","v","msgTypeTestResult","rsuTestResult","counts","latlng","total","testStart","testEnd","latlngResults","msgTypeResults","latlngData","latlngTestResult","overrideResult","flattenedRsuData","shouldHaveType","avgFreq","averageFrequency","allData","needsCleanup","latHash","lngHash","LatHash","LngHash","d1","d2","degToMeters","metersToMiles","milesToMeters","mi","msToHours","ms","dist","Geo","rate","time","maxDist","scrStatuses","initialState","title","scrModify","scrStatusId","mixonHillApproved","clientApproved","clients","credentialTypesList","intersections","ipAddressTypes","locationTypes","macAddressTypes","models","privilegeTypes","authTypes","tenants","devicetenants","testLabs","network","VUs","people","errors","viewModel","appTypes","movements","relationship","deviceLocation","testRunning","labTests","isTotalStationSCR","canEdit","readOnly","scrStatus","isTotalStationReadOnly","NetworkList","HistoryList","LatestChanges","updateState","removeState","updateDeviceTypeId","deviceTypeName","deviceTypes","updateClients","updatecredentialTypesList","updateIntersections","updateIpAddressTypes","updateLocationTypes","updateMacAddressTypes","updateModels","updatePrivilegeTypes","updateAuthTypes","updateTenants","updateDeviceTenants","updateTestLabs","updateNetwork","updateVUs","addError","prop","clearErrors","updateViewModel","updateDeviceScrId","deviceScrId","updateProjectNumber","projectNumber","updateSaveInfo","saveInfo","updateTenantId","tenantId","updateClientNetworkId","clientnetworkId","updateRequestDate","requestDate","updateManufacturerId","manufacturerId","updateModelId","modelId","updateInfrastructureOwnerId","infrastructureOwnerId","updateInfrastructureOperatorId","infrastructureOperatorId","updateDeviceRoles","scrApproveRole","scrSysApproveRole","scrEditRole","scrLabTestRole","updateSCRViewDetails","isReadOnly","canEditSCR","isTSReadOnly","hasTestViewRole","hasTestRole","hasViewTestRole","updateDeviceName","updateLocationTypeId","locationTypeId","updateAreaDescription","areaDescription","updateLatitude","updateLongitude","updateElevation","elevation","updateAdditionalDetails","additionalDetails","addIpAddress","ipAddresses","removeIpAddress","updateIpAddressToNull","addMacAddress","macAddress","macAddresses","removeMacAddress","addCredential","credential","removeCredential","updateCredential","updateTitle","updateScrModify","updateScrStatusId","updateMixonHillApproved","updateClientApproved","updatePeople","updateInstallationSupportPersonId","installationSupportPersonId","updateInstallationSupportFirstName","installationSupportFirstName","updateInstallationSupportLastName","installationSupportLastName","updateInstallationSupportPhone","installationSupportPhone","updateInstallationSupportEmail","installationSupportEmail","updateMaintenanceSupportPersonId","maintenanceSupportPersonId","updateMaintenanceSupportFirstName","maintenanceSupportFirstName","updateMaintenanceSupportLastName","maintenanceSupportLastName","updateMaintenanceSupportPhone","maintenanceSupportPhone","updateMaintenanceSupportEmail","maintenanceSupportEmail","updateSerialNumber","serialNumber","updateFirmwareVersion","firmwareVersion","updateAppTypes","updateApproachDetails","approachDetails","addApproachDetails","removeApproachDetails","laneid","updateApplications","application","addApplication","applications","removeApplication","appType","updateIntersectionId","updateMovements","updateIntersectionMovementPhases","intersectionMovementPhases","updateIntersectionMovementPhaseNumber","phaseNumber","updateTotalStations","updateTotalStationName","updateRejectReason","rejectReason","updateRelationship","updateTestMode","inTestMode","updateTestLabId","testLabId","updateNetworkId","networkId","updateTestIP","updateLabTests","updateLabTestId","labTestId","updateTestCompletion","testCompletion","updateTestStatus","testStatus","updateTestResults","testResults","updateVuId","vuId","updateESSInterfaceList","ESSInterfaceList","updateNetworkList","updateStationCategory","StationCategory","updateStationCategoryValue","StationCategoryValue","updateStationTypes","StationTypes","updateStationTypeValue","StationTypeValue","updateSensorDataRequest","SensorDataRequest","updateHttpFlag","HttpFlag","updateRegionDistrictList","RegionDistrictList","updateRegionDistrict","RegionDistrict","updatePortTypeLists","PortTypeLists","updatePortTypes","PortTypes","updateHighway","Highway","updateMilePost","MilePost","updateSiteAddress","SiteAddress","updateDirection","Direction","updateDrivingAccess","DrivingAccess","updatehttpEnabledChkBx","httpEnabledChkBx","updateHttpFlagValue","HttpFlagValue","scrInfoByID","hasErrors","keys","totalStationOptions","readonly","TotalStationInfoList","CredentialType","httpIsNewChkbx","deviceManager","totalStation","spatVerificationModule","motModule","tim","fvu_monitor","tsc","ess","deviceScr","intersection","vu_approach_location","mostRecentToasts","toasts","apiUrl","mqttCredentials","mqtt","RetCode","mqttSubscriptions","subscriptions","breadcrumbsOpened","isLoggedIn","username","currentUsername","currentUserPrimaryClientId","primaryClientId","currentUserHasRole","role","roles","currentUserHasFeature","feature","features","scrEdit","deviceScrEdit","zoom","center","replaceLabel","labelText","replaceText","labelIndex","toUpperCase","mappings","labelMappings","thisLabel","ExactMatch","LabelText","ReplaceText","GET_AVAILABLE_MQTT_CREDENTIALS","ActionTypes","FETCH_MQTT_CREDENTIALS","exception","MutationTypes","SET_MQTT_CREDENTIALS","FETCH_USER_INFO","SET_USERNAME","SET_PRIMARY_CLIENT","SET_ROLES","SET_FEATURES","SET_LABELMAPPINGS","SET_PROFILE_ATTRIBUTES","INIT","SET_BREADCRUMBS_OPENED","localStorage","setItem","isString","isInteger","client","logoImageUrl","logourl","MQTT_SUBSCRIBE","subscription","MQTT_UNSUBSCRIBE","subscriptionName","ADD_TOAST","DISMISS_TOAST","toast","SET_MAP_ZOOM","SET_MAP_CENTER","SET_TILE_PROVIDER_VISIBILITY","newtp","tileProviders","use","Vuex","initialBreadcrumbsOpened","getItem","Store","subdomains","variants","Mapnik","BlackAndWhite","DE","HOT","dashboard","config","reloadIntervalMilliseconds","widgets","widgetType","displayName","backgroundColor","isDisplay","linkUrl","isDebug","process","String","startsWith","search","pos","cssVarPoly","init","CSS","supports","classList","add","ratifiedVars","varsByBlock","oldCSS","findCSS","updateCSS","styleBlocks","querySelectorAll","counter","block","theCSS","nodeName","innerHTML","findSetters","getLink","responseText","curCSSID","ratifySetters","newCSS","replaceGetters","querySelector","style","curCSS","varList","theVar","getterRegex","RegExp","replace","getterRegex2","matches","curBlock","curVars","split","XMLHttpRequest","open","overrideMimeType","status","send","onreadystatechange","webpackContext","webpackContextResolve","minimized","stopPropagation","requestActive","preventDefault","mouseEnter","mouseLeave","startDragMove","maximize","minimize","_e","_g","_b","wrappedComponentProps","componentEventHandlers","startDragResize","permissions","ESS_DIAGNOSTICS","ESS_VIEW","ESS_OPERATIONS","HELP_VIEW","MOT_VIEW","MOT_APPROVE","MOT_EDIT","MPD_ANALYSIS_TAB","MPD_REPORTS_TAB","MPD_VEHICLE_TAB","MPD_FORM_TAB","RSU_LAB_TEST","RSU_MAP_ACTIVATE","RSU_MAP_EDIT","RSU_MAP_VIEW","RSU_NEAR_NEIGHBOR","RSU_OPERATIONS","RSU_ON_DEMANDCHECK","RSU_TIM_ACTIVATE","RSU_TIM_EDIT","RSU_TIM_VIEW","RSU_RWM_ACTIVATE","RSU_RWM_EDIT","RSU_RWM_VIEW","RSU_VIEW","RSU_VU_FEED_VIEW","RSU_VU_TEST_VIEW","SCR_ESS_APPROVE","SCR_ESS_EDIT","SCR_ESS_VIEW","SCR_RSU_APPROVE","SCR_RSU_EDIT","SCR_RSU_VIEW","SCR_TS_APPROVE","SCR_TS_EDIT","SCR_TS_VIEW","SCR_TSC_APPROVE","SCR_TSC_EDIT","SCR_TSC_VIEW","SCR_VIEW","SPAT_VERIFY_VIEW","SYS_ADMIN_HEALTH_CHECK_VIEW","TFM_VIEW","TFR_EDIT","TFR_VIEW","TOTAL_STATION_VIEW","TOTALSTATION_SCR_VIEW","TSC_VIEW","USER_SETUP_VIEW","USER_SETUP_MODIFY_ALL_CLIENT","USER_SETUP_MODIFY_IN_CLIENT","VIDAS_CONFIG_VIEW","WP_VIEW","WP_EDIT","IsUserIdle","setIsUserIdle","$store","envName","_m","toggleOpen","show","checkLegacyTFRFeatureFlag","logout","$breadcrumbs","crumb","linkProp","crumbText","sessionState","showSessionExpiresSoonModal","isRefreshingSession","checkSession","slot","logoutSession","showSessionExpiredModal","MqttTopic","VERSION_CONSTRUCTOR_MAP","version","VERSION_1_PREFIX","category","reporter","v1toString","arrayToTopic","Paho","MQTT","EVENT_SOURCE","clientId","required","port","Number","protocol","password","reconnect","connectTimeoutSecs","reconnectTimeoutMillis","maxReconnectAttempts","useSSL","qos","reconnectAttempts","isConnected","disconnecting","watch","old","info","resetSubscriptions","beforeMount","connect","$root","$refs","mqttClientComponent","Client","_mqtt_client","_client","clientOptions","userName","onSuccess","onClientConnectSuccess","onFailure","onClientConnectFailed","onConnectionLost","onClientConnectionLost","onMessageArrived","onClientMessageArrived","publishConnectMessage","reason","checkReconnect","disconnect","oldSubscriptions","unsubscribe","subscribe","opts","publish","connected","parseTopic","MQTT_CLIENT_ID_MAX_LENGTH","computed","mounted","generateRandomClientID","substring","random","manager","MqttClient","EventBus","pushGlobalEvent","path","meta","breadcrumb","authorizedRoles","PERMISSIONS","pageTransition","passProps","PageViewer","children","motId","$route","rulesetId","$mhi","region","Region","county","County","localOffice","LocalOffice","ClientId","contractorId","ContractorId","fromDate","FromDate","toDate","ToDate","byUser","ByUser","showWithoutRules","ShowWithoutRuleSet","ProjectType","ProjectStatus","beforeEnter","to","from","next","store","FEATURES","DmsRouteView","dsrcProps","deviceIdentifier","rsuIdentifier","deviceType","action","toLowerCase","timIdentifier","charAt","rwmIdentifier","rsuProps","DSRC","fvuProps","DeviceReport","FvuStore","checkContextMenuLatLng","contextMenuLatLng","DeviceManagerStoreModule","scrId","initialDeviceTypeId","DMS","RSU","Verification","ESS","redirect","query","Detroit","onMapMounted","fd","floodDssId","floodPolygon","mapColor","weatherGridCellId","centerLatitude","centerLongitude","getIcon","wsd","siteId","wxMarker","toolTip","sgd","sgMarker","sidebarScrollTop","toggleSidebar","$props","FloodDss","staticStyle","Service","requestName","openRequest","activeRequests","find","abortController","abort","AbortController","signal","FleetTracker","VueRouter","router","base","routes","Home","allowAnonymous","Dashboard","DeviceManager","ChangeRequests","VUHistory","VUFeed","Help","MOT","TFlowRestriction","WorkerPresence","storeInit","beforeEach","matched","some","record","haveUsername","Environment","routeRequiresRoles","rolesRequired","register","ready","log","cached","updated","offline","UserHasFeature","install","functional","userHasFeature","parent","Vuetify","theme","disable","icons","iconfont","productionTip","VueBreadcrumbs","commonFilters","vuetify","breadcrumbs","beforeCreate","featureName","App","$mount","classes","content","dismissToast","sidebarClass","floating","collapsed","extends","LMarker","extraClass","custom","icon","L","Default","setExtraClass","mapObject","_icon","opacity","remove","submit","hideFooter","array","separator","capitalize","capitalizeEach","stringWithSpaces","word","formatDateString","str","exp","sub","regexp","formatOnlyDate","addTime","number","typeString","moment","areDatetimesTheSame","comparator","isSame","daysBetween","diff","subTime","subtract","fromNow","formatDate","formatString","format","formatOnlyTime","ellipsis","len","formatUTCtoLocal","inputDate","localDateTime","UNSPECIFIED","toISOString","isIsoFormattedString","conformedString","conformDateString","zone","toLocaleTimeString","timeZoneName","parts","toTimeString","timezone","formatLocalToUTC","toUTCString","jsonFormat","toJSON","inputString","ADD_ESS","CLEAR_ESSS","UPDATE_ESS_DATA","FETCH_ESS_REPORT","FETCH_ESS_METADATA","FETCH_ESS_MANAGE_INFO","FETCH_ESSS","FETCH_HISTORICAL_DATA","FETCH_LATEST_DATA","esss","putDevice","locationDescriptionId","getESSManageInfo","paramsObj","DSRCmsgID","isManagableByID","accessLevel","isVerifiableByID","essId","dsrcFlags","model","toggleModel","GLOBAL_EVENT_PREFIX","onGlobalEvent","$on","onSingleGlobalEvent","$once","onGlobalEventWithTimeout","fun","refobj","that","$off","UPDATE_VU_APPROACH_LOCATION","LOAD_VU_APPROACH_LOCATION","vuApproachLocations","vuApproachLocation","vuApproachLocationid","VUApproachLocationId","CLEAR_FILTER","SET_FILTER","SET_EMPTY_TS_FILTER","setTSEmpty","SET_USERCLIENTACCESS","userClientAccess","SET_SELECTED_DEVICE_TYPE_IDS","deviceTypeIds","selectedDeviceTypeIds","SET_EXCLUDED_DEVICE_TYPE_IDS","unselectedDeviceTypeIds","SET_SELECTED_DEVICE_STATUS_IDS","deviceStatusIds","selectedDeviceStatusIds","SET_SELECTED_DEVICE_OPERATOR_ID","Id","selectedDeviceOperatorId","SET_SELECTED_DEVICE_PROJECT_ID","selectedDeviceProjectId","SET_SELECTED_DEVICE_OWNER_ID","selectedDeviceOwnerId","ADD","entries","ADD_SET","DESELECT","selected","SELECT","CLEAR","DELETE","UPDATE","FETCH_ALL","getTotalStations","FETCH_USERCLIENTACCESS","fetchClientsByUser","FETCH_TOTAL_STATION_MANAGE_INFO","getTotalStationManageInfo","allEntries","filteredEntries","globalGetters","selectedDevices","filteredTotalStations","isProjectIdSelected","isOperatorSelected","isOwnerSelected","getFilteredDevicesForTotalStation","isDeviceSelected","isUnSelectedDeviceType","arr","isSelectedDeviceStatus","devicesById","entry","numDevicesById","numFunctionalDevicesById","countBy","true","isAllFunctionalById","cool","totalStationModule","StoreModule","win","toggleMinimized","toggleMaximized","moveWindow","resizeWindow","activateWindow","closeWindow","startDateTime","MQTTSUBSCRIPTIONTSC","MQTTSUBSCRIPTIONRSU","subscribedOnce","stopSourceTimer","dataReceivedTimerTsc","dataReceivedTimerRsu","timeSpanMinutesRsuLastHeard","dataReceived","ADD_DATA_ROW","transport","waitingForData","windowId","FETCH_SOURCES","txRsu","Api","timeSpanMinutes","radioNeighbors","rsuDevices","DeviceManagerStore","availableSources","availableVerification","source","getIpAddressByDeviceId","ipAddressInfo","label","START_SOURCE","txTsc","rxRsu","allRsuDevices","tscDevice","rsuDevice","sources","sourcesLoaded","post1","Topic","Payload","ControllerId","QualityOfService","Retain","rsuIntersectionId","rsuRegionId","post2","regionId","rxIpAddress","tscTopic","rsuTopic","root","dataRow","parseTscMessage","parseRsuMessage","STOP_SOURCE","STOP_SOURCE_IMMEDIATELY","SET_CURRENT_FRAME_NUMBER","minDisplayFrameNumber","maxDisplayFrameNumber","currentFrameNumber","SET_DATA_RECEIVED","SET_MAX_DISPLAY_FRAME_NUMBER","SET_MIN_DISPLAY_FRAME_NUMBER","SET_IS_PLAYING","isPlaying","SET_TRANSPORT_SPEED","transportSpeed","SET_WAITING_FOR_DATA","SET_AVAILABLE_SOURCES","currentTsc","SET_VERIFICATION_SOURCE","selectedVerification","SET_RX_IP_ADDRESS","SET_OFFSET_TIME","offset","offsetTime","SET_IS_LINKED","isLinked","SET_IS_AUTO","isAuto","ADD_PHASE_CHANGE_FRAME","phaseChangeFrameNumbers","dataWindows","frames","latestDataRow","SET_PHASE_NUMBER_TSC","SET_PHASE_NUMBER_RSU","CLEAR_DATA_WINDOWS","dataRows","SET_CENTER_LAT_LONG","mapVisualizer","SET_INTERSECTION","RESET","getDataRowForFrameRsu","dataRowRetrieved","getDataRowForFrameTsc","timecode","localMidnight","TSC","SpatVerificationModule","cloneDeep","LOAD_DEVICE_TYPES","acc","expanded","filterDeviceType","loading","TOGGLE_EXPAND_DEVICE_TYPE","SET_EXPAND_DEVICE_TYPE","SET_DEVICE_TYPE_LOADING","SET_SHOW_DEVICE_TYPE","CLEAR_ACTIVE_DEVICE","activeDeviceId","activeDeviceTypeId","SET_ACTIVE_DEVICE","SET_CONTEXT_MENU_LAT_LNG","fetchDeviceTypes","getDeviceTypes","fetchDefaultDevices","ddts","fetchDeviceMetadata","deviceTypeModuleName","fetchDevicesOfType","doesDeviceTypeHaveModule","filteredDevices","allDevicesByType","deviceTypeIconURLByTypeID","deviceTypeById","pickBy","disabled","mapValues","devicesOfType","mn","defaultDeviceTypesToLoad","allDeviceTypes","deviceByTypeAndId","moduleName","deviceStatusMetadata","activeDevice","isDeviceTypeExpanded","hasDeviceViewPermission","deviceShortName","deviceViewRoleClaim","hasPermission","deviceManagerModule","initial_state","additional_mutation_names","additional_action_names","ADD_RSU","CLEAR_RSUS","UPDATE_RSU_DATA","CLEAR_TESTED_RSUS","ADD_TO_RSU_TEST_LIST","SET_RSU_TESTS","GET_TESTED_RSU_DEVICE_ID","FETCH_RSU_METADATA","FETCH_RSU_MANAGE_INFO","FETCH_RSU_BROADCASTING_MESSAGES","FETCH_RSU_TIMS","FETCH_RSU_MAP_STATUS","FETCH_RSU_RADIO_NEIGHBORS","FETCH_ALL_DSRC_FLAGS","FETCH_RSUS","testedRSUDeviceIds","tests","tims","mapStatus","locationTypeDescription","manufacturerName","putRSU","isActive","getRSUManageInfo","rec","radioNeighborIds","startDate","endDate","results","listOfTestsByRsu","testedRSUs","hasMAP","hasSPAT","hasTIM","spatMessageEntry","messageType","mapMessageEntry","timMessageEntry","statusClass","f","statusTitle","spatStatusText","mapStatusText","timStatusText","mapIsActive","spat","msgTimestamp","displayText","deviceTypeImageUrlByID","deviceTypeRadio","_q","setShowDeviceType","$set","ShowEmptyTS","isEmptyTSVisible","callback","$$v","option","isNoDeviceSelected","_i","$$a","$$el","$$c","checked","$$i","toggleDeviceStatus","color","formattedText","modifiers","$$selectedVal","_value","_n","multiple","clientid","clientname","setProjectId","composing","CustomEvent","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","Event","SET_CONTENT_TYPES","SET_FRAME_TYPES","SET_AREA_TYPES","SET_ITIS_CODES","SET_ROAD_SURFACE_DESCRIPTIONS","ADD_CONTENT_TYPES","ADD_FRAME_TYPES","ADD_AREA_TYPES","CLEAR_CONTENT_TYPES","CLEAR_FRAME_TYPES","CLEAR_AREA_TYPES","FETCH_CONTENT_TYPES","FETCH_FRAME_TYPES","FETCH_AREA_TYPES","FETCH_ITIS_CODES","FETCH_ROAD_SURFACE_DESCRIPTIONS","appendToArrayUnlessEmpty","replaceArrayAtKeyGenerator","appendToArrayAtKeyGenerator","clearArrayAtKeyGenerator","fetchAndMutateResult","mutation","endpoint","contentTypes","frameTypes","areaTypes","itisCodes","roadSurfaceDescriptions","svgs","straight","height","width","transform","left","right","Maneuver","maneuverId","maneuverType","leftTurnIds","rightTurnIds","straightThruIds","Lane","connectTos","connectTo","ConnectTo","isEnabled","laneDirectionDesc","laneId","laneNumber","laneSharingIds","laneTypeAttributeIds","laneTypeId","maneuvers","sortManeuvers","enabledNodes","node","nodes","roadName","indexInArray","signalGroups","group","SignalGroup","addManeuverId","placement","maneuverIds","UPDATE_INTERSECTION","UPDATE_LANES","LOAD_INTERSECTION","LOAD_LANES","retryCount","intersectionid","IntersectionId","lanes","lane","maxRetries","retryInterval","TS_DEVICE_TYPE","RSU_DEVICE_TYPE","TSC_DEVICE_TYPE","ESS_DEVICE_TYPE","initialDeviceTypes","isAddable","deviceTypeModule","_modules","_children","doesDeviceHaveModule","defaultDisabled","defaultValue","defaultLabel","optionValueKey","optionLabelKey","SET_MOT_VARIABLE","SET_MOT_VM","SET_SITEBAR_LIST","SET_TITLE","MOTtitle","SET_MOT_ViewModal","MOTViewModal","SET_MOT_ID","MOTId","SET_PROJECT_ID","SET_PROJECT_NUM","ProjectNum","SET_MOT_STATUS","MOTStatus","SET_MOT_START_YEAR","startyear","MOTConstructionStartYear","SET_MOT_END_YEAR","endyear","MOTConstructionEndYear","SET_MOT_DATA","MOTData","SET_COMPONENT","SET_ISAPPROVED_FLAG","MOTIsApprovedFlag","SET_TEXT_TITLE","MOTtextTitle","SET_NAVIGATION_ID","MOTnavigationId","SET_MOT_INFO_UPDATING_FLAG","MOTInfoUpdatingFlag","MOTsidebarList","SET_SECTION_VAR","MOTSectionVariable","SET_MOT_TABLE_DATA","MOTcomponent","Mot","deviceStatusLib","Proposed","TFMApproval","Deployed","Maintenance","Removed","position","isValidButtonPlacement","directionIndexFromIndices","handleClick","iconClass"],"mappings":"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e,2BACd,CAAEygC,WACF,SAAA1nD,GACC,MAAMA,KAENgC,MAAK,SAAA6S,GAEN,cADO,EAAKwyC,eAAeF,GACpBtyC,KAERrL,KAAK69C,eAAe3oD,KAAK,CAAEyoD,cAAaI,oB,kBACjCrlD,G,gHCyBT,KACA,MACA,cAEA,IACA,MACA,iCAEA,SACA,0BACA,WACA,iBAGA,kBACA,0BACA,iBACA,cAGA,QACA,iCAEA,aACA,YACA,cAEA,0BACA,aACA,YAEA,kBACA,aACA,YAEA,uBACA,+BAEA,uBACA,aACA,aAiBA,I,GAbA,iBACA,SACA,YACA,gBACA,aACA,mBACA,uBACA,sBACA,gBACA,KACA,yB,GAmHA,gC,iRA/GA,G,iDACA,I,mDACA,I,+CACA,I,8CACA,I,iDACA,I,yKAGA,G,4CACA,Q,kDACA,K,2DAoBA,6CACA,2BACA,yCACA,qBACA,oCACA,iBACA,uBAGA,sCACA,oBACA,SACA,WACA,wBAEA,MAEA,4CACA,oBAEA,2CACA,qBAEA,kBACA,SACA,WACA,oDACA,wBAGA,MAEA,8CACA,8BACA,iBACA,kCACA,+BACA,8BAQA,OAPA,wCACA,6BACA,gBACA,iBACA,iBACA,qBACA,6BACA,GAGA,wBAIA,mCACA,oCAGA,uE,wLAGA,2B,SACA,oB,0SAIA,mB,kBAEA,6B,UAAA,E,OACA,K,sBACA,e,OAEA,yB,wDAEA,oCACA,uB,mDAGA,iBACA,6C,gKAMA,2BACA,+C,mCAKA,GACA,SACA,8BACA,0BACA,oBAIA,IAFA,2BACA,KACA,oBACA,mCACA,sBACA,cACA,UACA,4BACA,UAoBA,OAjBA,yBACA,+BACA,+BACA,cACA,eACA,qBAEA,oCACA,oBAEA,mCACA,qBAEA,mBACA,kDAEA,gCACA,I,qCAEA,OACA,gCACA,sCAEA,sBACA,kCACA,kBAEA,4B,mCAEA,WACA,gCACA,MACA,sBAEA,iB,0CAGA,OACA,8BACA,yCAEA,EACA,6BACA,2BACA,MACA,6BACA,0BAEA,cAGA,WACA,qBACA,uBAEA,yCACA,YACA,eAEA,sBACA,sBAEA,uBACA,mBAEA,eAEA,GACA,oDACA,uCACA,iDACA,iB,qCAGA,GACA,mBACA,kBACA,4CACA,mC,wCAGA,GAIA,IAHA,gCACA,wCAEA,mBACA,6BACA,OACA,0CACA,MACA,OACA,0BACA,MACA,QACA,0B,4CAMA,WACA,iFACA,wBACA,sBACA,sBACA,6BACA,qBAEA,yBACA,6C,2CAMA,GACA,4BACA,OACA,4BACA,oCAEA,+C,wCAIA,GACA,oDACA,oC,gDAIA,cACA,sCACA,qCACA,sCACA,kCACA,oCACA,+BACA,yBACA,iDAEA,gBACA,0BACA,sCAEA,0BACA,kCACA,yBACA,IAjBA,eAiBA,GACA,uBACA,qCAGA,0DAwBA,2BAEA,qBACA,qBACA,mBA1BA,GACA,WACA,eACA,2BACA,8BACA,eACA,mBACA,eACA,wBACA,cACA,CACA,qBACA,yCACA,sBAOA,oBACA,yBA5BA,wBACA,EAMA,EAPA,KAqCA,gBAKA,IAHA,gCACA,0CAEA,mBAEA,kBACA,GACA,8CAEA,6BACA,oBAKA,cASA,OARA,kBACA,YACA,EACA,EACA,EACA,QAEA,2BAIA,sBACA,qBACA,2CACA,iBACA,yBAGA,0BACA,6BACA,sBACA,6BACA,oBAEA,4BACA,qBAEA,KACA,SACA,YACA,yCAEA,MAGA,0BACA,YACA,aACA,SAGA,sBACA,YACA,SACA,6BAEA,wBACA,wBAGA,oBACA,oDACA,EACA,K,0CAKA,OACA,wBACA,yBACA,sBACA,kCACA,kCACA,uCACA,kCACA,4BAEA,wB,4CAIA,OACA,4BACA,+BACA,8BACA,yCACA,kD,uCAIA,2BACA,0BACA,mC,mCAGA,GACA,eACA,8BACA,qD,iCAEA,GACA,aACA,4BACA,qD,mCAEA,GACA,mD,gCAEA,GACA,IACA,qBACA,kCACA,SACA,yC,qCAIA,OACA,8BACA,yCAEA,kBACA,4CACA,mBACA,IACA,+BACA,EACA,2BACA,MACA,wBAEA,kCACA,gCACA,+BACA,gCACA,0BACA,2BACA,WACA,aACA,QACA,8BAEA,8BACA,iBACA,iBACA,iD,8BA9cA,gBACA,aACA,yBAEA,cACA,OACA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","file":"js/app.f61daa68.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"ContactPage\":\"ContactPage\",\"DeviceManager.DSRC\":\"DeviceManager.DSRC\",\"DeviceManager.DSRC.MAP\":\"DeviceManager.DSRC.MAP\",\"DeviceManager.RSU.ByIdentifier\":\"DeviceManager.RSU.ByIdentifier\",\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\":\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\",\"DeviceManager.RSU\":\"DeviceManager.RSU\",\"DeviceManager.Verification.DeviceReport\":\"DeviceManager.Verification.DeviceReport\",\"DeviceManager.Verification.DeviceReport.byRsuId\":\"DeviceManager.Verification.DeviceReport.byRsuId\",\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\":\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\",\"DeviceManager.Verification\":\"DeviceManager.Verification\",\"DeviceManager.Verification.Replay\":\"DeviceManager.Verification.Replay\",\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\":\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\",\"ResetPassword\":\"ResetPassword\",\"User\":\"User\",\"VUFeed\":\"VUFeed\",\"VUFeed.byVUnitId\":\"VUFeed.byVUnitId\",\"DeviceManager.RSU.DSRC.TIM\":\"DeviceManager.RSU.DSRC.TIM\",\"DeviceManager.SCR\":\"DeviceManager.SCR\",\"DeviceManager.Index\":\"DeviceManager.Index\",\"DeviceManager.RSU.DSRC.TIMIndex\":\"DeviceManager.RSU.DSRC.TIMIndex\",\"VUHistory\":\"VUHistory\",\"UserList\":\"UserList\",\"MOT\":\"MOT\",\"MOT.motId~TFlowRestriction\":\"MOT.motId~TFlowRestriction\",\"MOT.motId\":\"MOT.motId\",\"TFlowRestriction\":\"TFlowRestriction\"}[chunkId]||chunkId) + \".\" + {\"ContactPage\":\"43f2aebc\",\"DeviceManager.DSRC\":\"e8a509cc\",\"DeviceManager.DSRC.MAP\":\"639248f5\",\"DeviceManager.RSU.ByIdentifier\":\"4df0bd17\",\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\":\"8968a6b3\",\"DeviceManager.RSU\":\"c5c62619\",\"DeviceManager.Verification.DeviceReport\":\"b345b893\",\"DeviceManager.Verification.DeviceReport.byRsuId\":\"b845250a\",\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\":\"62166a45\",\"DeviceManager.Verification\":\"364e9aea\",\"DeviceManager.Verification.Replay\":\"ce16dda1\",\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\":\"d5b82e1c\",\"ResetPassword\":\"d0bd07c1\",\"User\":\"b0d9632e\",\"VUFeed\":\"930b0165\",\"VUFeed.byVUnitId\":\"5cdd7094\",\"chunk-0155430e\":\"d5a51580\",\"chunk-0d1c46e8\":\"5913753e\",\"chunk-4e5d8d64\":\"f171420d\",\"DeviceManager.RSU.DSRC.TIM\":\"162056e0\",\"chunk-53207e75\":\"5c99b846\",\"chunk-2d0e5e97\":\"856f6691\",\"chunk-2d224ce2\":\"982cbfab\",\"chunk-2d22c4c0\":\"898fa470\",\"chunk-2deb35d8\":\"5d63308e\",\"chunk-50c1446a\":\"a8712f39\",\"DeviceManager.SCR\":\"c71e057f\",\"DeviceManager.Index\":\"9d049a43\",\"chunk-7ff8f719\":\"1bcb9aaf\",\"chunk-2e6343af\":\"dc812798\",\"chunk-3830573a\":\"f4ec18e6\",\"DeviceManager.RSU.DSRC.TIMIndex\":\"e82d8a56\",\"VUHistory\":\"c0b6e437\",\"chunk-0cb9fdc2\":\"a05a164f\",\"chunk-375a389d\":\"a5c252ef\",\"chunk-2d2086e4\":\"2deb0810\",\"UserList\":\"e6eb1813\",\"chunk-6337fcfc\":\"a0760405\",\"MOT\":\"bfa151c6\",\"MOT.motId~TFlowRestriction\":\"a8089e98\",\"MOT.motId\":\"4a87b78b\",\"chunk-3281dc5c\":\"e216eecf\",\"chunk-4af3c5c0\":\"9ff7b222\",\"TFlowRestriction\":\"6999eaaa\",\"chunk-7ea97f6e\":\"77578ee5\",\"chunk-6f95f06a\":\"a40d3b1b\",\"chunk-f19487d2\":\"79a10e82\",\"chunk-d57167a8\":\"bd2597c8\",\"chunk-8855245e\":\"212ff927\",\"chunk-db6f120e\":\"bfa4d43c\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"ContactPage\":1,\"DeviceManager.DSRC\":1,\"DeviceManager.DSRC.MAP\":1,\"DeviceManager.RSU.ByIdentifier\":1,\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\":1,\"DeviceManager.RSU\":1,\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\":1,\"DeviceManager.Verification\":1,\"DeviceManager.Verification.Replay\":1,\"ResetPassword\":1,\"User\":1,\"VUFeed\":1,\"VUFeed.byVUnitId\":1,\"chunk-0155430e\":1,\"chunk-4e5d8d64\":1,\"DeviceManager.RSU.DSRC.TIM\":1,\"chunk-53207e75\":1,\"chunk-2deb35d8\":1,\"chunk-50c1446a\":1,\"DeviceManager.SCR\":1,\"DeviceManager.Index\":1,\"chunk-7ff8f719\":1,\"chunk-2e6343af\":1,\"chunk-3830573a\":1,\"DeviceManager.RSU.DSRC.TIMIndex\":1,\"VUHistory\":1,\"chunk-0cb9fdc2\":1,\"chunk-375a389d\":1,\"UserList\":1,\"MOT\":1,\"MOT.motId~TFlowRestriction\":1,\"MOT.motId\":1,\"chunk-3281dc5c\":1,\"chunk-4af3c5c0\":1,\"TFlowRestriction\":1,\"chunk-7ea97f6e\":1,\"chunk-6f95f06a\":1,\"chunk-f19487d2\":1,\"chunk-d57167a8\":1,\"chunk-db6f120e\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"ContactPage\":\"ContactPage\",\"DeviceManager.DSRC\":\"DeviceManager.DSRC\",\"DeviceManager.DSRC.MAP\":\"DeviceManager.DSRC.MAP\",\"DeviceManager.RSU.ByIdentifier\":\"DeviceManager.RSU.ByIdentifier\",\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\":\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\",\"DeviceManager.RSU\":\"DeviceManager.RSU\",\"DeviceManager.Verification.DeviceReport\":\"DeviceManager.Verification.DeviceReport\",\"DeviceManager.Verification.DeviceReport.byRsuId\":\"DeviceManager.Verification.DeviceReport.byRsuId\",\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\":\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\",\"DeviceManager.Verification\":\"DeviceManager.Verification\",\"DeviceManager.Verification.Replay\":\"DeviceManager.Verification.Replay\",\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\":\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\",\"ResetPassword\":\"ResetPassword\",\"User\":\"User\",\"VUFeed\":\"VUFeed\",\"VUFeed.byVUnitId\":\"VUFeed.byVUnitId\",\"DeviceManager.RSU.DSRC.TIM\":\"DeviceManager.RSU.DSRC.TIM\",\"DeviceManager.SCR\":\"DeviceManager.SCR\",\"DeviceManager.Index\":\"DeviceManager.Index\",\"DeviceManager.RSU.DSRC.TIMIndex\":\"DeviceManager.RSU.DSRC.TIMIndex\",\"VUHistory\":\"VUHistory\",\"UserList\":\"UserList\",\"MOT\":\"MOT\",\"MOT.motId~TFlowRestriction\":\"MOT.motId~TFlowRestriction\",\"MOT.motId\":\"MOT.motId\",\"TFlowRestriction\":\"TFlowRestriction\"}[chunkId]||chunkId) + \".\" + {\"ContactPage\":\"731c7232\",\"DeviceManager.DSRC\":\"a6e6073c\",\"DeviceManager.DSRC.MAP\":\"368aaddc\",\"DeviceManager.RSU.ByIdentifier\":\"0e858e1e\",\"DeviceManager.RSU~DeviceManager.Verification~DeviceManager.Verification.Replay\":\"f249843b\",\"DeviceManager.RSU\":\"e8ca8c57\",\"DeviceManager.Verification.DeviceReport\":\"31d6cfe0\",\"DeviceManager.Verification.DeviceReport.byRsuId\":\"31d6cfe0\",\"DeviceManager.Verification~DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum~DeviceMana~023ed38d\":\"5dae6673\",\"DeviceManager.Verification\":\"82b0b119\",\"DeviceManager.Verification.Replay\":\"cc519cfd\",\"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\":\"31d6cfe0\",\"ResetPassword\":\"ef581d8a\",\"User\":\"7b3884d9\",\"VUFeed\":\"d0c604be\",\"VUFeed.byVUnitId\":\"e80a8809\",\"chunk-0155430e\":\"6021bb6f\",\"chunk-0d1c46e8\":\"31d6cfe0\",\"chunk-4e5d8d64\":\"c73931c5\",\"DeviceManager.RSU.DSRC.TIM\":\"4f911280\",\"chunk-53207e75\":\"89838bd5\",\"chunk-2d0e5e97\":\"31d6cfe0\",\"chunk-2d224ce2\":\"31d6cfe0\",\"chunk-2d22c4c0\":\"31d6cfe0\",\"chunk-2deb35d8\":\"eeb6a8c2\",\"chunk-50c1446a\":\"755aec7c\",\"DeviceManager.SCR\":\"e6fdbd51\",\"DeviceManager.Index\":\"7ff83942\",\"chunk-7ff8f719\":\"da81038e\",\"chunk-2e6343af\":\"a5c178ac\",\"chunk-3830573a\":\"db21ce86\",\"DeviceManager.RSU.DSRC.TIMIndex\":\"b41c17b4\",\"VUHistory\":\"5e51cea2\",\"chunk-0cb9fdc2\":\"4f3cb686\",\"chunk-375a389d\":\"a15eceb5\",\"chunk-2d2086e4\":\"31d6cfe0\",\"UserList\":\"8776e87a\",\"chunk-6337fcfc\":\"31d6cfe0\",\"MOT\":\"a674d7ba\",\"MOT.motId~TFlowRestriction\":\"59d0853e\",\"MOT.motId\":\"ed11d63f\",\"chunk-3281dc5c\":\"9acfe636\",\"chunk-4af3c5c0\":\"ba6c3aaf\",\"TFlowRestriction\":\"eeb6a8c2\",\"chunk-7ea97f6e\":\"dce2d2ea\",\"chunk-6f95f06a\":\"ac4837d5\",\"chunk-f19487d2\":\"99ef6ecb\",\"chunk-d57167a8\":\"e8869118\",\"chunk-8855245e\":\"31d6cfe0\",\"chunk-db6f120e\":\"412f1e0f\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/Content/Client/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\nimport FvuMonitorStore from \"@/store/modules/fvu_monitor\";\n\nconst MODULE_NAME = \"fvu\";\n\nconst MUTATION_TYPES = {\n\tADD_FVU: \"ADD_FVU\",\n\tCLEAR_FVUS: \"CLEAR_FVUS\",\n\tCLEAR_MESSAGE_QUEUE: \"CLEAR_MESSAGE_QUEUE\",\n\tDELETE_FVU: \"DELETE_FVU\",\n\tQUEUE_MESSAGE: \"QUEUE_MESSAGE\",\n\tUPDATE_POSITION: \"UPDATE_POSITION\"\n};\n\nconst ACTION_TYPES = {\n\tINIT_FVUS: \"INIT_FVUS\",\n\tINGEST_MESSAGES: \"INGEST_MESSAGES\"\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\tstate: {\n\t\tfvus: {},\n\t\tmessageQueues: {}\n\t},\n\tmutations: {\n\t\t[MUTATION_TYPES.ADD_FVU](state, payload) {\n\t\t\tif (_.isEmpty(payload)) return;\n\t\t\tconst putFVU = fvu => {\n\t\t\t\treturn fvu.fvuId\n\t\t\t\t\t? Vue.set(state.fvus, fvu.fvuId, fvu)\n\t\t\t\t\t: console.error(new Error(\"ADD_FVU: Invalid fvu object.\"));\n\t\t\t};\n\t\t\tif (Array.isArray(payload)) {\n\t\t\t\tpayload.map(putFVU);\n\t\t\t} else {\n\t\t\t\tputFVU(payload);\n\t\t\t}\n\t\t},\n\t\t[MUTATION_TYPES.CLEAR_FVUS](state) {\n\t\t\tVue.set(state, \"fvus\", {});\n\t\t},\n\t\t[MUTATION_TYPES.CLEAR_MESSAGE_QUEUE](state, payload) {\n\t\t\tconst fvuId = getFvuId(payload);\n\t\t\tif (!fvuId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"store.fvu.QUEUE_MESSAGE: Invalid message; cannot find fvu id.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tstate.messageQueues[fvuId] = (state.messageQueues[fvuId] || []).slice(\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t);\n\t\t},\n\t\t[MUTATION_TYPES.DELETE_FVU](state, payload) {\n\t\t\tVue.delete(state.fvus, payload);\n\t\t},\n\t\t[MUTATION_TYPES.QUEUE_MESSAGE](state, payload) {\n\t\t\tconst fvuId = getFvuId(payload);\n\t\t\tif (!fvuId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"store.fvu.QUEUE_MESSAGE: Invalid message; cannot find fvu id.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tstate.messageQueues[fvuId] = (state.messageQueues[fvuId] || []).concat([\n\t\t\t\tpayload\n\t\t\t]);\n\t\t},\n\t\t[MUTATION_TYPES.UPDATE_POSITION](state, payload) {\n\t\t\tconst fvuId = payload.fvuId;\n\t\t\tconst fvu = state.fvus[fvuId];\n\t\t\tconst forceUpdate = !!payload.forceUpdate;\n\t\t\tif (forceUpdate) delete payload.forceUpdate;\n\t\t\ttry {\n\t\t\t\tif (!_.isNumber(payload.timestamp)) {\n\t\t\t\t\tpayload.timestamp = new Date(payload.timestamp).getTime();\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(e);\n\t\t\t}\n\t\t\tvar rejection;\n\t\t\tif (payload.timestamp < fvu.timestamp) {\n\t\t\t\trejection = new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_POSITION}: Rejecting change for ${fvuId} because incoming timestamp is older than existing timestamp: ${payload.timestamp} < ${fvu.timestamp}.`\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\t!_.isEmpty(fvu.gpsData) &&\n\t\t\t\tpayload.gpsData.speed <\n\t\t\t\t\tFvuMonitorStore.MODULE_CONFIG.MIN_NON_STATIONARY_SPEED\n\t\t\t) {\n\t\t\t\trejection = new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_POSITION}: Rejecting change for ${fvuId} because incoming speed is less than minimum non-stationary speed: ${payload.gpsData.speed} < ${FvuMonitorStore.MODULE_CONFIG.MIN_NON_STATIONARY_SPEED}.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (rejection && !forceUpdate) {\n\t\t\t\tconsole.debug(rejection);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tstate.fvus[fvuId].timestamp = payload.timestamp;\n\t\t\tstate.fvus[fvuId].gpsData = { ...payload.gpsData };\n\t\t}\n\t},\n\tactions: {\n\t\t[ACTION_TYPES.INIT_FVUS](context) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_VUNITS_WITH_LATEST_LOCATION,\n\t\t\t\t{},\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.then(payload => {\n\t\t\t\t\t_.each(payload, row => {\n\t\t\t\t\t\trow.fvuId = getFvuId(row);\n\t\t\t\t\t\t// if (/0006$/.test(row.fvuId)) return;\n\t\t\t\t\t\trow.gpsData = row.gpsData || {};\n\t\t\t\t\t\trow.timestamp = row.timestamp || new Date().getTime();\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.ADD_FVU, row);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.INGEST_MESSAGES](context, payload) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst fvuId = getFvuId(payload);\n\t\t\t\tif (!fvuId) {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\"store.fvu.INGEST_MESSAGES: Invalid message; cannot find fvu id.\"\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst fvuMessageQueue = context.state.messageQueues[fvuId];\n\t\t\t\tif (!fvuMessageQueue) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"store.fvu.INGEST_MESSAGES: No messageQueue found for fvuId '\" +\n\t\t\t\t\t\t\tfvuId +\n\t\t\t\t\t\t\t\".\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst latestMessage = _.reduceRight(fvuMessageQueue, (ret, message) => {\n\t\t\t\t\tif (message.timestamp > ret.timestamp) {\n\t\t\t\t\t\tconsole.debug(\n\t\t\t\t\t\t\t\"store.fvu.INGEST_MESSAGES: Out of order messages found for fvuId '\" +\n\t\t\t\t\t\t\t\tfvuId +\n\t\t\t\t\t\t\t\t\"': \" +\n\t\t\t\t\t\t\t\tret.timestamp +\n\t\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\t\tmessage.timestamp\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn message;\n\t\t\t\t\t}\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t\tif (fvuMessageQueue.length) {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.CLEAR_MESSAGE_QUEUE, payload);\n\t\t\t\t}\n\t\t\t\tif (!latestMessage) {\n\t\t\t\t\t// There is a messageQueue for this fvuId, but there's nothing in it, so this must be a case where we've fallen behind and discarded something.\n\t\t\t\t\tresolve(false);\n\t\t\t\t} else {\n\t\t\t\t\tconst fvu = {\n\t\t\t\t\t\tfvuId: fvuId,\n\t\t\t\t\t\tdevice: latestMessage.device,\n\t\t\t\t\t\tserial: latestMessage.serial,\n\t\t\t\t\t\tgpsData: latestMessage.gpsData,\n\t\t\t\t\t\ttimestamp: latestMessage.timestamp\n\t\t\t\t\t};\n\t\t\t\t\tif (!context.state.fvus[fvuId]) {\n\t\t\t\t\t\tresolve(context.commit(MUTATION_TYPES.ADD_FVU, fvu));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(context.commit(MUTATION_TYPES.UPDATE_POSITION, fvu));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\tgetters: {\n\t\tallFvus(state) {\n\t\t\treturn state.fvus;\n\t\t},\n\t\tfvuId() {\n\t\t\treturn getFvuId;\n\t\t},\n\t\tfvuPosition() {\n\t\t\treturn fvu => {\n\t\t\t\tif (fvu === null || fvu === void 0) return null;\n\t\t\t\tif (\n\t\t\t\t\t!(\"gpsData\" in fvu) ||\n\t\t\t\t\t!(\"latitude\" in fvu.gpsData) ||\n\t\t\t\t\t!_.isNumber(fvu.gpsData.latitude) ||\n\t\t\t\t\t!(\"longitude\" in fvu.gpsData) ||\n\t\t\t\t\t!_.isNumber(fvu.gpsData.longitude)\n\t\t\t\t)\n\t\t\t\t\treturn null;\n\t\t\t\treturn [fvu.gpsData.latitude, fvu.gpsData.longitude];\n\t\t\t};\n\t\t},\n\t\tfvuHeading() {\n\t\t\treturn fvu => {\n\t\t\t\tif (!fvu) return null;\n\t\t\t\tif (!(\"gpsData\" in fvu) || !(\"heading\" in fvu.gpsData)) return null;\n\t\t\t\treturn fvu.gpsData.heading;\n\t\t\t};\n\t\t},\n\t\tbyIdentifier(state) {\n\t\t\treturn fvuId => {\n\t\t\t\treturn state.fvus[fvuId] ? { ...state.fvus[fvuId] } : null;\n\t\t\t};\n\t\t}\n\t}\n};\n\nfunction getFvuId(fvu) {\n\treturn (\n\t\tfvu.fvuId ||\n\t\t[fvu.device, fvu.serial]\n\t\t\t.filter(k => !!k)\n\t\t\t.map(s => s.trim())\n\t\t\t.join(\"/\")\n\t);\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"search-input-container\"},[(_vm.tooltip)?_c('tooltip',{staticClass:\"tooltip\",attrs:{\"text\":_vm.tooltip}},[_c('input',{staticClass:\"input\",attrs:{\"type\":\"search\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!!_vm.value && _vm.value != ''),expression:\"!!value && value != ''\"}],staticClass:\"button square button--clear-input button--ghost button--ghost-hover button--icon-only\",on:{\"click\":function($event){return _vm.$emit('input', '')}}},[_c('i',{staticClass:\"fas fa-times\"})])]):_c('div',{staticClass:\"div\"},[_c('input',{staticClass:\"input\",attrs:{\"type\":\"search\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!!_vm.value && _vm.value != ''),expression:\"!!value && value != ''\"}],staticClass:\"button square button--clear-input button--ghost button--ghost-hover button--icon-only\",on:{\"click\":function($event){return _vm.$emit('input', '')}}},[_c('i',{staticClass:\"fas fa-times\"})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.search-input-container\n\ttooltip.tooltip(v-if=\"tooltip\" :text=\"tooltip\")\n\t\tinput.input(type=\"search\" :placeholder=\"placeholder\" :value=\"value\" @input=\"$emit('input', $event.target.value)\")\n\t\tbutton.button.square.button--clear-input.button--ghost.button--ghost-hover.button--icon-only(@click=\"$emit('input', '')\" v-show=\"!!value && value != ''\"): i.fas.fa-times\n\t.div(v-else)\n\t\tinput.input(type=\"search\" :placeholder=\"placeholder\" :value=\"value\" @input=\"$emit('input', $event.target.value)\")\n\t\tbutton.button.square.button--clear-input.button--ghost.button--ghost-hover.button--icon-only(@click=\"$emit('input', '')\" v-show=\"!!value && value != ''\"): i.fas.fa-times\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchInput.vue?vue&type=template&id=7dbe104b&scoped=true&lang=pug&\"\nimport script from \"./SearchInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchInput.vue?vue&type=style&index=0&id=7dbe104b&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7dbe104b\",\n null\n \n)\n\nexport default component.exports","const Features = {\r\n\tFEATURE_TEST: \"FEATURE_TEST\",\r\n\tFEATURE_TOTALSTATION: \"FEATURE_TOTALSTATION\",\r\n\tFEATURE_RSU_NEAR_NEIGHBOR: \"RSU_NEAR_NEIGHBOR\",\r\n\tDASHBOARD: \"DASHBOARD\",\r\n\tTIM_INDEX: \"TIM_INDEX\",\r\n\tLEGACY_TFR_ENTRY: \"LEGACY_TFR_ENTRY\",\r\n\tWORKER_PRESENCE: \"WORKER_PRESENCE\",\r\n\tRSU_NTCIP1218_CONFIG: \"RSU_NTCIP1218_CONFIG\",\r\n\tFLOOD_DSS: \"FLOOD_DSS\",\r\n\tFLEET_MANAGEMENT: \"FLEET_MANAGEMENT\"\r\n};\r\n\r\nexport default Features;\r\n","import Vue from \"vue\";\nimport envMethods from \"@/environment\";\n\nconst EnvAware = Vue.extend({ methods: { ...envMethods } });\n\nexport default EnvAware;\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=46fef1d7&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=46fef1d7&lang=stylus&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&id=1fb8acbe&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&id=1fb8acbe&lang=stylus&scoped=true&\"","import Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component({\n\tprops: {\n\t\tcloseOnEscapeKeyDown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t}\n})\nclass Closable extends Vue {\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tmounted() {\n\t\tif (this.closeOnEscapeKeyDown) {\n\t\t\tthis.keydown.bind(this);\n\t\t\twindow.addEventListener(\"keydown\", this.keydown);\n\t\t}\n\t}\n\n\tbeforeDestroy() {\n\t\tif (this.closeOnEscapeKeyDown)\n\t\t\twindow.removeEventListener(\"keydown\", this.keydown);\n\t}\n\n\tclose(e) {\n\t\tthis.$emit(\"close\", e);\n\t}\n\n\tkeydown(ev) {\n\t\tif (ev.keyCode == 27 && this.closeOnEscapeKeyDown) this.close();\n\t}\n}\nexport default Closable;\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\nimport TFMService from \"@/api/service\";\n\nconst MODULE_NAME = \"tsc\";\n\nconst MUTATION_TYPES = {\n\tADD_TSC: \"ADD_TSC\",\n\tSET_MANAGE_INFO: \"SET_MANAGE_INFO\",\n\tCLEAR_TSCS: \"CLEAR_TSCS\",\n\tUPDATE_TSC_DATA: \"UPDATE_TSC_DATA\"\n};\n\nconst ACTION_TYPES = {\n\tFETCH_TSC_METADATA: \"FETCH_METADATA\",\n\tFETCH_TSC_MANAGE_INFO: \"FETCH_MANAGE_INFO\",\n\tFETCH_ALL_DEVICES: \"FETCH_ALL_DEVICES\",\n\tFETCH_TSCS: \"FETCH_TSCS\"\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\n\tstate: {\n\t\ttscs: {},\n\t\tdevices: {},\n\t\tmanageInfo: {}\n\t},\n\n\tmutations: {\n\t\t[MUTATION_TYPES.ADD_TSC](state, payload) {\n\t\t\tconst pushDevice = r => {\n\t\t\t\t// create defaults\n\t\t\t\tconst device = Object.assign(\n\t\t\t\t\t{\n\t\t\t\t\t\tdeviceId: r.controllerid,\n\t\t\t\t\t\tdeviceName: r.description,\n\t\t\t\t\t\tmanageInfo: null,\n\t\t\t\t\t\t$deviceTypeId: 2\n\t\t\t\t\t},\n\t\t\t\t\tr\n\t\t\t\t);\n\t\t\t\tVue.set(state.devices, device.deviceId, device);\n\t\t\t};\n\t\t\tif (_.isEmpty(payload)) return;\n\t\t\tif (Array.isArray(payload)) {\n\t\t\t\t_.map(payload, pushDevice);\n\t\t\t} else {\n\t\t\t\tpushDevice(payload);\n\t\t\t}\n\t\t},\n\n\t\t[MUTATION_TYPES.SET_MANAGE_INFO](state, { id, data }) {\n\t\t\tVue.set(state.manageInfo, id, data);\n\t\t},\n\n\t\t[MUTATION_TYPES.UPDATE_TSC_DATA](state, { index, data }) {\n\t\t\tVue.set(state.devices, index, Object.assign(state.devices[index], data));\n\t\t},\n\n\t\t[MUTATION_TYPES.CLEAR_TSCS](state) {\n\t\t\tVue.set(state, \"devices\", {});\n\t\t}\n\t},\n\n\tactions: {\n\t\tasync [ACTION_TYPES.FETCH_TSC_MANAGE_INFO](context, { id }) {\n\t\t\tconst data = await TFMService.getTSCManageInfo(id);\n\t\t\tcontext.commit(MUTATION_TYPES.SET_MANAGE_INFO, { id, data });\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_TSC_METADATA](context, p) {\n\t\t\tconst index = context.getters.indexByIdentifier(p.id);\n\t\t\tif (index === -1) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tried to fetch TSC metadata for TSC with device ID ${p.id} but it didn't exist in the state (yet?).`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst data = {};\n\t\t\tdata[ACTION_TYPES.FETCH_TSC_METADATA + \"_start\"] = _.now();\n\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_TSC_DATA, { index, data });\n\n\t\t\treturn await Promise.all([\n\t\t\t\tcontext\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_TSC_MANAGE_INFO, p)\n\t\t\t\t\t.catch(err => console.warn(\"Found bad manage info for TSC\", p, err))\n\t\t\t]);\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_TSCS](context) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tAPI.getJson(API.ENDPOINTS.GET_TSC_BY_USER)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tif (json) {\n\t\t\t\t\t\t\tif (json.length === 1 && json[0].retCode == -1) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\"FETCH_TSCs Error: \" +\n\t\t\t\t\t\t\t\t\t\t(json[0].retMsg || \"Invalid server response.\")\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.CLEAR_TSCS);\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.ADD_TSC, json);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_ALL_DEVICES](context) {\n\t\t\treturn context.dispatch(ACTION_TYPES.FETCH_TSCS);\n\t\t}\n\t},\n\tgetters: {\n\t\tallDevices(state) {\n\t\t\treturn state.devices;\n\t\t},\n\n\t\tdevicePosition() {\n\t\t\treturn device => {\n\t\t\t\tif (device === null || device === void 0) return null;\n\t\t\t\tif (!(\"latitude\" in device) || !(\"longitude\" in device)) return null;\n\t\t\t\treturn [device.latitude, device.longitude];\n\t\t\t};\n\t\t},\n\n\t\tbyIdentifier(state) {\n\t\t\treturn identifier => {\n\t\t\t\treturn state.devices[identifier];\n\t\t\t};\n\t\t},\n\n\t\tmanageInfoByID(state) {\n\t\t\treturn id => state.manageInfo[id];\n\t\t},\n\n\t\tstatusMetadata() {\n\t\t\treturn () => {\n\t\t\t\treturn {};\n\t\t\t};\n\t\t},\n\n\t\tindexByIdentifier(state) {\n\t\t\treturn identifier => (state.devices[identifier] ? identifier : -1);\n\t\t}\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tooltip\",on:{\"mouseenter\":function($event){_vm.visible = true},\"mouseleave\":function($event){_vm.visible = false}}},[_vm._t(\"default\"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"tooltiptext\"},[_vm._v(_vm._s(_vm.text))])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.tooltip(@mouseenter=\"visible = true\" @mouseleave=\"visible = false\")\n\tslot\n\tspan.tooltiptext(v-show=\"visible\") {{ text }}\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tooltip.vue?vue&type=template&id=3d19847d&scoped=true&lang=pug&\"\nimport script from \"./Tooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./Tooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tooltip.vue?vue&type=style&index=0&id=3d19847d&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d19847d\",\n null\n \n)\n\nexport default component.exports","import _ from \"lodash\";\n\nconst DSRCmessage = {\n\tmessageTypes: (() => {\n\t\tconst messageTypes = [\n\t\t\t{\n\t\t\t\tslug: \"MAP\",\n\t\t\t\tid: 18,\n\t\t\t\tname: \"mapData\",\n\t\t\t\tdisplay: \"MAP data\",\n\t\t\t\tshortDisplay: \"MAP\",\n\t\t\t\texpectedFrequency: 1,\n\t\t\t\ttestable: true,\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"SPAT\",\n\t\t\t\tid: 19,\n\t\t\t\tname: \"signalPhaseAndTimingMessage\",\n\t\t\t\tdisplay: \"Signal Phase And Timing message\",\n\t\t\t\tshortDisplay: \"SPaT\",\n\t\t\t\texpectedFrequency: 10,\n\t\t\t\ttestable: true,\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"BSM\",\n\t\t\t\tid: 20,\n\t\t\t\tname: \"basicSafetyMessage\",\n\t\t\t\tdisplay: \"Basic Safety Message\",\n\t\t\t\tshortDisplay: \"BSM\",\n\t\t\t\ttestable: false,\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"CSR\",\n\t\t\t\tid: 21,\n\t\t\t\tname: \"commonSafetyRequest\",\n\t\t\t\tdisplay: \"Common Safety Request\",\n\t\t\t\tshortDisplay: \"CSR\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"EVA\",\n\t\t\t\tid: 22,\n\t\t\t\tname: \"emergencyVehicleAlert\",\n\t\t\t\tdisplay: \"Emergency Vehicle Alert\",\n\t\t\t\tshortDisplay: \"EVA\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"ICA\",\n\t\t\t\tid: 23,\n\t\t\t\tname: \"intersectionCollision\",\n\t\t\t\tdisplay: \"Intersection Collision Alert\",\n\t\t\t\tshortDisplay: \"ICA\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"NMEA\",\n\t\t\t\tid: 24,\n\t\t\t\tname: \"nmeaCorrections\",\n\t\t\t\tdisplay: \"NMEA corrections\",\n\t\t\t\tshortDisplay: \"NMEA\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"PDM\",\n\t\t\t\tid: 25,\n\t\t\t\tname: \"probeDataManagement\",\n\t\t\t\tdisplay: \"Probe Data Management\",\n\t\t\t\tshortDisplay: \"PDM\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"PVD\",\n\t\t\t\tid: 26,\n\t\t\t\tname: \"probeVehicleData\",\n\t\t\t\tdisplay: \"Probe Vehicle Data\",\n\t\t\t\tshortDisplay: \"PVD\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"RSA\",\n\t\t\t\tid: 27,\n\t\t\t\tname: \"roadSideAlert\",\n\t\t\t\tdisplay: \"Road Side Alert\",\n\t\t\t\tshortDisplay: \"RSA\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"RTCM\",\n\t\t\t\tid: 28,\n\t\t\t\tname: \"rtcmCorrections\",\n\t\t\t\tdisplay: \"RTCM corrections\",\n\t\t\t\tshortDisplay: \"RTCM\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"SRM\",\n\t\t\t\tid: 29,\n\t\t\t\tname: \"signalRequestMessage\",\n\t\t\t\tdisplay: \"Signal Request Message\",\n\t\t\t\tshortDisplay: \"SRM\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"SSM\",\n\t\t\t\tid: 30,\n\t\t\t\tname: \"signalStatusMessage\",\n\t\t\t\tdisplay: \"Signal Status Message\",\n\t\t\t\tshortDisplay: \"SSM\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"TIM\",\n\t\t\t\tid: 31,\n\t\t\t\tname: \"travelerInformation\",\n\t\t\t\tdisplay: \"Traveler Information Message\",\n\t\t\t\tshortDisplay: \"TIM\",\n\t\t\t\texpectedFrequency: 1,\n\t\t\t\ttestable: true,\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"PSM\",\n\t\t\t\tid: 32,\n\t\t\t\tname: \"personalSafetyMessage\",\n\t\t\t\tdisplay: \"Personal Safety Message\",\n\t\t\t\tshortDisplay: \"PSM\",\n\t\t\t\tstandard: \"J2735\"\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tslug: \"WSA\",\n\t\t\t\tid: \"WSA\",\n\t\t\t\tname: \"waveServiceAdvertisement\",\n\t\t\t\tdisplay: \"WAVE Service Advertisement\",\n\t\t\t\tshortDisplay: \"WSA\",\n\t\t\t\ttestable: false,\n\t\t\t\tstandard: \"1609.3\"\n\t\t\t}\n\t\t];\n\n\t\tconst ret = {};\n\t\tvar type;\n\t\twhile ((type = messageTypes.shift())) {\n\t\t\tret[type.id] = type;\n\t\t\tret[type.slug] = ret[type.id];\n\t\t\tret[type.name] = ret[type.id];\n\t\t\tret[type.shortDisplay] = ret[type.id];\n\t\t}\n\n\t\treturn ret;\n\t})(),\n\n\tget: getDSRCMessageType,\n\tgetExpectedFrequency: getDSRCMessageExpectedFrequency,\n\tgetWeight: getDSRCMessageWeight\n};\nexport default DSRCmessage;\n\nexport function getDSRCMessageType(inP) {\n\tif (_.isObject(inP)) inP = inP.slug || inP.id || inP.name;\n\treturn DSRCmessage.messageTypes[inP];\n}\n\nexport function getDSRCMessageExpectedFrequency(inP) {\n\tconst typeData = getDSRCMessageType(inP);\n\treturn typeData && typeData.expectedFrequency;\n}\n\nexport function getDSRCMessageWeight(srcKey, msgType) {\n\tvar ret;\n\tconst expectedFrequency = getDSRCMessageExpectedFrequency(msgType);\n\tswitch (srcKey) {\n\t\tcase \"frequencyChecker\":\n\t\t\tif (expectedFrequency) {\n\t\t\t\tret = Math.max(1, expectedFrequency / 2);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"partialParser\":\n\t\tdefault:\n\t\t\tret = 1;\n\t\t\tbreak;\n\t}\n\treturn ret;\n}\n","import { isLocal } from \"@/environment\";\n\nexport default function staticUrl(suffix) {\n\tconst prefix = isLocal ? \"/\" : \"/Content/Client/\";\n\treturn prefix + suffix;\n}\n","import _ from \"lodash\";\nimport API from \"@/api\";\nimport staticUrl from \"@/static\";\n\n// NOTE: This object may be split out into multiple smaller objects as it grows.\nclass TFMService {\n\tasync getTotalStations() {\n\t\tconst rawDevices = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_TOTAL_STATIONS_DEVICES\n\t\t);\n\t\tconst rawData = await API.fetchJson(API.ENDPOINTS.GET_TOTAL_STATIONS);\n\t\tconst totalStations = _.chain(rawData)\n\t\t\t.map(ts => ({\n\t\t\t\ttotalStationId: ts.totalStationId,\n\t\t\t\tdescription: ts.totalStationName,\n\t\t\t\tlocationDesc: ts.locationDescription,\n\t\t\t\tdeviceCount: ts.deviceCount,\n\t\t\t\tnumFunctional: ts.deviceFunctionalCount,\n\t\t\t\tisAllFunctional: ts.deviceCount == ts.deviceFunctionalCount,\n\t\t\t\tlatitude: ts.latitude,\n\t\t\t\tlongitude: ts.longitude,\n\t\t\t\tdevices: {},\n\t\t\t\tcalculatedTSStatus: ts.calculatedTSStatus,\n\t\t\t\ttotalStationSCRStatus: ts.totalStationSCRStatus,\n\t\t\t\ttotalStationsStatus: ts.totalStationStatus,\n\t\t\t\ttotalStationSCRId: ts.totalStationSCRId,\n\t\t\t\ttotalStationOperatorId: ts.operatorId,\n\t\t\t\ttotalStationOwnerId: ts.ownerId\n\t\t\t}))\n\t\t\t.keyBy(\"totalStationId\")\n\t\t\t.value();\n\t\t_.each(rawDevices, d => {\n\t\t\ttotalStations[d.totalStationId].devices[d.deviceId] = Object.assign(\n\t\t\t\t{\n\t\t\t\t\t/** stored proc returns 0 for proposed, 1 for deployed and 2 for in maintenance devices */\n\t\t\t\t\t$deviceTypeId: d.deviceTypeId,\n\t\t\t\t\tisSCRDraft: d.deviceStatus == 0,\n\t\t\t\t\tisDeployed: d.deviceStatus == 1,\n\t\t\t\t\tisInMaintenance: d.deviceStatus == 2,\n\t\t\t\t\tprojectId: d.ProjectId\n\t\t\t\t},\n\t\t\t\td\n\t\t\t);\n\t\t});\n\t\t_.each(totalStations, function(ts) {\n\t\t\tlet deviceCount = _.size(ts.devices);\n\t\t\tlet numFunctional = _.size(_.reject(ts.devices, { isDeployed: false }));\n\t\t\tlet numDysfunctional = _.size(_.reject(ts.devices, { isDeployed: true }));\n\t\t\tlet totalStationSCRId = ts.totalStationSCRId;\n\t\t\tObject.assign(ts, {\n\t\t\t\tdeviceCount: deviceCount,\n\t\t\t\tnumFunctional: numFunctional,\n\t\t\t\tnumDysfunctional: numDysfunctional,\n\t\t\t\tisAllFunctional: deviceCount === numFunctional,\n\t\t\t\ttotalStationSCRId: totalStationSCRId\n\t\t\t});\n\t\t});\n\t\treturn totalStations;\n\t}\n\n\tasync getIpAddressByDeviceId(deviceId) {\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_IP_ADDRESS_BY_DEVICE_ID + `?deviceId=${deviceId}`\n\t\t);\n\t\tif (!data || data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync fetchClientsByUser() {\n\t\tconst data = await API.fetchJson(API.ENDPOINTS.GET_CLIENT_BY_USER_LIST);\n\t\tif (data.length < 1) return null;\n\t\treturn data;\n\t}\n\n\tasync getDeviceTypes() {\n\t\tconst rawDeviceTypes = await API.fetchJson(API.ENDPOINTS.GET_DEVICE_TYPES);\n\t\tconst m = _.map(rawDeviceTypes, dt => {\n\t\t\treturn Object.assign(dt, { iconURL: staticUrl(dt.iconURL) });\n\t\t});\n\t\treturn _.keyBy(m, \"deviceTypeId\");\n\t}\n\n\tasync getRSUManageInfo(deviceId) {\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_RSU_MANAGE_INFO + `?deviceId=${deviceId}`\n\t\t);\n\t\treturn data;\n\t}\n\n\tasync getTotalStationManageInfo(totalStationId) {\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_TOTALSTATION_MANAGE_INFO +\n\t\t\t\t`?totalStationId=${totalStationId}`\n\t\t);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync getESSManageInfo(deviceId) {\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_ESS_MANAGE_INFO + `?deviceId=${deviceId}`\n\t\t);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync getTSCManageInfo(deviceId) {\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.GET_TSC_MANAGE_INFO + `?deviceId=${deviceId}`\n\t\t);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync doCommandProxyAction(deviceId, actionId, jobKey, srmId, srmType) {\n\t\t// TODO: add options?\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.COMMAND_PROXY_SCHEDULE +\n\t\t\t\t`?deviceId=${deviceId}&actionId=${actionId}&jobKey=${jobKey}&info=${srmId}&srmType=${srmType}`,\n\t\t\tnull,\n\t\t\terror => {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t);\n\t\t// console.debug(\"doCommandProxyAction data\", data);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync doCommandProxyActionTest(\n\t\tdeviceId,\n\t\tactionId,\n\t\tjobKey,\n\t\ttimId,\n\t\tlabId,\n\t\ttestIP,\n\t\textInfo\n\t) {\n\t\t// TODO: add options?\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.COMMAND_PROXY_SCHEDULE_TEST +\n\t\t\t\t`?deviceId=${deviceId}&actionId=${actionId}&jobKey=${jobKey}&info=${timId}&labId=${labId}&testIP=${testIP}&extInfo=${extInfo}`,\n\t\t\t{},\n\t\t\te => {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t);\n\t\t// console.debug(\"doCommandProxyAction data\", data);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\tasync doCommandProxyLiteralAction(\n\t\tdeviceId,\n\t\tactionId,\n\t\tjobKey,\n\t\tmsgInfo,\n\t\tlabId,\n\t\ttestIP,\n\t\textInfo\n\t) {\n\t\t// TODO: add options?\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.COMMAND_PROXY_LITERAL_ACTION +\n\t\t\t\t`?deviceId=${deviceId}&actionId=${actionId}&jobKey=${jobKey}&msgInfo=${msgInfo}&labId=${labId}&testIP=${testIP}&extInfo=${extInfo}`,\n\t\t\t{},\n\t\t\te => {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t);\n\t\tif (data.length < 1) return null;\n\t\treturn data[0];\n\t}\n\n\t// This is just for demo purposes.\n\tasync doRsuConfig1218LiteralAction(deviceId, actionId, jobKey, msgInfo) {\n\t\t// TODO: add options?\n\t\tconst data = await API.fetchJson(\n\t\t\tAPI.ENDPOINTS.RSU_CONFIG_1218_LITERAL_ACTION +\n\t\t\t\t`?deviceId=${deviceId}&actionId=${actionId}&jobKey=${jobKey}&msgInfo=${msgInfo}`,\n\t\t\t{},\n\t\t\te => {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t);\n\n\t\tif (data.length < 1) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn data[0];\n\t}\n\n\tasync getDashboardStatusTs(tsStatusId) {\n\t\tlet route = API.ENDPOINTS.GET_STATUS_TS;\n\t\tif (!_.isNil(tsStatusId)) {\n\t\t\troute += `/${tsStatusId}`;\n\t\t}\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getDashboardStatusRsu(deviceStatusId) {\n\t\tlet route = API.ENDPOINTS.GET_STATUS_RSU;\n\t\tif (!_.isNil(deviceStatusId)) {\n\t\t\troute += `/${deviceStatusId}`;\n\t\t}\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getDashboardStatusTsc(deviceStatusId) {\n\t\tlet route = API.ENDPOINTS.GET_STATUS_TSC;\n\t\tif (!_.isNil(deviceStatusId)) {\n\t\t\troute += `/${deviceStatusId}`;\n\t\t}\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getDashboardStatusEss(deviceStatusId) {\n\t\tlet route = API.ENDPOINTS.GET_STATUS_ESS;\n\t\tif (!_.isNil(deviceStatusId)) {\n\t\t\troute += `/${deviceStatusId}`;\n\t\t}\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getUnverifiedHeadings(agency) {\n\t\tlet route = API.ENDPOINTS.UNVERIFIED_HEADINGS;\n\t\tif (!_.isNil(agency)) {\n\t\t\troute += `/?agency=${agency}`;\n\t\t}\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync setHeadingSlice(\n\t\tagency,\n\t\tdynamicMessageSignId,\n\t\theadingSlice,\n\t\theadingVerified\n\t) {\n\t\tlet route = API.ENDPOINTS.UNVERIFIED_HEADINGS;\n\t\tconst data = {\n\t\t\tagency,\n\t\t\tdynamicMessageSignId,\n\t\t\theadingSlice,\n\t\t\theadingVerified\n\t\t};\n\t\tconst response = await API.postJson(route, data, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn response;\n\t}\n\n\tasync getFloodData() {\n\t\tlet route = API.ENDPOINTS.GET_FLOOD_LIKELIHOOD;\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getWeatherStationsByArea(\n\t\ttopLeftLat,\n\t\ttopLeftLong,\n\t\tbottomRightLat,\n\t\tbottomRightLong\n\t) {\n\t\tlet route = API.ENDPOINTS.GET_WEATHERSTATIONS_BY_AREA;\n\t\troute += `/?topLeftLat=${topLeftLat}&topLeftLong=${topLeftLong}&bottomRightLat=${bottomRightLat}&bottomRightLong=${bottomRightLong}`;\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n\n\tasync getStreamGagesByByArea(\n\t\ttopLeftLat,\n\t\ttopLeftLong,\n\t\tbottomRightLat,\n\t\tbottomRightLong\n\t) {\n\t\tlet route = API.ENDPOINTS.GET_STREAMGAGES_BY_AREA;\n\t\troute += `/?topLeftLat=${topLeftLat}&topLeftLong=${topLeftLong}&bottomRightLat=${bottomRightLat}&bottomRightLong=${bottomRightLong}`;\n\t\tconst data = await API.fetchJson(route, {}, e => {\n\t\t\tthrow e;\n\t\t});\n\t\treturn data;\n\t}\n}\n\nexport default new TFMService();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloodDssSidebar.vue?vue&type=style&index=0&id=8a01f7c2&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloodDssSidebar.vue?vue&type=style&index=0&id=8a01f7c2&lang=stylus&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tooltip\",on:{\"mouseenter\":function($event){_vm.visible = true},\"mouseleave\":function($event){_vm.visible = false}}},[_vm._t(\"default\"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],class:_vm.text.length > 30 ? 'textFormat' : 'tooltiptext'},[_c('p',[_vm._v(_vm._s(_vm.text))])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.tooltip(@mouseenter=\"visible = true\" @mouseleave=\"visible = false\")\n\tslot\n\tspan(v-show=\"visible\" :class=\"text.length > 30 ? 'textFormat' : 'tooltiptext'\")\n\t\tp {{text}}\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InformationTooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InformationTooltip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InformationTooltip.vue?vue&type=template&id=6f3e5bd0&scoped=true&lang=pug&\"\nimport script from \"./InformationTooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./InformationTooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InformationTooltip.vue?vue&type=style&index=0&id=6f3e5bd0&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f3e5bd0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('l-map',{ref:\"map\",attrs:{\"center\":_vm.mapCenter,\"zoom\":_vm.mapZoom,\"options\":_vm.options},on:{\"update:center\":_vm.updateCenter,\"update:zoom\":_vm.updateZoom,\"click\":function($event){return _vm.$emit('click', $event)},\"contextmenu\":_vm.onContextMenu,\"baselayerchange\":function($event){return _vm.onBaseLayerChange($event)}}},[_c('MapPanControl',{class:_vm.panControlNeedsBuffer ? 'fvu-buffered' : '',on:{\"pan-control-click\":_vm.handlePan}}),_c('l-control-layers',{ref:\"layerControl\"}),_vm._l((_vm.tileProviders),function(tileProvider){return _c('l-tile-layer',{key:tileProvider.name,ref:'tilelayer__' + tileProvider.name,refInFor:true,attrs:{\"name\":tileProvider.name,\"visible\":tileProvider.visible,\"url\":tileProvider.url,\"options\":_vm.mergeOptions(tileProvider.options),\"attribution\":tileProvider.attribution,\"layer-type\":\"base\",\"layerType\":\"base\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}})}),_c('l-control-scale',{attrs:{\"position\":\"bottomleft\",\"imperial\":true,\"metric\":true}}),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nl-map(\n\tref=\"map\"\n\t:center=\"mapCenter\"\n\t:zoom=\"mapZoom\"\n\t@update:center=\"updateCenter\"\n\t@update:zoom=\"updateZoom\"\n\t:options=\"options\"\n\t@click=\"$emit('click', $event)\"\n\t@contextmenu=\"onContextMenu\"\n\t@baselayerchange=\"onBaseLayerChange($event)\"\n)\n\tMapPanControl(\n\t\t@pan-control-click=\"handlePan\"\n\t\t:class=\"panControlNeedsBuffer ? 'fvu-buffered' : ''\"\n\t)\n\tl-control-layers(ref=\"layerControl\")\n\tl-tile-layer(\n\t\tv-for=\"tileProvider in tileProviders\"\n\t\t:key=\"tileProvider.name\"\n\t\t:ref=\"'tilelayer__' + tileProvider.name\"\n\t\t:name=\"tileProvider.name\"\n\t\t:visible=\"tileProvider.visible\"\n\t\t:url=\"tileProvider.url\"\n\t\t:options=\"mergeOptions(tileProvider.options)\"\n\t\t:attribution=\"tileProvider.attribution\"\n\t\tlayer-type=\"base\"\n\t\tlayerType=\"base\"\n\t\t@click=\"$emit('click', $event)\"\n\t)\n\tl-control-scale(\n\t\tposition=\"bottomleft\"\n\t\t:imperial=\"true\"\n\t\t:metric=\"true\"\n\t)\n\tslot\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TfmMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TfmMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TfmMap.vue?vue&type=template&id=313dbf7e&lang=pug&\"\nimport script from \"./TfmMap.vue?vue&type=script&lang=js&\"\nexport * from \"./TfmMap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TfmMap.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import _ from \"lodash\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nclass ViewportAware extends Vue {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.viewportData = {};\n\n\t\tthis.viewportData.scrollOffsets = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\n\t\tthis.viewportData.viewportSize = {\n\t\t\tw: 0,\n\t\t\th: 0\n\t\t};\n\t}\n\n\tmounted() {\n\t\tthis.onScroll();\n\t\tthis.onResize();\n\n\t\tthis.debouncedOnScroll = _.debounce(this.onScroll, 1000, true);\n\n\t\twindow.addEventListener(\"scroll\", this.debouncedOnScroll);\n\t\twindow.addEventListener(\"resize\", this.onResize);\n\t}\n\n\tbeforeDestroy() {\n\t\twindow.removeEventListener(\"scroll\", this.debouncedOnScroll);\n\t\twindow.removeEventListener(\"resize\", this.onResize);\n\t}\n\n\tonScroll() {\n\t\t// Update scrollOffsets\n\t\tthis.viewportData.scrollOffsets.x = window.pageXOffset;\n\t\tthis.viewportData.scrollOffsets.y = window.pageYOffset;\n\t}\n\n\tonResize() {\n\t\t// console.debug(\"ViewportAware.onResize():\", this);\n\t\t// Update viewportSize\n\t\tthis.viewportData.viewportSize.w = window.innerWidth;\n\t\tthis.viewportData.viewportSize.h = window.innerHeight;\n\t}\n}\n\nexport default ViewportAware;\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainHamburgerMenu.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainHamburgerMenu.vue?vue&type=style&index=0&lang=stylus&\"","var render, staticRenderFns\nimport script from \"./Default.vue?vue&type=script&lang=js&\"\nexport * from \"./Default.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Window.vue?vue&type=style&index=0&id=365eb00a&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Window.vue?vue&type=style&index=0&id=365eb00a&lang=stylus&scoped=true&\"","import _ from \"lodash\";\nexport default class SpatVerificationData {\n\tid = -1;\n\n\ttimeReceived = \"\";\n\n\t_dateTimeReceived = new Date();\n\n\tget dateTimeReceived() {\n\t\treturn this._dateTimeReceived;\n\t}\n\n\tset dateTimeReceived(value) {\n\t\tthis._dateTimeReceived = value;\n\t\tthis.timeReceived = SpatVerificationData.dateToTimecode(\n\t\t\tthis._dateTimeReceived\n\t\t);\n\t\tthis.frameNumber = Math.floor(this._dateTimeReceived.getTime() / 100) * 100;\n\t}\n\n\tframeNumber = 0;\n\n\tipAddress = \"\";\n\n\tminTimeToChange = {\n\t\t1: \"\",\n\t\t2: \"\",\n\t\t3: \"\",\n\t\t4: \"\",\n\t\t5: \"\",\n\t\t6: \"\",\n\t\t7: \"\",\n\t\t8: \"\",\n\t\t9: \"\",\n\t\t10: \"\",\n\t\t11: \"\",\n\t\t12: \"\",\n\t\t13: \"\",\n\t\t14: \"\",\n\t\t15: \"\",\n\t\t16: \"\"\n\t};\n\n\tminEndTime = \"\";\n\n\ttimeOfChange = {\n\t\t1: \"\",\n\t\t2: \"\",\n\t\t3: \"\",\n\t\t4: \"\",\n\t\t5: \"\",\n\t\t6: \"\",\n\t\t7: \"\",\n\t\t8: \"\",\n\t\t9: \"\",\n\t\t10: \"\",\n\t\t11: \"\",\n\t\t12: \"\",\n\t\t13: \"\",\n\t\t14: \"\",\n\t\t15: \"\",\n\t\t16: \"\"\n\t};\n\n\tisFake = false;\n\n\tlights = {\n\t\t1: \"C\",\n\t\t2: \"C\",\n\t\t3: \"C\",\n\t\t4: \"C\",\n\t\t5: \"C\",\n\t\t6: \"C\",\n\t\t7: \"C\",\n\t\t8: \"C\",\n\t\t9: \"C\",\n\t\t10: \"C\",\n\t\t11: \"C\",\n\t\t12: \"C\",\n\t\t13: \"C\",\n\t\t14: \"C\",\n\t\t15: \"C\",\n\t\t16: \"C\"\n\t};\n\n\toriginalData = {};\n\n\tconstructor(args) {\n\t\tif (!args) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (args[\"id\"]) {\n\t\t\tthis.id = args[\"id\"];\n\t\t}\n\n\t\tif (args[\"timeReceived\"]) {\n\t\t\tconst timeReceived = args[\"timeReceived\"];\n\t\t\tlet newDateTimeReceived = new Date();\n\t\t\tnewDateTimeReceived.setHours(timeReceived.substr(0, 2));\n\t\t\tnewDateTimeReceived.setMinutes(timeReceived.substr(3, 2));\n\t\t\tnewDateTimeReceived.setSeconds(timeReceived.substr(6, 2));\n\t\t\tnewDateTimeReceived.setMilliseconds(timeReceived.substr(9, 3));\n\t\t\tthis.dateTimeReceived = newDateTimeReceived;\n\t\t}\n\n\t\tif (args[\"minEndTime\"]) {\n\t\t\tthis.minEndTime = args[\"minEndTime\"];\n\t\t}\n\n\t\t// Merge the lights, minTimeToChange, timeOfChange\n\t\tlet index = 1;\n\t\twhile (index < 17) {\n\t\t\tif (args[\"lights\"] && args[\"lights\"][index]) {\n\t\t\t\tthis.lights[index] = args[\"lights\"][index].toString();\n\t\t\t}\n\t\t\tif (args[\"minTimeToChange\"] && args[\"minTimeToChange\"][index]) {\n\t\t\t\tthis.minTimeToChange[index] = args[\"minTimeToChange\"][index].toString();\n\t\t\t}\n\t\t\tif (args[\"timeOfChange\"] && args[\"timeOfChange\"][index]) {\n\t\t\t\tthis.timeOfChange[index] = args[\"timeOfChange\"][index].toString();\n\t\t\t}\n\t\t\tindex++;\n\t\t}\n\t}\n\n\t/**\n\t * Converts dSeconds past the hour to time string.\n\t * @param tenthsSeconds (number)\n\t * @param dateTimeReceived (Date)\n\t * @returns string\n\t */\n\t// TODO: Double check this conversion.\n\tconvertTenthsSecondsPastHour = function(tenthsSeconds, dateTimeReceived) {\n\t\tconst secondsPastHour = tenthsSeconds / 10;\n\n\t\tconst minuteOfHour = secondsPastHour / 60;\n\t\tconst minuteOfHourAbs = Math.floor(minuteOfHour);\n\n\t\tconst secondOfHour = (minuteOfHour - minuteOfHourAbs) * 60;\n\t\tconst secondOfHourAbs = Math.floor(secondOfHour);\n\n\t\tconst millisOfHour = Math.floor((secondOfHour - secondOfHourAbs) * 100);\n\n\t\tlet dateTimeChange = new Date(dateTimeReceived.getTime());\n\t\tconst dateTimeReceivedSecondsPastHour =\n\t\t\tdateTimeChange.getMinutes() * 60 + dateTimeChange.getSeconds();\n\t\tif (secondsPastHour < dateTimeReceivedSecondsPastHour) {\n\t\t\tdateTimeChange.setMinutes(minuteOfHourAbs);\n\t\t\tdateTimeChange.setHours(dateTimeChange.getHours() + 1);\n\t\t} else {\n\t\t\tdateTimeChange.setMinutes(minuteOfHourAbs);\n\t\t}\n\n\t\tdateTimeChange.setSeconds(Math.floor(secondOfHourAbs));\n\t\tdateTimeChange.setMilliseconds(millisOfHour);\n\t\treturn SpatVerificationData.dateToTimecode(dateTimeChange);\n\t};\n\n\t/**\n\t * Converts Date object to hours, minutes, seconds, milliseconds string\n\t * @param dateTime (Date)\n\t */\n\tstatic dateToTimecode = function(dateTime) {\n\t\tif (!(dateTime instanceof Date)) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tlet hours = dateTime.getHours().toString();\n\t\tif (hours.length === 1) {\n\t\t\thours = \"0\" + hours;\n\t\t}\n\n\t\tlet minutes = dateTime.getMinutes().toString();\n\t\tif (minutes.length === 1) {\n\t\t\tminutes = \"0\" + minutes;\n\t\t}\n\n\t\tlet seconds = dateTime.getSeconds().toString();\n\t\tif (seconds.length === 1) {\n\t\t\tseconds = \"0\" + seconds;\n\t\t}\n\n\t\tlet millis = dateTime.getMilliseconds().toString();\n\t\tif (millis.length === 1) {\n\t\t\tmillis = \"00\" + millis;\n\t\t}\n\t\tif (millis.length === 2) {\n\t\t\tmillis = \"0\" + millis;\n\t\t}\n\t\treturn `${hours}:${minutes}:${seconds}.${millis}`;\n\t};\n\n\t/**\n\t * Determines signal color from movement state value.\n\t * @param movementState (number)\n\t */\n\tgetSignalColorFromMovementState = function(movementState) {\n\t\tif (this.signalStateColors.red.indexOf(movementState) > -1) {\n\t\t\treturn \"R\";\n\t\t}\n\t\tif (this.signalStateColors.green.indexOf(movementState) > -1) {\n\t\t\treturn \"G\";\n\t\t}\n\t\tif (this.signalStateColors.yellow.indexOf(movementState) > -1) {\n\t\t\treturn \"Y\";\n\t\t}\n\t\treturn \"C\";\n\t};\n\n\t/**\n\t * Static method to create new SpatVerificationData object from TSC MQTT message.\n\t * @param mqttMessage (object)\n\t *\n\t * @returns SpatVerificationData\n\t */\n\tstatic parseTscMessage(mqttMessage) {\n\t\tconst payload = JSON.parse(mqttMessage[\"message\"][\"payloadString\"]);\n\t\tconst phaseList = payload[\"SpatFields\"][\"PhaseList\"];\n\t\tlet newData = new SpatVerificationData();\n\t\tnewData.dateTimeReceived = new Date(Date.parse(payload.Timestamp));\n\t\tnewData.id = payload[\"SpatFields\"][\"MsgSeqCounter\"];\n\t\tnewData.ipAddress = payload[\"Ip\"];\n\t\tnewData.originalData = payload;\n\t\t_.each(phaseList, phase => {\n\t\t\tnewData.minTimeToChange[\n\t\t\t\tphase.PhaseNum\n\t\t\t] = phase.VehMinTimeToChange.toString();\n\t\t\tnewData.lights[phase.PhaseNum] = phase.PhaseStatusLightStr;\n\t\t});\n\t\treturn newData;\n\t}\n\n\t/**\n\t * Static method to create new SpatVerificationData object from RSU MQTT message.\n\t * @param mqttMessage (object)\n\t *\n\t * @return SpatVerificationData\n\t */\n\tstatic parseRsuMessage(mqttMessage) {\n\t\tconst payload = JSON.parse(mqttMessage[\"message\"][\"payloadString\"]);\n\t\t// TODO: How do we handle more than one intersection?? SpatFields->Intersections is actually an array.\n\t\t// IntersectionId is contained within each Intersection object, and we should\n\t\t// use that to determine the particular intersection to parse.\n\t\tconst movementStates =\n\t\t\tpayload[\"SpatFields\"][\"Intersections\"][0][\"MovementStates\"];\n\t\tlet newData = new SpatVerificationData();\n\t\tnewData.dateTimeReceived = new Date(Date.parse(payload.Timestamp));\n\t\tnewData.id =\n\t\t\tpayload[\"SpatFields\"][\"Intersections\"][0][\"MessageCount\"] || \"\";\n\t\tnewData.originalData = payload;\n\t\tnewData.ipAddress = payload[\"Ip\"] || \"\";\n\t\t_.each(movementStates, movementState => {\n\t\t\tconst signalGroupId = movementState[\"SignalGroupId\"];\n\n\t\t\t// Determine min end time\n\t\t\tconst movementMinEndTime =\n\t\t\t\tmovementState[\"MovementEvents\"][0][\"MinEndTime\"];\n\t\t\tnewData.timeOfChange[\n\t\t\t\tsignalGroupId\n\t\t\t] = newData.convertTenthsSecondsPastHour(\n\t\t\t\tmovementMinEndTime,\n\t\t\t\tnewData.dateTimeReceived\n\t\t\t);\n\n\t\t\t// Determine signal color\n\t\t\tconst movementPhaseState =\n\t\t\t\tmovementState[\"MovementEvents\"][0][\"MovementPhaseState\"];\n\t\t\tnewData.lights[signalGroupId] = newData.getSignalColorFromMovementState(\n\t\t\t\tmovementPhaseState\n\t\t\t);\n\t\t});\n\t\treturn newData;\n\t}\n\n\t/**\n\t * Movement state values for each signal color.\n\t * These come from SAE INTERNATIONAL J2735™ MAR2016 Page 161\n\t */\n\tsignalStateColors = {\n\t\tred: [2, 3],\n\t\tgreen: [4, 5, 6],\n\t\tyellow: [7, 8, 9]\n\t};\n}\n","export default {\r\n\tGET_ESS_REPORT: \"EssReporting/GetEssReport\",\r\n\tGET_LATEST_ESS_READINGS: \"EssReporting/GetLatestEssReadings\",\r\n\r\n\tMQTT_PUBLISH: \"Mqtt/Publish\",\r\n\r\n\tCOMMAND_PROXY_SCHEDULE: \"CommandProxyTask/Schedule\",\r\n\tCOMMAND_PROXY_SCHEDULE_TEST: \"CommandProxyTask/ScheduleTest\",\r\n\tCOMMAND_PROXY_LITERAL_ACTION: \"CommandProxyTask/ScheduleLiteral\",\r\n\tRSU_CONFIG_1218_LITERAL_ACTION: \"DeviceRsuConfig/ScheduleLiteral\",\r\n\r\n\tVALIDATE_TIM: \"CVMessages/GenerateTIMPayload\",\r\n\r\n\tUPDATE_DEPLOYMENT_INFO: \"DeviceMeta/UpdateDeviceDeploymentInfo\",\r\n\tUPDATE_DEVICECHECK_INFO: \"DeviceMeta/UpdateDeviceCheckInfo\",\r\n\tUPDATE_SUPPORT_CONTACT_INFO: \"DeviceMeta/UpdateSupportContactInfo\",\r\n\r\n\tGET_DEVICES_STATUSES: \"DeviceMeta/GetDeviceStatuses\",\r\n\tGET_TOTALSTATION_HISTORY: \"DeviceMeta/GetTotalStationStatusHistory\",\r\n\tGET_DEVICE_HISTORY: \"DeviceMeta/GetDeviceStatusHistory\",\r\n\tGET_DEVICE_NEAR_NEIGHBOR_INFO: \"DeviceMeta/GetDeviceNearNeighborInfo\",\r\n\tGET_ESS_OPERATIONAL_DATA: \"DeviceMeta/GetESSOpsData\",\r\n\tGET_RSU_DEVICES: \"DeviceMeta/GetRSUs\",\r\n\tGET_ESS_DEVICES: \"DeviceMeta/GetESSs\",\r\n\tGET_RSU_BY_USER: \"DeviceMeta/GetRSUsByUserId\",\r\n\tGET_TSC_BY_USER: \"DeviceMeta/GetTSCsByUserId\",\r\n\tGET_ESS_BY_USER: \"DeviceMeta/GetESSsByUserId\",\r\n\tGET_RSU_DSRC_BY_USER: \"DeviceMeta/GetRSUDSRCsByUserId\",\r\n\tGET_RSU_RADIO_NEIGHBORS_BY_USER: \"TfmVerification/RSURadioNeighbors\",\r\n\tGET_MESSAGES_BROADCAST_BY_DEVICE: \"DeviceMeta/GetMessagesBroadcastByDevice\",\r\n\tGET_RSU_REGION_AND_INTERSECTION: \"DeviceMeta/GetRSURegionAndIntersection\",\r\n\tGET_TOTAL_STATIONS: \"DeviceMeta/GetTotalStations\",\r\n\tGET_TOTAL_STATIONS_DEVICES: \"DeviceMeta/GetTotalStationsDevices\",\r\n\tGET_DEVICE_TYPES: \"DeviceMeta/GetDeviceTypes\",\r\n\tGET_ACTIVE_TIMS_BY_DEVICE_ID: \"DeviceMeta/SelectActiveTIMsByDeviceId\",\r\n\tGET_CLIENT_BY_USER_LIST: \"DeviceMeta/GetClientByUserList\",\r\n\tGET_CREDENTIAL_TYPE_LIST: \"DeviceMeta/GetCredentialTypeList\",\r\n\tSELECT_LIKELY_INTERSECTION_CANDIDATES_BY_DEVICE_ID:\r\n\t\t\"CVMessages/SelectLikelyIntersectionCandidatesByDeviceId\",\r\n\tSELECT_INTERSECTION_BY_INTERSECTION_ID:\r\n\t\t\"CVMessages/SelectIntersectionByIntersectionId\",\r\n\tSELECT_VU_APPROACH_LOCATION_BY_VU_APPROACH_LOCATION_ID:\r\n\t\t\"CVMessages/SelectVUApproachLocationByVUApproachLocationId\",\r\n\r\n\tGET_IP_ADDRESS_BY_DEVICE_ID: \"DeviceMeta/GetIpAddressByDeviceId\",\r\n\r\n\tGET_RSU_MANAGE_INFO: \"DeviceMeta/GetRSUManageInfo\",\r\n\tGET_TSC_MANAGE_INFO: \"DeviceMeta/GetTSCManageInfo\",\r\n\tGET_ESS_MANAGE_INFO: \"DeviceMeta/GetESSManageInfo\",\r\n\tGET_TOTALSTATION_MANAGE_INFO: \"DeviceMeta/GetTotalStationManageInfo\",\r\n\r\n\tGET_TIM_CONTENT_TYPE_LIST: \"CVMessages/GetTIMContentTypeList\",\r\n\tGET_TIM_FRAME_TYPE_LIST: \"CVMessages/GetTIMFRAMETypeList\",\r\n\tGET_TIM_AREA_TYPE_LIST: \"CVMessages/GetTIMAreaTypeList\",\r\n\tGET_ITIS_CODE_LIST: \"CVMessages/GetItisCodeList\",\r\n\tGET_ROAD_SURFACE_DESCRIPTIONS: \"CVMessages/GetRoadSurfaceDescriptions\",\r\n\r\n\tGET_ALL_TIMS_AND_METADATA_BY_DEVICE_ID:\r\n\t\t\"CVMessages/GetAllTIMsAndMetadataByDeviceId\",\r\n\tGET_TIM_WITH_METADATA: \"CVMessages/GetTIMWithMetadata\",\r\n\r\n\tGET_RWM_LIST_BY_DEVICE_ID: \"CVMessages/GetRwmListByDeviceId\",\r\n\tGET_RWM_BY_ID: \"CVMessages/GetRwmById\",\r\n\tINSERT_RWM: \"CVMessages/InsertRwm\",\r\n\tUPDATE_RWM: \"CVMessages/UpdateRwm\",\r\n\tDELETE_RWM: \"CVMessages/DeleteRwm\",\r\n\tVALIDATE_RWM: \"CVMessages/GenerateRwmPayload\",\r\n\r\n\tDELETE_RSU_TIM: \"CVMessages/DeleteTIMById\",\r\n\tDELETE_TEST_TIMS: \"CVMessages/DeleteTestTIMsByDeviceId\",\r\n\r\n\tPOST_TIM_WITH_METADATA: \"CVMessages/InsertTIMWithMetadata\",\r\n\tUPDATE_TIM_WITH_METADATA: \"CVMessages/UpdateTIMWithMetadata\",\r\n\r\n\tGET_VALIDATED_TIMS_BY_DEVICE_ID: \"CVMessages/GetValidatedTIMListByDeviceId\",\r\n\tGET_MAP_PAYLOAD_BY_DEVICE_ID: \"CVMessages/GetMAPPayloadByDeviceId\",\r\n\r\n\t// Profile controller\r\n\tINSERT_PROFILE_ATTRIBUTE: \"Profile/InsertAppuserProfileAttribute\",\r\n\tGET_PROFILE_ATTRIBUTE: \"Profile/GetProfileAttribute\",\r\n\tCREATE_NEW_USER_REQUEST: \"Profile/CreateNewUserRequest\",\r\n\r\n\tGENERATE_PASSWORD_RESET_TOKEN_EMAIL:\r\n\t\t\"Account/GeneratePasswordResetTokenEmail\",\r\n\tRESET_PASSWORD: \"Account/ResetPassword\",\r\n\tCHECK_PASSWORD_COMPROMISED: \"Account/IsPasswordCompromised\",\r\n\tCHECK_PASSWORD_RESET_TOKEN_EXPIRATION:\r\n\t\t\"Account/CheckPasswordResetTokenExpiration\",\r\n\tCONTACT_US_QUERY: \"Account/ContactUsQuery\",\r\n\r\n\t// Intersections controller\r\n\tGET_LANES_BY_INTERSECTION_ID: \"Intersections/LanesByIntersectionId\",\r\n\tGET_LANES_BY_RSU_ID: \"Intersections/LaneDataByRsuId\",\r\n\tGET_LANE_TYPE_ATTRIBUTE_LIST: \"Intersections/LaneTypeAttributeList\",\r\n\tGET_LANE_SHARING_LIST: \"Intersections/LaneSharingList\",\r\n\tUPDATE_LANE_IS_ENABLED: \"Intersections/UpdateLaneIsEnabled\",\r\n\tUPDATE_LANE_MANEUVERS: \"Intersections/UpdateLaneManeuvers\",\r\n\tUPDATE_LANE_CONNECT_TOS: \"Intersections/UpdateLaneConnectTos\",\r\n\tUPDATE_TOGGLED_LANE_NODES: \"Intersections/UpdateToggledLaneNodes\",\r\n\tUPDATE_LANE_TYPE: \"Intersections/UpdateLaneType\",\r\n\tUPDATE_LANE_SHARINGS: \"Intersections/UpdateLaneSharings\",\r\n\tREDUCE_LANE_NODES: \"Intersections/ReduceLaneNodes\",\r\n\tENABLE_ALL_LANE_NODES_BY_INTERSECTION_ID:\r\n\t\t\"Intersections/EnableAllLaneNodesByIntersectionId\",\r\n\tGET_INTERSECTION_SUMMARY_LIST_BY_INTERSECTION_ID:\r\n\t\t\"Intersections/IntersectionSummaryListByIntersectionId\",\r\n\tUPDATE_RSU_INTERSECTION: \"DeviceMeta/UpdateRSUSetIntersectionId\",\r\n\tUPDATE_INTERSECTION_MAP_INTERSECTION_ID:\r\n\t\t\"CVMessages/UpdateIntersectionSetRSUIntersectionId\",\r\n\r\n\t// MapMessages controller\r\n\tGET_MAP_MESSAGE_BY_INTERSECTION_ID: \"MapMessages/ByIntersectionId\",\r\n\tGET_MAP_MANEUVER_LIST: \"MapMessages/ManeuverList\",\r\n\tGET_MAP_LANE_TYPE_LIST: \"MapMessages/LaneTypeList\",\r\n\tGENERATE_MAP_PAYLOAD: \"MapMessages/Generate\",\r\n\tGET_MAP_DATA_VALIDATION: \"MapMessages/MapDataValidation\",\r\n\tUPDATE_LANE_NODE_OFFSETS: \"MapMessages/UpdateLaneNodeOffsets\",\r\n\r\n\t// RSURequest/DeviceInfo controller\r\n\tGET_MODEL_LIST: \"DeviceInfo/GetModelList\",\r\n\tGET_LOCATION_TYPE_LIST: \"DeviceInfo/GetLocationTypeList\",\r\n\tGET_IP_ADDRESS_TYPE_LIST: \"DeviceInfo/GetIpAddressTypeList\",\r\n\tGET_MAC_ADDRESS_TYPE_LIST: \"DeviceInfo/GetMacAddressTypeList\",\r\n\tGET_AUTH_TYPE_LIST: \"DeviceInfo/GetAuthTypeList\",\r\n\tGET_PRIVILEGE_TYPE_LIST: \"DeviceInfo/GetPrivilegeTypeList\",\r\n\tGET_DEVICE_TENANT_LIST: \"DeviceInfo/GetDeviceTenantList\",\r\n\tGET_TEST_LABS: \"DeviceInfo/GetTestLabs\",\r\n\tGET_VUS_NEAREST_LAB: \"DeviceMeta/SelectVUNearestLatLong\",\r\n\tGET_PORT_TYPES: \"DeviceMeta/SelectPortTypesByDeviceType\",\r\n\tGET_TENANT_LIST: \"DeviceMeta/GetTenantList\",\r\n\tGET_APP_TYPE_LIST: \"DeviceInfo/GetAppTypeList\",\r\n\tGET_MOVEMENTS_BY_INTERSECTION_ID: \"DeviceInfo/GetMovementsByIntersectionId\",\r\n\r\n\t// TfmVerification controller\r\n\tGET_RSUS_NEAR_VUNIT_BY_USER: \"TfmVerification/RSUsNearVUnit\",\r\n\tGET_VUNITS_WITH_LATEST_LOCATION: \"TfmVerification/VUnitsWithLatestLocation\",\r\n\tGET_VUAPPROACHES_BY_INTERSECTION_ID:\r\n\t\t\"TfmVerification/ApproachesByIntersectionId\",\r\n\tGET_VUAPPROACHES_BY_RSU_ID: \"TfmVerification/ApproachesByRSUId\",\r\n\tGET_VUAPPROACHES_BY_VU_APPROACH_LOCATION_ID:\r\n\t\t\"TfmVerification/ApproachesByVUApproachLocationId\",\r\n\tGET_REPLAY_DATA_BY_TESTSETNUM: \"TfmVerification/TestReplayDataByTestsetnum\",\r\n\tGET_REPLAY_HEADERS_BY_TESTSETNUM:\r\n\t\t\"TfmVerification/TestReplayHeaderDataByTestsetnum\",\r\n\tGET_REPLAY_PPDATA_BY_TESTSETNUM:\r\n\t\t\"TfmVerification/TestReplayPPDataByTestsetnum\",\r\n\tGET_APPROACH_RUN_TEST_RESULTS:\r\n\t\t\"TfmVerification/ApproachRunTestResultsByApproachRunId\",\r\n\tGET_APPROACH_TEST_RESULTS:\r\n\t\t\"TfmVerification/ApproachRunTestResultsByApproachTestId\",\r\n\tGET_APPROACH_RUN_DEFAULT_TEST_RESULTS:\r\n\t\t\"TfmVerification/ApproachRunTestResultsDefaultByApproachRunId\",\r\n\tGET_MESSAGE_COUNTS_BY_APPROACH_DISTANCE:\r\n\t\t\"TfmVerification/MessageTypeCountsByApproachDistance\",\r\n\tGENERATE_VU_FINAL_TEST: \"TfmVerification/GenerateVUFinalTest\",\r\n\tGET_SPAT_TRANSITIONS_FROM_TEST: \"TfmVerification/SPaTtransitionsFromTest\",\r\n\tREGISTER_DEVICE_SELECTION: \"TfmVerification/RegisterDeviceSelection\",\r\n\tRECENT_APPROACH_RUNS_BY_VUNIT: \"TfmVerification/RecentApproachRunsByVUnit\",\r\n\tGET_RSU_LIST_WITH_COMPLETE_TEST:\r\n\t\t\"TfmVerification/SelectRSUListWithCompleteTest\",\r\n\tGET_TEST_LIST_BY_RSU: \"TfmVerification/SelectRsuAtpTestResults\",\r\n\tAPPROACH_RUNS_BY_TESTSETNUM: \"TfmVerification/VUApproachRunsByTestsetnum\",\r\n\tGET_ROAD_SEGS_FOR_APPROACH_CREATION:\r\n\t\t\"TfmVerification/RoadSegmentsForVUApproachCreation\",\r\n\tGET_TEST_CONFIG_BY_TESTSETNUM: \"TfmVerification/VUTestConfigByTestsetnum\",\r\n\r\n\t// DeviceSCR controller\r\n\tPOST_RSU_SCR: \"DeviceSCR/CreateRsuScr\",\r\n\tUPDATE_RSU_SCR: \"DeviceSCR/UpdateRsuScr\",\r\n\tCREATE_TOTAL_STATION_SCR: \"DeviceSCR/CreateTsScr\",\r\n\tMODIFY_TOTAL_STATION_SCR: \"DeviceSCR/InsertTsScrModifiedChanges\",\r\n\tMODIFY_RSU_SCR: \"DeviceSCR/ModifyRsuScr\",\r\n\tMODIFY_ESS_SCR: \"DeviceSCR/ModifyEssScr\",\r\n\tMODIFY_TSC_SCR: \"DeviceSCR/ModifyTscScr\",\r\n\tUPDATE_TOTAL_STATION_SCR: \"DeviceSCR/UpdateTsScr\",\r\n\tGET_PENDING_SCRS_BY_USER: \"DeviceSCR/GetPendingScrsByUser\",\r\n\tGET_RSU_SCR_BY_DEVICE_SCR_ID: \"DeviceSCR/GetRsuScrByDeviceScrId\",\r\n\tGET_TOTALSTATION_SCR_BY_SCR_ID: \"DeviceSCR/GetTotalStationSScrByScrId\",\r\n\tAPPROVE_DEVICE_SCR: \"DeviceSCR/ApproveDeviceSCR\",\r\n\tAPPROVE_TOTALSTATION_SCR: \"DeviceSCR/ApproveTsScr\",\r\n\tAPPROVE_TOTALSTATION_MODIFIED_SCR: \"DeviceSCR/ApproveTsModifiedScr\",\r\n\tREJECT_TOTALSTATION_MODIFIED_SCR: \"DeviceSCR/RejectTsModifiedScr\",\r\n\tAPPROVE_DEVICE_MODIFIED_SCR: \"DeviceSCR/ApproveDeviceModifiedScr\",\r\n\tREJECT_DEVICE_MODIFIED_SCR: \"DeviceSCR/RejectDeviceModifiedScr\",\r\n\tREJECT_DEVICE_SCR: \"DeviceSCR/RejectDeviceSCR\",\r\n\tREJECT_TOTALSTATION_SCR: \"DeviceSCR/RejectTsScr\",\r\n\tDELETE_TOTALSTATION_SCR: \"DeviceSCR/DeleteTsScr\",\r\n\tDELETE_DEVICE_SCR: \"DeviceSCR/DeleteDeviceSCR\",\r\n\tPOST_TSC_SCR: \"DeviceSCR/CreateTscScr\",\r\n\tUPDATE_TSC_SCR: \"DeviceSCR/UpdateTscScr\",\r\n\tGET_TSC_SCR_BY_DEVICE_SCR_ID: \"DeviceSCR/GetTscScrByDeviceScrId\",\r\n\tGET_TOTAL_STATION_BY_DEFINED_AREA: \"DeviceSCR/GetTotalStationByDefinedArea\",\r\n\tGET_APPROACHES_BY_DEVICE_SCR_ID: \"DeviceSCR/GetApproachesByDeviceScrId\",\r\n\tGET_STATION_TYPES_LIST: \"DeviceInfo/GetStationTypesList\",\r\n\tGET_ESS_EXTERNALFLAG_LIST: \"DeviceInfo/GetESSExternalFlagList\",\r\n\tGET_STATION_CATEGORY_LIST: \"DeviceInfo/GetStationCategoryList\",\r\n\tGET_REGION_DISTRICT_LIST: \"DeviceMeta/GetRegionDistrictList\",\r\n\tGET_ESS_SENSOR_LIST: \"DeviceInfo/GetESSsensorList\",\r\n\tGET_ESS_SCR_BY_DEVICE_SCR_ID: \"DeviceSCR/GetEssScrByDeviceScrId\",\r\n\tUPDATE_ESS_SCR: \"DeviceSCR/UpdateEssScr\",\r\n\tPOST_ESS_SCR: \"DeviceSCR/CreateEssScr\",\r\n\tGET_HISTORICAL_TESTS: \"DeviceSCR/GetRSULabTestsByDeviceSCRId\",\r\n\tGET_NETWORKS_BY_SCR: \"DeviceSCR/GetNetworkByDeviceSCRId\",\r\n\tSAVE_LAB_TEST_RESULTS: \"DeviceSCR/SaveRSULabTestByDeviceSCRId\",\r\n\tCHECK_IP_PORT_VALID: \"DeviceSCR/CheckIPPortValidity\",\r\n\r\n\t// User controller\r\n\tGET_PENDING_USER_REQUESTS: \"User/GetPendingUserRequests\",\r\n\tGET_FACILITY_LIST: \"User/GetFacilityList\",\r\n\tGET_FUNCTIONAL_AREA_LIST: \"User/GetFunctionalAreaList\",\r\n\tGET_JOB_ROLE_LIST: \"User/GetJobRoleList\",\r\n\tREQUEST_USER: \"User/RequestUser\",\r\n\tAPPROVE_USER_REQUEST: \"User/ApproveUserRequest\",\r\n\tDECLINE_USER_REQUEST: \"User/DeclineUserRequest\",\r\n\tGET_JOB_ROLE_LIST_ALLOWED: \"User/GetJobRoleListAllowed\",\r\n\tUPDATE_USER_REQUEST: \"User/UpdateUserRequest\",\r\n\r\n\t// Account controller\r\n\tGET_PERSON_LIST: \"Account/PersonList\",\r\n\tGET_USER_INFO: \"Account/Info\",\r\n\tGET_USER_EMAILINFO: \"Account/EmailInfo\",\r\n\r\n\t// Dashboard controller\r\n\tGET_STATUS_TS: \"Dashboard/Status/TotalStations\",\r\n\tGET_STATUS_RSU: \"Dashboard/Status/Devices/Rsu\",\r\n\tGET_STATUS_TSC: \"Dashboard/Status/Devices/Tsc\",\r\n\tGET_STATUS_ESS: \"Dashboard/Status/Devices/Ess\",\r\n\tUNVERIFIED_HEADINGS: \"Dashboard/DmsTim/UnverifiedHeadings\",\r\n\r\n\t// MOT controller\r\n\tCREATE_NEW_TFLOW_PROJECT: \"TFlow/CreateNewTFlowProject\",\r\n\tUPDATE_TFLOW_PROJECT: \"TFlow/UpdateTFlowProject\",\r\n\tEDIT_MOT_REQUEST: \"MOT/EditMOTRequest\",\r\n\tCREATE_NEW_MOT_REQUEST: \"MOT/CreateNewMOTRequest\",\r\n\tGET_NAVIGATION_BYCLIENT: \"MOT/NavigationLevelsByClientId\",\r\n\tGET_SECTION_TEXT: \"MOT/GetSectionByNavigationId\",\r\n\tGET_MOT_CLIENTS: \"MOT/GetMOTClients\",\r\n\tGET_CONTRACTORS: \"MOT/GetContractors\",\r\n\tGET_INFRASTRUCTURE_OWNERS: \"MOT/GetInfrastructureOwners\",\r\n\tGET_COUNTIES: \"MOT/GetCounties\",\r\n\tGET_MOT_ROUTES: \"MOT/GetMOTRoutes\",\r\n\tGET_ALL_TYPICALS: \"MOT/GetTypicals\",\r\n\tGET_MOT_HOLIDAYS: \"MOT/GetMOTHolidays\",\r\n\tGET_MOT_SPECIALEVENTS: \"MOT/GetMOTSpecialEvents\",\r\n\tGET_ALL_CITY: \"MOT/GetAllCity\",\r\n\tGET_ALL_TOWNSHIP: \"MOT/GetAllTownshipByMOT\",\r\n\tGET_TOWNSHIP_BYMOT: \"MOT/GetAllTownshipByMOT\",\r\n\tGET_MOT_DISTRICTS: \"MOT/GetMOTDistricts\",\r\n\tGET_FLEET_TRACKER_VEHICLES: \"FleetManagement/RetrieveFleetManagementVehicles\",\r\n\tGET_MOT_PROJECTS: \"TFlow/RetrieveTFlowProjects\",\r\n\tGET_MOT_DIRECTION: \"MOT/GetMOTDirections\",\r\n\tGET_MOT_TIMEFRAME: \"MOT/GetMOTTimeframe\",\r\n\tGET_MOT_CLOSURES: \"MOT/GetMOTClosures\",\r\n\tGET_MOT_TYPICALS: \"MOT/GetMOTTRTypical\",\r\n\tGET_MOT_REQUESTS_BY_USER: \"MOT/GetMOTRequestsByUser\",\r\n\tGET_RAMP_OPERATION: \"MOT/GetRampOperations\",\r\n\tGET_UNIT_MEASURES: \"MOT/GetUnitOfMeasures\",\r\n\tGET_UNIT_TIME: \"MOT/GetUnitOfTime\",\r\n\tGET_WORK_OPERATION: \"MOT/GetWorkOperations\",\r\n\tGET_JOB_DISTRICTS: \"MOT/GetJobDistricts\",\r\n\tGET_JOB_REGION: \"MOT/GetJobRegion\",\r\n\tGET_JOB_SUB: \"MOT/GetJobSub\",\r\n\tGET_TS_OPS: \"MOT/GetMOTTSOps\",\r\n\tGET_MSG_TIMEFRAMES: \"MOT/GetMsgTimeframes\",\r\n\tGET_MOT_CITY: \"MOT/GetMOTCity\",\r\n\tGET_ALL_VARIABLE_VALUE: \"MOT/GetMOTVariableValue\",\r\n\tGET_ALL_VARIABLES: \"MOT/GetMOTVariables\",\r\n\tGET_MOT_CONSTRUCTION_STAGES: \"MOT/GetMOTConstructionStages\",\r\n\tGET_MOT_COUNTY: \"MOT/GetMOTCounty\",\r\n\tGET_ROUTE_NAME: \"MOT/GetRouteName\",\r\n\tGET_MOT_RAMP: \"MOT/GetMOTRampClosures\",\r\n\tGET_MOT_TRO_TYPICAL: \"MOT/GetMOTROTypical\",\r\n\tGET_MOTITCPRestrictedTime: \"MOT/GetMOTITCPResTime\",\r\n\tGET_MOT_LANE_RESTRICTIONS: \"MOT/GetMOTLaneRestriction\",\r\n\tGET_MOT_NIGHT_WORK: \"MOT/GetMOTNightWork\",\r\n\tGET_MOT_PCMS_MSG: \"MOT/GetMOTPCMSMsg\",\r\n\tGET_MOT_TRAFFIC_REG: \"MOT/GetMOTTrafficReg\",\r\n\tGET_MOT_TS_OPS: \"MOT/GetMOTTSOperations\",\r\n\tGET_MOT_VAR_VALUE: \"MOT/GetMOTVarValue\",\r\n\tGET_MOT_LR_CONDITION: \"MOT/GetMOTLRCondition\",\r\n\tGET_MOT_UNIQUE_REQUIREMENT: \"MOT/GetMOTUniqueRequirement\",\r\n\tGET_MOT_MOTWZ_SL: \"MOT/GetMOTWZSpeedLimit\",\r\n\r\n\t//TFR Project\r\n\tGET_PROJECT_REGIONS: \"MOT/GetProjectRegions\",\r\n\tGET_PROJECT_TYPES: \"TFlow/RetrieveTFlowProjectTypes\",\r\n\tGET_PROJECT_REFERENCE_ITEMS: \"TFlow/RetrieveTFlowProjectReferenceItems\",\r\n\r\n\t//MOT INSERT API CALLS\r\n\tUPDATE_MOT_VARIABLE: \"MOT/UpdateMOTVariable\",\r\n\tUPDATE_MOT_PCMS_MESSAGE: \"MOT/UpdatePCMSMessage\",\r\n\tUPDATE_MOT_RAMP_CLOSURE: \"MOT/UpdateRampClosure\",\r\n\tUPDATE_MOT_RESTRICTION: \"MOT/UpdateLaneRestriction\",\r\n\tUPDATE_MOT_LR_STOPPAGE: \"MOT/UpdateLRStoppage\",\r\n\tUPDATE_MOT_APPROVAL: \"MOT/UpdateMOTApproval\",\r\n\tUPDATE_MOT_SECTION_VALIDATION: \"MOT/UpdateSectionValidation\",\r\n\r\n\t//MOT delete API calls\r\n\tDELETE_MOT_JOB_COUNTY: \"MOT/DeleteJobCounty\",\r\n\tDELETE_MOT_REQUEST: \"MOT/DeleteMOTRequest\",\r\n\tDELETE_TFLOW_PROJECT: \"TFlow/DeleteTFlowProject\",\r\n\r\n\t//Worker presence APIs\r\n\tGET_WP_HISTORY: \"WP/GetWPHistory\",\r\n\tGET_WP_CLOSURES: \"WP/GetWPClosure\",\r\n\tUPDATE_WP_INFO: \"WP/UpdateWPInfo\",\r\n\r\n\t//FloodDss API\r\n\tGET_FLOOD_LIKELIHOOD: \"Weather/GetFloodLikelihood\",\r\n\tGET_WEATHERSTATIONS_BY_AREA: \"Weather/GetWxStationsWithReadingsByArea\",\r\n\tGET_STREAMGAGES_BY_AREA: \"StreamGage/GetStreamGagesByArea\"\r\n};\r\n","import _ from \"lodash\";\nimport qs from \"qs\";\nimport Endpoints from \"./endpoints.js\";\n\n// TODO: modularize this - not all endpoints need to be in here - it would make\n// sense to split endpoints from different controllers/areas into different\n// files at least\n\n// polyfill fetch for IE11\nimport \"whatwg-fetch\";\n\n// const BACKEND_DATE_PARSE_SUBSTR_INDEX = 6;\n\nlet endpoints = {};\n_.forEach(Endpoints, (url, name) => {\n\tendpoints[name] = \"/api/v1/\" + url;\n});\n\nconst defaultOptions = {\n\tcredentials: \"same-origin\"\n};\n\n// TODO: cleanup default options (DRY)\nconst defaultPatchOptions = {\n\tmethod: \"PATCH\",\n\theaders: {\n\t\t\"Content-Type\": \"application/json\",\n\t\tAccept: \"*/*\"\n\t}\n};\n\nconst defaultPutOptions = {\n\tmethod: \"PUT\",\n\theaders: {\n\t\t\"Content-Type\": \"application/json\",\n\t\tAccept: \"*/*\"\n\t}\n};\n\nconst defaultPostOptions = {\n\tmethod: \"POST\",\n\theaders: {\n\t\t\"Content-Type\": \"application/json\",\n\t\tAccept: \"*/*\"\n\t}\n};\n\nconst defaultDeleteOptions = {\n\tmethod: \"DELETE\",\n\theaders: {\n\t\t\"Content-Type\": \"application/json\",\n\t\tAccept: \"*/*\"\n\t}\n};\n\nconst jsonify = (p, errCallback) => {\n\tif (!errCallback) {\n\t\terrCallback = err => console.error(\"Bad API JSON Response:\", err);\n\t}\n\treturn p\n\t\t.then(response => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t}\n\t\t\tthrow response;\n\t\t})\n\t\t.catch(errCallback);\n};\n\nconst api = {\n\tbaseUrl: \"\",\n\tsetBaseUrl(newBaseUrl) {\n\t\t// console.log(\"Setting new API Base URL\", newBaseUrl);\n\t\tthis.baseUrl = newBaseUrl;\n\t},\n\tbuildUrl(url) {\n\t\treturn this.baseUrl + url;\n\t},\n\tbuildOptions(options) {\n\t\treturn Object.assign({}, defaultOptions, options);\n\t},\n\tfetch(url, options) {\n\t\tlet retVal = window.fetch(this.buildUrl(url), this.buildOptions(options));\n\t\treturn retVal;\n\t},\n\tbuildQueryString(params) {\n\t\treturn \"?\" + qs.stringify(params);\n\t},\n\tfetchJson(url, options, errCallback) {\n\t\treturn jsonify(this.fetch(url, options), errCallback);\n\t},\n\t// TODO: cleanup HTTP actions (DRY)\n\tget(url, options) {\n\t\treturn this.fetch(url, this.buildOptions(options));\n\t},\n\tgetWithParams(url, params, options) {\n\t\treturn this.fetch(\n\t\t\turl + this.buildQueryString(params),\n\t\t\tthis.buildOptions(options)\n\t\t);\n\t},\n\tgetJson(url, options, errCallback) {\n\t\treturn jsonify(this.get(url, options), errCallback);\n\t},\n\tgetWithParamsJson(url, params, options, errCallback) {\n\t\treturn jsonify(this.getWithParams(url, params, options), errCallback);\n\t},\n\tpost(url, body, options) {\n\t\treturn this.fetch(\n\t\t\turl,\n\t\t\tObject.assign({}, defaultOptions, defaultPostOptions, options, {\n\t\t\t\tbody: JSON.stringify(body)\n\t\t\t})\n\t\t);\n\t},\n\tpostJson(url, body, options, errCallback) {\n\t\treturn jsonify(\n\t\t\tthis.fetch(\n\t\t\t\turl,\n\t\t\t\tObject.assign({}, defaultOptions, defaultPostOptions, options, {\n\t\t\t\t\tbody: JSON.stringify(body)\n\t\t\t\t})\n\t\t\t),\n\t\t\terrCallback\n\t\t);\n\t},\n\tputJson(url, body, options, errCallback) {\n\t\treturn jsonify(\n\t\t\tthis.fetch(\n\t\t\t\turl,\n\t\t\t\tObject.assign({}, defaultOptions, defaultPutOptions, options, {\n\t\t\t\t\tbody: JSON.stringify(body)\n\t\t\t\t})\n\t\t\t),\n\t\t\terrCallback\n\t\t);\n\t},\n\tpatch(url, body, options) {\n\t\treturn this.fetch(\n\t\t\turl,\n\t\t\tObject.assign({}, defaultOptions, defaultPatchOptions, options)\n\t\t);\n\t},\n\tpatchJson(url, body, options, errCallback) {\n\t\treturn jsonify(\n\t\t\tthis.patch(\n\t\t\t\turl,\n\t\t\t\tbody,\n\t\t\t\tObject.assign({}, options, {\n\t\t\t\t\tbody: JSON.stringify(body)\n\t\t\t\t})\n\t\t\t),\n\t\t\terrCallback\n\t\t);\n\t},\n\tdelete(url, body, options) {\n\t\treturn this.fetch(\n\t\t\turl,\n\t\t\tObject.assign({}, defaultOptions, defaultDeleteOptions, options)\n\t\t);\n\t},\n\tdeleteWithParams(url, params, options) {\n\t\treturn this.delete(\n\t\t\turl + this.buildQueryString(params),\n\t\t\tthis.buildOptions(options)\n\t\t);\n\t},\n\tdeleteWithParamsJson(url, params, options, errCallback) {\n\t\treturn jsonify(this.deleteWithParams(url, params, options), errCallback);\n\t},\n\taspDateTimeConversion(dtString) {\n\t\tif (dtString === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof dtString !== \"string\") {\n\t\t\tif (typeof console.error === \"function\") {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Tried to convert bad backend date to date ISOString:\",\n\t\t\t\t\tdtString\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t// backend dates are formatted like so: '/Date(UNIX_TIMESTAMP)/'\n\t\t// chop off the first 6 characters, grab the timestamp, and you're set!\n\t\treturn new Date(dtString);\n\t},\n\tENDPOINTS: endpoints\n};\n\nexport default api;\n","const LOCAL_ENV_KEY = \"LOCAL\";\nconst DEV_ENV_KEY = \"DEV\";\nconst TEST_ENV_KEY = \"TST\";\nconst PROD_ENV_KEY = \"PRO\";\n\nconst Environments = {};\n\nEnvironments[LOCAL_ENV_KEY] = {\n\tfullName: \"Local\",\n\tshortName: \"Local\"\n};\n\nEnvironments[DEV_ENV_KEY] = {\n\tfullName: \"Development\",\n\tshortName: \"Dev\"\n};\n\nEnvironments[TEST_ENV_KEY] = {\n\tfullName: \"Test\",\n\tshortName: \"Test\"\n};\n\nEnvironments[PROD_ENV_KEY] = {\n\tfullName: \"Production\",\n\tshortName: \"Prod\"\n};\n\nconst m = {\n\tdoesLocationHostMatch(regex) {\n\t\treturn regex.test(location.host || location.hostname);\n\t},\n\n\tgetCurrentEnvironmentKey() {\n\t\tif (this.doesLocationHostMatch(/^localhost/)) {\n\t\t\treturn LOCAL_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^10.10./)) {\n\t\t\treturn LOCAL_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^dev-/)) {\n\t\t\treturn DEV_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^dev\\./)) {\n\t\t\treturn DEV_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^tst-/)) {\n\t\t\treturn TEST_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^test-/)) {\n\t\t\treturn TEST_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^tst\\./)) {\n\t\t\treturn TEST_ENV_KEY;\n\t\t} else if (this.doesLocationHostMatch(/^test\\./)) {\n\t\t\treturn TEST_ENV_KEY;\n\t\t} else {\n\t\t\treturn PROD_ENV_KEY;\n\t\t}\n\t},\n\n\tgetCurrentEnvironmentData() {\n\t\t// console.debug(\"env data\", Environments);\n\t\treturn Environments[this.getCurrentEnvironmentKey()];\n\t},\n\n\tgetIsLocalEnvironment() {\n\t\treturn this.getCurrentEnvironmentKey() === LOCAL_ENV_KEY;\n\t},\n\n\tgetIsProductionEnvironment() {\n\t\treturn this.getCurrentEnvironmentKey() === PROD_ENV_KEY;\n\t}\n};\n\nconst isLocal = m.getIsLocalEnvironment();\nconst isProd = m.getIsProductionEnvironment();\nconst isProduction = isProd;\n\nexport { Environments, isLocal, isProd, isProduction };\nexport default m;\n","export function distance(p1, p2) {\n\t// Eventually we may implement better distance algorithms and make one of them the default, but for now....\n\treturn flattenedEuclideanDistance(p1, p2);\n}\n\nexport function euclideanDistance(p1, p2) {\n\treturn Math.pow(euclideanDistanceSq(p1, p2), 0.5);\n}\n\nexport function euclideanDistanceSq(p1, p2) {\n\tconst xy1 = toXY(p1);\n\tconst xy2 = toXY(p2);\n\n\treturn Math.pow(xy1.x - xy2.x, 2) + Math.pow(xy1.y - xy2.y, 2);\n}\n\nexport function flattenedEuclideanDistance(p1, p2) {\n\treturn Math.pow(flattenedEuclideanDistanceSq(p1, p2), 0.5);\n}\n\nexport function flattenedEuclideanDistanceSq(p1, p2) {\n\tconst xy1 = toXY(p1);\n\tconst xy2 = toXY(p2);\n\tconst latCos = Math.cos(xy1.x);\n\treturn Math.pow(latCos * (xy1.x - xy2.x), 2) + Math.pow(xy1.y - xy2.y, 2);\n}\n\nexport function manhattanDistance(p1, p2) {\n\tconst xy1 = toXY(p1);\n\tconst xy2 = toXY(p2);\n\n\treturn Math.abs(xy1.x - xy2.x) + Math.abs(xy1.y - xy2.y);\n}\n\nexport function toXY(p) {\n\tconst x = parseFloat(p.x || p.lat || p.latitude || p[0], 10);\n\tconst y = parseFloat(p.y || p.lng || p.lon || p.longitude || p[1], 10);\n\treturn { x, y };\n}\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport DSRCmessage from \"@/helpers/DSRCmessage.js\";\nimport API from \"@/api/index\";\nimport * as Geo from \"@/helpers/MHIGeometry.js\";\nimport RsuStore from \"@/store/modules/rsu\";\nimport pointInPolygon from \"point-in-polygon\";\n\nconst MODULE_NAME = \"fvu_monitor\";\n\nconst MUTATION_TYPES = {\n\tAPPLY_DATA: \"APPLY_DATA\",\n\tAPPLY_WSA_DATA: \"APPLY_WSA_DATA\",\n\tCLEAR_DATA: \"CLEAR_DATA\",\n\tDELETE_LOCATION: \"DELETE_LOCATION\",\n\tLATEST_MONITOR_FRAME_UPDATE: \"LATEST_MONITOR_FRAME_UPDATE\",\n\tLOCATION_HISTORY_UPDATE: \"LOCATION_HISTORY_UPDATE\",\n\tMARK_VU_APPROACH_CLOSED: \"MARK_VU_APPROACH_CLOSED\",\n\tMARK_VU_APPROACH_INVALID: \"MARK_VU_APPROACH_INVALID\",\n\tMARK_VU_APPROACH_RESULT_LOADING: \"MARK_VU_APPROACH_RESULT_LOADING\",\n\tMARK_VU_APPROACH_RESULT_LOADED: \"MARK_VU_APPROACH_RESULT_LOADED\",\n\tSET_APPROACH_TEST_RESULT: \"SET_APPROACH_TEST_RESULT\",\n\tSET_COMPLETION_APPROACH_RUN: \"SET_COMPLETION_APPROACH_RUN\",\n\tSET_NOW: \"SET_NOW\",\n\tSET_START_TIME: \"SET_START_TIME\",\n\tSET_TEST_CONFIG: \"SET_TEST_CONFIG\",\n\tSET_RSU_TEST_CONFIG: \"SET_RSU_TEST_CONFIG\",\n\tVU_APPROACHES_UPDATE: \"VU_APPROACHES_UPDATE\"\n};\n\nconst ACTION_TYPES = {\n\tINGEST_MESSAGES: \"INGEST_MESSAGES\",\n\tLOAD_APPROACH_TEST_RESULTS: \"LOAD_APPROACH_TEST_RESULTS\",\n\tLOAD_MESSAGE_COUNTS_BY_APPROACH_DISTANCE:\n\t\t\"LOAD_MESSAGE_COUNTS_BY_APPROACH_DISTANCE\",\n\tLOAD_OVERALL_INTERSECTION_RESULT: \"LOAD_OVERALL_INTERSECTION_RESULT\",\n\tLOAD_RSU_TEST_CONFIG: \"LOAD_RSU_TEST_CONFIG\",\n\tLOAD_VU_APPROACHES: \"LOAD_VU_APPROACHES\",\n\tLOAD_APPROACH_RUNS_FOR_TESTSETNUM: \"LOAD_APPROACH_RUNS_FOR_TESTSETNUM\",\n\tMARK_VU_APPROACH_RESULTS_LOADING: \"MARK_VU_APPROACH_RESULTS_LOADING\",\n\tMARK_VU_APPROACH_RESULTS_LOADED: \"MARK_VU_APPROACH_RESULTS_LOADED\",\n\tSET_TEST_CONFIG_FROM_TEST_RESULT: \"SET_TEST_CONFIG_FROM_TEST_RESULT\",\n\tSET_TEST_CONFIG_FROM_TESTSETNUM: \"SET_TEST_CONFIG_FROM_TESTSETNUM\",\n\tCLEANUP: \"CLEANUP\"\n};\n\nconst MODULE_CONFIG = {\n\tHASH_RESOLUTION: 0.00005,\n\tMAX_LOCATIONS: Math.pow(10, 5),\n\tMIN_NON_STATIONARY_SPEED: 5,\n\tGPS_ACCURACY_MULTIPLIER: 2,\n\tGPS_MAX_CONTINUOUS_TIME_SEC: 2,\n\tGPS_MAX_DISTANCE_FUDGE_FACTOR: 2,\n\tLATEST_MONITOR_FRAME_TIMEOUT_SECS: 5,\n\tVALIDATION_FREQUENCY_PRECISION: 3,\n\tFVU_MONITOR_REGEXP: /^v1\\/fvu\\/([^/]+)\\/([^/]+)\\/monitor/i,\n\tPARTIAL_PARSER_REGEXP: /^v1\\/fvu\\/[^/]+\\/[^/]+\\/dsrc\\/partial/i,\n\tGPS_REGEXP: /^v1\\/(.*)\\/(.*)\\/gps\\/stateChanged\\/periodicData$/,\n\tDEVICE_MESSAGE_REGEXP: /^v1\\/fvu\\/([^/]+)\\/([^/]+)\\/devicemessage/i,\n\tFALLBACK_APPROACH: {\n\t\tvuapproachesid: -1,\n\t\tapproachtype: \"complete\",\n\t\tgeoJSON: { coordinates: [] }\n\t}\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tMODULE_CONFIG,\n\tnamespaced: true,\n\tstate: {\n\t\tstartTime: null,\n\t\tlatest_monitor_frame: {},\n\t\tlocation_history: [],\n\t\ttest_config: {},\n\t\tnow: null,\n\t\tvu_approaches: {},\n\t\tvu_approach_location_reference: { rsuId: {}, intersectionId: {} },\n\t\trsu_data: {},\n\t\trsu_test_config: {}\n\t},\n\tmutations: {\n\t\t[MUTATION_TYPES.APPLY_DATA](state, payload) {\n\t\t\tif (!state.rsu_data[payload.rsuId]) {\n\t\t\t\tVue.set(state.rsu_data, payload.rsuId, {});\n\t\t\t}\n\t\t\tconst vuApproachLocationId = payload.vuApproachLocationId;\n\t\t\tif (!vuApproachLocationId) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.APPLY_DATA}: Missing or invalid vuApproachLocationId in payload.`\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst approach =\n\t\t\t\tpayload.vuapproachesid == MODULE_CONFIG.FALLBACK_APPROACH.vuapproachesid\n\t\t\t\t\t? MODULE_CONFIG.FALLBACK_APPROACH\n\t\t\t\t\t: state.vu_approaches[vuApproachLocationId] &&\n\t\t\t\t\t state.vu_approaches[vuApproachLocationId][payload.vuapproachesid];\n\n\t\t\tif (!approach) {\n\t\t\t\tif (payload.vuapproachesid > 0) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.APPLY_DATA}: Approach not found for payload: { vuapproachesid: ${payload.vuapproachesid},... }`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (approach.parentapproachid) {\n\t\t\t\t// This mutation shouldn't be called for the sub-zones, but if it is, do nothing.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!state.rsu_data[payload.rsuId][payload.vuapproachesid]) {\n\t\t\t\tVue.set(state.rsu_data[payload.rsuId], payload.vuapproachesid, {\n\t\t\t\t\tvuapproachesid: payload.vuapproachesid,\n\t\t\t\t\tlatlngHash: payload.latlngHash,\n\t\t\t\t\tgpsCount: 0,\n\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\tidleCount: 0,\n\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\tparserCount: 0,\n\t\t\t\t\tlatestTimestamp: null,\n\t\t\t\t\tenteredAt: null,\n\t\t\t\t\tpreExitedAt: null,\n\t\t\t\t\texitedAt: null,\n\t\t\t\t\tapproachComplete: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst approachData =\n\t\t\t\tstate.rsu_data[payload.rsuId][payload.vuapproachesid];\n\t\t\tconst msgTypeData = DSRCmessage.get(payload.typeId);\n\t\t\tconst msgType = msgTypeData.slug;\n\t\t\tif (!approachData[msgType]) {\n\t\t\t\tapproachData[msgType] = {\n\t\t\t\t\tgpsCount: approachData.gpsCount,\n\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\tidleCount: 0,\n\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\tparserCount: 0\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (\n\t\t\t\t_.isEmpty(payload.frequencyChecker) &&\n\t\t\t\tpayload.vuapproachesid != MODULE_CONFIG.FALLBACK_APPROACH.vuapproachesid\n\t\t\t) {\n\t\t\t\tapproachData.idleCount++;\n\t\t\t\tapproachData[msgType].idleCount++;\n\t\t\t}\n\t\t\t_.each([\"partialParser\", \"frequencyChecker\"], srcKey => {\n\t\t\t\t_.each(payload[srcKey], srcData => {\n\t\t\t\t\tconst srcDataTimestamp = new Date(srcData.Timestamp).getTime();\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload.vuapproachesid !=\n\t\t\t\t\t\t\tMODULE_CONFIG.FALLBACK_APPROACH.vuapproachesid &&\n\t\t\t\t\t\t(!approachData.enteredAt ||\n\t\t\t\t\t\t\tsrcDataTimestamp < approachData.enteredAt ||\n\t\t\t\t\t\t\t(approachData.approachComplete &&\n\t\t\t\t\t\t\t\tsrcDataTimestamp > approachData.preExitedAt))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// This data is outside the window we're considering, so discard it.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetErrorUnheardFlags(srcData);\n\t\t\t\t\tif (!srcData.isUnheard) {\n\t\t\t\t\t\tapproachData.latestTimestamp = _.max([\n\t\t\t\t\t\t\tsrcDataTimestamp,\n\t\t\t\t\t\t\tapproachData.latestTimestamp\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (srcKey) {\n\t\t\t\t\t\tcase \"frequencyChecker\":\n\t\t\t\t\t\t\tsrcData.WindowSizeSeconds = srcData.WindowSizeSeconds || 1;\n\t\t\t\t\t\t\tif (srcData.isUnheard) {\n\t\t\t\t\t\t\t\tapproachData.idleCount++;\n\t\t\t\t\t\t\t\tapproachData[msgType].idleCount++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tapproachData.freqCount += srcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t\tapproachData[msgType].freqCount += srcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t\tapproachData.freqTotal +=\n\t\t\t\t\t\t\t\t\tsrcData.FrequencyHz * srcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t\tapproachData[msgType].freqTotal +=\n\t\t\t\t\t\t\t\t\tsrcData.FrequencyHz * srcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"partialParser\":\n\t\t\t\t\t\t\tapproachData.parserCount++;\n\t\t\t\t\t\t\tapproachData[msgType].parserCount++;\n\n\t\t\t\t\t\t\tif (srcData.isError) {\n\t\t\t\t\t\t\t\tapproachData.parserErrorCount++;\n\t\t\t\t\t\t\t\tapproachData[msgType].parserErrorCount++;\n\t\t\t\t\t\t\t\tif (!srcData.IsCorrectFormat) {\n\t\t\t\t\t\t\t\t\tapproachData.parserFormatErrorCount++;\n\t\t\t\t\t\t\t\t\tapproachData[msgType].parserFormatErrorCount++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!srcData.IsCorrectContent) {\n\t\t\t\t\t\t\t\t\tapproachData.parserContentErrorCount++;\n\t\t\t\t\t\t\t\t\tapproachData[msgType].parserContentErrorCount++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\t[MUTATION_TYPES.APPLY_WSA_DATA](state, { vuApproach, rsu, payload }) {\n\t\t\tconst rsuId = rsu.deviceId;\n\t\t\tconst vuapproachesid = vuApproach.vuapproachesid;\n\t\t\tif (!state.rsu_data[rsuId]) return false;\n\t\t\tif (!state.rsu_data[rsuId][vuapproachesid]) {\n\t\t\t\tVue.set(state.rsu_data[rsuId], vuapproachesid, {\n\t\t\t\t\tvuapproachesid: vuapproachesid,\n\t\t\t\t\tgpsCount: 0,\n\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\tidleCount: 0,\n\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\tparserCount: 0,\n\t\t\t\t\tlatestTimestamp: null,\n\t\t\t\t\tenteredAt: null,\n\t\t\t\t\tpreExitedAt: null,\n\t\t\t\t\texitedAt: null,\n\t\t\t\t\tapproachComplete: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst approachData = state.rsu_data[rsuId][vuapproachesid];\n\t\t\tif (!approachData.WSA) {\n\t\t\t\tapproachData.WSA = {\n\t\t\t\t\tgpsCount: approachData.gpsCount,\n\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\tidleCount: 0,\n\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\tparserCount: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tapproachData.WSA.gpsCount = approachData.gpsCount;\n\n\t\t\tconst count = parseInt(payload.count, 10) || 0;\n\t\t\tapproachData.parserCount += count;\n\t\t\tapproachData.WSA.parserCount += count;\n\t\t},\n\t\t[MUTATION_TYPES.CLEAR_DATA](state) {\n\t\t\tVue.set(state, \"latest_monitor_frame\", {});\n\t\t\tVue.set(state, \"location_history\", []);\n\t\t\tVue.set(state, \"rsu_data\", {});\n\t\t\tVue.set(state, \"test_config\", {});\n\t\t\tVue.set(state, \"now\", null);\n\t\t},\n\t\t[MUTATION_TYPES.DELETE_LOCATION](state) {\n\t\t\tif (state.location_history.length) {\n\t\t\t\tstate.location_history.shift();\n\t\t\t}\n\t\t},\n\t\t[MUTATION_TYPES.LATEST_MONITOR_FRAME_UPDATE](state, payload) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tstate.latest_monitor_frame &&\n\t\t\t\t\tstate.latest_monitor_frame.timestamp &&\n\t\t\t\t\tstate.latest_monitor_frame.timestamp > payload.timestamp\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\tMUTATION_TYPES.LATEST_MONITOR_FRAME_UPDATE +\n\t\t\t\t\t\t\t\": rejecting incoming frame because its timestamp is older than the previous frame.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tVue.set(state, \"latest_monitor_frame\", payload);\n\t\t\t} catch (e) {\n\t\t\t\tif (!payload.expired) console.debug(e);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t[MUTATION_TYPES.LOCATION_HISTORY_UPDATE](\n\t\t\tstate,\n\t\t\t{ gpsData, timestamp, getRsu, getApproachesForPoint }\n\t\t) {\n\t\t\tif (timestamp instanceof Date) timestamp = timestamp.getTime();\n\t\t\tif (!_.isNumber(timestamp)) timestamp = new Date(timestamp).getTime();\n\t\t\tconst latlngHash = getLatLngHash({ gpsData });\n\t\t\tconst tail = [];\n\t\t\tconst candidate = { latlngHash };\n\t\t\twhile (\n\t\t\t\tstate.location_history.length &&\n\t\t\t\tstate.location_history[state.location_history.length - 1].timestamp >\n\t\t\t\t\ttimestamp\n\t\t\t) {\n\t\t\t\ttail.unshift(state.location_history.pop());\n\t\t\t}\n\t\t\tif (state.location_history.length) {\n\t\t\t\tconst last = state.location_history[state.location_history.length - 1];\n\t\t\t\tif (gpsData.speed < MODULE_CONFIG.MIN_NON_STATIONARY_SPEED) {\n\t\t\t\t\tcandidate.stationary = true;\n\t\t\t\t} else if (!gpsDifferentEnough(last, { gpsData, timestamp })) {\n\t\t\t\t\tcandidate.tooCloseTo = last.latlngHash;\n\t\t\t\t} else if (gpsTooDifferent(last, { gpsData, timestamp })) {\n\t\t\t\t\tcandidate.tooFarFrom = last.latlngHash;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.location_history.push({\n\t\t\t\tgpsData,\n\t\t\t\ttimestamp,\n\t\t\t\t...candidate\n\t\t\t});\n\t\t\tif (tail.length) state.location_history.push(...tail);\n\n\t\t\t// Now see whether we should set any subapproach timestamps based on this data\n\t\t\tif (!getRsu || !getApproachesForPoint) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_.each(state.rsu_data, (rsuData, rsuId) => {\n\t\t\t\tconst rsu = getRsu(rsuId);\n\t\t\t\tif (!rsu) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst approachesForPoint = getApproachesForPoint({\n\t\t\t\t\t...rsu,\n\t\t\t\t\t...gpsData,\n\t\t\t\t\tfilterFn: approach =>\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\trsuData[approach.parentapproachid] &&\n\t\t\t\t\t\t\trsuData[approach.parentapproachid].exitedAt &&\n\t\t\t\t\t\t\trsuData[approach.parentapproachid].enteredAt &&\n\t\t\t\t\t\t\trsuData[approach.parentapproachid].exitedAt > timestamp &&\n\t\t\t\t\t\t\trsuData[approach.parentapproachid].enteredAt < timestamp\n\t\t\t\t\t\t)\n\t\t\t\t}).sort(\n\t\t\t\t\t(a, b) => (b.parentapproachid || -10) - (a.parentapproachid || -10)\n\t\t\t\t);\n\t\t\t\tif (!approachesForPoint.length) {\n\t\t\t\t\tapproachesForPoint.push(MODULE_CONFIG.FALLBACK_APPROACH);\n\t\t\t\t}\n\t\t\t\t_.each(approachesForPoint, vuApproach => {\n\t\t\t\t\tconst parentapproachid =\n\t\t\t\t\t\tvuApproach.parentapproachid || vuApproach.vuapproachesid;\n\t\t\t\t\tif (!rsuData[parentapproachid]) {\n\t\t\t\t\t\tVue.set(rsuData, parentapproachid, {\n\t\t\t\t\t\t\tvuapproachesid: parentapproachid,\n\t\t\t\t\t\t\tgpsCount: 0,\n\t\t\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\t\t\tidleCount: 0,\n\t\t\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\t\t\tparserCount: 0,\n\t\t\t\t\t\t\tlatestTimestamp: null,\n\t\t\t\t\t\t\tenteredAt: null,\n\t\t\t\t\t\t\tpreExitedAt: null,\n\t\t\t\t\t\t\texitedAt: null,\n\t\t\t\t\t\t\tapproachComplete: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst approachData = rsuData[parentapproachid];\n\t\t\t\t\tif (vuApproach.approachtype == \"complete\") {\n\t\t\t\t\t\tif (!approachData.approachComplete) {\n\t\t\t\t\t\t\t// Increment gpsCount for this approach\n\t\t\t\t\t\t\tapproachData.gpsCount += 1;\n\t\t\t\t\t\t\t// Update gpsCount for any msg types in this approach\n\t\t\t\t\t\t\t_.each(approachData, (val, key) => {\n\t\t\t\t\t\t\t\tconst msgTypeData = DSRCmessage.get(key);\n\t\t\t\t\t\t\t\tif (!msgTypeData) return;\n\t\t\t\t\t\t\t\tval.gpsCount = approachData.gpsCount;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (vuApproach.approachtype == \"entrance\") {\n\t\t\t\t\t\tapproachData.enteredAt = approachData.enteredAt\n\t\t\t\t\t\t\t? _.min([approachData.enteredAt, timestamp])\n\t\t\t\t\t\t\t: timestamp;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tvuApproach.approachtype == \"preexit\" &&\n\t\t\t\t\t\tapproachData.enteredAt\n\t\t\t\t\t) {\n\t\t\t\t\t\tapproachData.preExitedAt = _.max([\n\t\t\t\t\t\t\ttimestamp,\n\t\t\t\t\t\t\tapproachData.preExitedAt\n\t\t\t\t\t\t]);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tvuApproach.approachtype == \"postexit\" &&\n\t\t\t\t\t\tapproachData.preExitedAt\n\t\t\t\t\t) {\n\t\t\t\t\t\tapproachData.exitedAt = approachData.exitedAt\n\t\t\t\t\t\t\t? _.min([approachData.exitedAt, timestamp])\n\t\t\t\t\t\t\t: timestamp;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\t[MUTATION_TYPES.MARK_VU_APPROACH_CLOSED](\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tvuApproachLocationId,\n\t\t\t\tapproachRunId,\n\t\t\t\tvuapproachesid,\n\t\t\t\ttimestamp,\n\t\t\t\tvalidated,\n\t\t\t\tvalidationDetails,\n\t\t\t\trsuId,\n\t\t\t\tapproachtestid\n\t\t\t}\n\t\t) {\n\t\t\tconst vuApproach = _.reduce(\n\t\t\t\tvuApproachLocationId\n\t\t\t\t\t? [state.vu_approaches[vuApproachLocationId]]\n\t\t\t\t\t: state.vu_approaches,\n\t\t\t\t(r, vuApproaches) => {\n\t\t\t\t\treturn r || vuApproaches[vuapproachesid];\n\t\t\t\t},\n\t\t\t\tnull\n\t\t\t);\n\t\t\ttimestamp = timestamp\n\t\t\t\t? new Date(timestamp).getTime()\n\t\t\t\t: new Date().getTime();\n\n\t\t\tif (!vuApproach) {\n\t\t\t\t// We don't recognize this approach.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (rsuId && _.isUndefined(state.rsu_data[rsuId])) {\n\t\t\t\tVue.set(state.rsu_data, rsuId, {});\n\t\t\t}\n\t\t\t_.each(state.rsu_data, (rsuData, deviceId) => {\n\t\t\t\tif (!rsuData[vuapproachesid] && rsuId && rsuId == deviceId) {\n\t\t\t\t\tVue.set(state.rsu_data[rsuId], vuapproachesid, {});\n\t\t\t\t}\n\t\t\t\tconst approachData = rsuData[vuapproachesid];\n\t\t\t\tif (!approachData) {\n\t\t\t\t\t// We don't have anything for this approach on this rsu, either because we haven't loaded it yet or because it's in the wrong intersection.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!approachData.approachComplete) {\n\t\t\t\t\t// See if the times line up, and if so, mark this complete\n\t\t\t\t\tif (state.startTime && state.startTime < timestamp) {\n\t\t\t\t\t\tVue.set(approachData, \"approachComplete\", true);\n\t\t\t\t\t\tVue.set(approachData, \"exitedAt\", timestamp);\n\t\t\t\t\t\tVue.set(approachData, \"completionApproachRunId\", approachRunId);\n\t\t\t\t\t\tVue.set(approachData, \"resultPending\", true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!approachData.approachRuns) {\n\t\t\t\t\tVue.set(approachData, \"approachRuns\", {});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!approachData.approachRuns[approachRunId] ||\n\t\t\t\t\tapproachData.approachRuns[approachRunId].timestamp != timestamp\n\t\t\t\t) {\n\t\t\t\t\tVue.set(approachData.approachRuns, approachRunId, {\n\t\t\t\t\t\tapproachRunId,\n\t\t\t\t\t\ttimestamp,\n\t\t\t\t\t\tvalidated,\n\t\t\t\t\t\tvalidationDetails,\n\t\t\t\t\t\tresultData: null,\n\t\t\t\t\t\tapproachtestid: approachtestid\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t[MUTATION_TYPES.MARK_VU_APPROACH_INVALID](\n\t\t\tstate,\n\t\t\t{ approachRunId, vuapproachesid, timestamp, validationDetails, validated }\n\t\t) {\n\t\t\tconst vuApproach = _.reduce(\n\t\t\t\tstate.vu_approaches,\n\t\t\t\t(r, vuApproaches) => {\n\t\t\t\t\treturn r || vuApproaches[vuapproachesid];\n\t\t\t\t},\n\t\t\t\tnull\n\t\t\t);\n\t\t\ttimestamp = timestamp\n\t\t\t\t? new Date(timestamp).getTime()\n\t\t\t\t: new Date().getTime();\n\n\t\t\tif (!vuApproach) {\n\t\t\t\t// We don't recognize this approach.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t_.each(state.rsu_data, rsuData => {\n\t\t\t\tconst approachData = rsuData[vuapproachesid];\n\t\t\t\tif (!approachData) {\n\t\t\t\t\t// We don't have anything for this approach on this rsu, either because we haven't loaded it yet or because it's in the wrong intersection.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!approachData.approachRuns) {\n\t\t\t\t\tVue.set(approachData, \"approachRuns\", {});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!approachData.approachRuns[approachRunId] ||\n\t\t\t\t\tapproachData.approachRuns[approachRunId].timestamp != timestamp\n\t\t\t\t) {\n\t\t\t\t\tVue.set(approachData.approachRuns, approachRunId, {\n\t\t\t\t\t\tapproachRunId,\n\t\t\t\t\t\ttimestamp,\n\t\t\t\t\t\tvalidated,\n\t\t\t\t\t\tvalidationDetails,\n\t\t\t\t\t\tresultData: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t[MUTATION_TYPES.MARK_VU_APPROACH_RESULT_LOADING](\n\t\t\tstate,\n\t\t\t{ vuapproachesid, rsuId }\n\t\t) {\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"resultPending\", false);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"resultLoading\", true);\n\t\t},\n\t\t[MUTATION_TYPES.MARK_VU_APPROACH_RESULT_LOADED](\n\t\t\tstate,\n\t\t\t{ rsuId, vuapproachesid }\n\t\t) {\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"resultLoading\", false);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"resultLoaded\", true);\n\t\t},\n\t\t[MUTATION_TYPES.SET_APPROACH_TEST_RESULT](\n\t\t\tstate,\n\t\t\t{\n\t\t\t\trsuId,\n\t\t\t\tvuapproachesid,\n\t\t\t\tapproachRunId,\n\t\t\t\tapproachRunTestResult,\n\t\t\t\tapproachRunNonTestableCounts,\n\t\t\t\tapproachtestid\n\t\t\t}\n\t\t) {\n\t\t\tVue.set(\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].approachRuns[approachRunId],\n\t\t\t\t\"resultData\",\n\t\t\t\tapproachRunTestResult\n\t\t\t);\n\t\t\tVue.set(\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].approachRuns[approachRunId],\n\t\t\t\t\"nonTestableTypeCounts\",\n\t\t\t\tapproachRunNonTestableCounts\n\t\t\t);\n\t\t\tVue.set(\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].approachRuns[approachRunId],\n\t\t\t\t\"approachtestid\",\n\t\t\t\tapproachtestid\n\t\t\t);\n\t\t},\n\t\t[MUTATION_TYPES.SET_COMPLETION_APPROACH_RUN](\n\t\t\tstate,\n\t\t\t{ rsuId, vuapproachesid, approachRunId }\n\t\t) {\n\t\t\tVue.set(\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid],\n\t\t\t\t\"completionApproachRunId\",\n\t\t\t\tapproachRunId\n\t\t\t);\n\n\t\t\tconst approachRunData =\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].approachRuns[approachRunId];\n\t\t\tconst approachRunTestResult =\n\t\t\t\t(approachRunData && approachRunData.resultData) || [];\n\t\t\tconst approachRunNonTestableCounts =\n\t\t\t\t(approachRunData && approachRunData.nonTestableTypeCounts) || [];\n\n\t\t\t// reset counts so we can be sure we didn't miss anything in the next step; also handles the \"clear\" case\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"gpsCount\", 0);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"parserCount\", 0);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"parserErrorCount\", 0);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"enteredAt\", null);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"preExitedAt\", null);\n\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid], \"exitedAt\", null);\n\t\t\t_.each(state.rsu_data[rsuId][vuapproachesid], (val, key) => {\n\t\t\t\tconst msgTypeData = DSRCmessage.get(key);\n\t\t\t\tif (!msgTypeData) return;\n\t\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid][key], \"gpsCount\", 0);\n\t\t\t\tVue.set(state.rsu_data[rsuId][vuapproachesid][key], \"parserCount\", 0);\n\t\t\t\tVue.set(\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][key],\n\t\t\t\t\t\"parserErrorCount\",\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t\tVue.set(\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][key],\n\t\t\t\t\t\"resultDetail\",\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t// Update counts and timestamps for approach; update counts and test results for all message types as well.\n\t\t\t_.each(approachRunTestResult, testResultRow => {\n\t\t\t\tconst msgTypeData =\n\t\t\t\t\ttestResultRow.messageTypeId &&\n\t\t\t\t\tDSRCmessage.get(testResultRow.messageTypeId);\n\t\t\t\tvar target = state.rsu_data[rsuId][vuapproachesid];\n\t\t\t\tif (msgTypeData) {\n\t\t\t\t\tconst msgType = msgTypeData.slug;\n\t\t\t\t\tif (!state.rsu_data[rsuId][vuapproachesid][msgType]) {\n\t\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][msgType] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttarget = state.rsu_data[rsuId][vuapproachesid][msgType];\n\t\t\t\t} else if (testResultRow.messageTypeId !== null) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.MARK_VU_APPROACH_RESULT_LOADED}: Invalid or unknown messageTypeId in approachRunTestResult row: ${testResultRow.messageTypeId}`\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].enteredAt =\n\t\t\t\t\t\ttestResultRow.actualStart &&\n\t\t\t\t\t\tnew Date(testResultRow.actualStart).getTime();\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].exitedAt =\n\t\t\t\t\t\ttestResultRow.actualEnd &&\n\t\t\t\t\t\tnew Date(testResultRow.actualEnd).getTime();\n\t\t\t\t}\n\t\t\t\ttarget.gpsCount = testResultRow.timeInApproach;\n\t\t\t\ttarget.parserCount = testResultRow.parserCount;\n\t\t\t\ttarget.parserErrorCount = testResultRow.parserErrorCount;\n\t\t\t\ttarget.resultDetail = testResultRow.resultDetail;\n\n\t\t\t\tif (testResultRow.testResult == \"N/A\") {\n\t\t\t\t\ttarget.testResult = \"FAIL\";\n\t\t\t\t} else target.testResult = testResultRow.testResult;\n\t\t\t});\n\t\t\t_.each(approachRunNonTestableCounts, ({ msgType, count, errorCount }) => {\n\t\t\t\tif (!state.rsu_data[rsuId][vuapproachesid][msgType]) {\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][msgType] = {};\n\t\t\t\t}\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][msgType].gpsCount =\n\t\t\t\t\tstate.rsu_data[rsuId][vuapproachesid].gpsCount;\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][msgType].parserCount = count;\n\t\t\t\tstate.rsu_data[rsuId][vuapproachesid][msgType].parserErrorCount =\n\t\t\t\t\terrorCount || 0;\n\t\t\t});\n\t\t},\n\t\t[MUTATION_TYPES.SET_NOW](state, payload) {\n\t\t\tVue.set(state, \"now\", payload);\n\t\t},\n\t\t[MUTATION_TYPES.SET_START_TIME](state, payload) {\n\t\t\tif (_.isUndefined(payload) || payload === null) payload = new Date();\n\t\t\tif (!(payload instanceof Date)) payload = new Date(payload);\n\t\t\tstate.startTime = payload.getTime();\n\t\t},\n\t\t[MUTATION_TYPES.SET_TEST_CONFIG](state, payload) {\n\t\t\tVue.set(state, \"test_config\", payload);\n\t\t},\n\t\t[MUTATION_TYPES.SET_RSU_TEST_CONFIG](state, payload) {\n\t\t\tif (!payload.rsuId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Missing or invalid rsuId in payload of \"' +\n\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\tMUTATION_TYPES.SET_RSU_TEST_CONFIG +\n\t\t\t\t\t\t'\".'\n\t\t\t\t);\n\t\t\t}\n\t\t\tVue.set(state.rsu_test_config, payload.rsuId, payload);\n\t\t},\n\t\t[MUTATION_TYPES.VU_APPROACHES_UPDATE](\n\t\t\tstate,\n\t\t\t{ rsuId, intersectionId, vuApproaches, vuApproachLocationId }\n\t\t) {\n\t\t\tif (_.isArray(vuApproaches)) {\n\t\t\t\tvuApproaches = _.reduce(\n\t\t\t\t\tvuApproaches,\n\t\t\t\t\t(r, vuApproach) => {\n\t\t\t\t\t\tr[vuApproach.vuapproachesid] = vuApproach;\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!_.isObject(vuApproaches)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.VU_APPROACHES_UPDATE}: Invalid or missing vuApproaches parameter.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tvuApproachLocationId =\n\t\t\t\tvuApproachLocationId ||\n\t\t\t\t_.reduce(\n\t\t\t\t\tvuApproaches,\n\t\t\t\t\t(vuApproachLocationId, vuApproach) => {\n\t\t\t\t\t\tvuApproachLocationId =\n\t\t\t\t\t\t\tvuApproachLocationId || vuApproach.vuApproachLocationId;\n\t\t\t\t\t\tif (vuApproachLocationId !== vuApproach.vuApproachLocationId) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.VU_APPROACHES_UPDATE}: vuApproachLocationId mismatch.`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn vuApproachLocationId;\n\t\t\t\t\t},\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\tif (!vuApproachLocationId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.VU_APPROACHES_UPDATE}: Missing or invalid vuApproachLocationId in vuApproaches.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (rsuId) {\n\t\t\t\tVue.set(\n\t\t\t\t\tstate.vu_approach_location_reference.rsuId,\n\t\t\t\t\trsuId,\n\t\t\t\t\tvuApproachLocationId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (intersectionId) {\n\t\t\t\tVue.set(\n\t\t\t\t\tstate.vu_approach_location_reference.intersectionId,\n\t\t\t\t\tintersectionId,\n\t\t\t\t\tvuApproachLocationId\n\t\t\t\t);\n\t\t\t}\n\t\t\tvuApproaches[MODULE_CONFIG.FALLBACK_APPROACH.vuapproachesid] =\n\t\t\t\tMODULE_CONFIG.FALLBACK_APPROACH;\n\t\t\tVue.set(state.vu_approaches, vuApproachLocationId, vuApproaches);\n\t\t}\n\t},\n\tactions: {\n\t\t[ACTION_TYPES.INGEST_MESSAGES](context, payload) {\n\t\t\tconst getRsu =\n\t\t\t\tcontext.rootGetters[RsuStore.MODULE_NAME + \"/byIdentifier\"];\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t// validate topic string\n\t\t\t\tif (!payload.topic || !payload.topic.toString()) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.INGEST_MESSAGES}: Invalid payload topic.`,\n\t\t\t\t\t\tpayload\n\t\t\t\t\t);\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.INGEST_MESSAGES}: Invalid MQTT topic.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// convert timestamp, if present\n\t\t\t\ttry {\n\t\t\t\t\tif (payload.timestamp && !_.isNumber(payload.timestamp)) {\n\t\t\t\t\t\tpayload.timestamp = new Date(payload.timestamp).getTime();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t}\n\t\t\t\t// Is this an approachrun/complete message?\n\t\t\t\tif (\n\t\t\t\t\tcontext.getters.fvuMonitorRegexp.exec(payload.topic) &&\n\t\t\t\t\tpayload.topic.match(/approachrun\\/complete$/)\n\t\t\t\t) {\n\t\t\t\t\tif (!(payload.approachrunid && payload.approachid)) {\n\t\t\t\t\t\treturn reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.INGEST_MESSAGES}: Invalid message on topic \"${payload.topic}\".`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (payload.validated) {\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.MARK_VU_APPROACH_CLOSED, {\n\t\t\t\t\t\t\tvuApproachLocationId: payload.vuApproachLocationId,\n\t\t\t\t\t\t\tapproachRunId: payload.approachrunid,\n\t\t\t\t\t\t\tvuapproachesid: payload.approachid,\n\t\t\t\t\t\t\ttimestamp: payload.timestamp,\n\t\t\t\t\t\t\tvalidated: payload.validated,\n\t\t\t\t\t\t\tvalidationDetails: payload.validationDetails\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn setTimeout(\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t\tcontext.dispatch(ACTION_TYPES.LOAD_APPROACH_TEST_RESULTS)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t10\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.debug(\"Invalid approach: %o\", payload);\n\t\t\t\t\t\treturn setTimeout(\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.MARK_VU_APPROACH_INVALID, {\n\t\t\t\t\t\t\t\t\t\tapproachRunId: payload.approachrunid,\n\t\t\t\t\t\t\t\t\t\tvuapproachesid: payload.approachid,\n\t\t\t\t\t\t\t\t\t\ttimestamp: payload.timestamp,\n\t\t\t\t\t\t\t\t\t\tvalidated: payload.validated,\n\t\t\t\t\t\t\t\t\t\tvalidationDetails: payload.validationDetails\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t10\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Is it a devicemessages frame?\n\t\t\t\tif (context.getters.deviceMessageRegexp.exec(payload.topic)) {\n\t\t\t\t\tif (payload.topic.match(/\\/wsa$/)) {\n\t\t\t\t\t\t// This is WSA data; store it in the same format as the other message types\n\t\t\t\t\t\tconst rsu = getRsu(payload.RSUId);\n\t\t\t\t\t\tif (!rsu) {\n\t\t\t\t\t\t\t// This is about an rsu we don't know about; bail out\n\t\t\t\t\t\t\treturn resolve(payload);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst vuApproaches = context.getters.approachesForPoint({\n\t\t\t\t\t\t\tfilterFn: approach => approach.approachtype == \"complete\",\n\t\t\t\t\t\t\t...rsu,\n\t\t\t\t\t\t\tlatitude: payload.gps_end.lat,\n\t\t\t\t\t\t\tlongitude: payload.gps_end.lon\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!vuApproaches.length) {\n\t\t\t\t\t\t\tvuApproaches.push(MODULE_CONFIG.FALLBACK_APPROACH);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvuApproaches.sort(\n\t\t\t\t\t\t\t(a, b) => a.parentapproachid || 0 - b.parentapproachid || 0\n\t\t\t\t\t\t);\n\t\t\t\t\t\t_.each(vuApproaches, vuApproach => {\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.APPLY_WSA_DATA, {\n\t\t\t\t\t\t\t\trsu,\n\t\t\t\t\t\t\t\tvuApproach,\n\t\t\t\t\t\t\t\tpayload\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn resolve(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.INGEST_MESSAGES}: Unrecognized topic: \"${payload.topic}\".`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Then is it a monitor frame or raw gps data?\n\t\t\t\tif (!payload.gpsData) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.INGEST_MESSAGES}: Invalid payload.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst baseArgs = {\n\t\t\t\t\tlatlngHash: getLatLngHash(payload)\n\t\t\t\t};\n\t\t\t\tif (\"gpsData\" in payload && \"timestamp\" in payload) {\n\t\t\t\t\tconst extraOpts = {};\n\t\t\t\t\tif (context.getters.gpsRegexp.exec(payload.topic)) {\n\t\t\t\t\t\t// This is pure gps data, and we should do the gpsCount logic.\n\t\t\t\t\t\textraOpts.getRsu = getRsu;\n\t\t\t\t\t\textraOpts.getApproachesForPoint =\n\t\t\t\t\t\t\tcontext.getters.approachesForPoint;\n\t\t\t\t\t}\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.LOCATION_HISTORY_UPDATE, {\n\t\t\t\t\t\t...extraOpts,\n\t\t\t\t\t\t...payload\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (_.isArray(payload.type)) {\n\t\t\t\t\t// This is a frame from the monitor service, store it as the latest of same\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.LATEST_MONITOR_FRAME_UPDATE, payload);\n\t\t\t\t\t// Set this monitor frame to expire\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.LATEST_MONITOR_FRAME_UPDATE, {\n\t\t\t\t\t\t\t\texpired: true,\n\t\t\t\t\t\t\t\t...payload\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tcontext.getters.LATEST_MONITOR_FRAME_TIMEOUT_SECS * 1000\n\t\t\t\t\t);\n\t\t\t\t\tconst frameRsus = context.getters.latestMonitorFrameRSUs;\n\t\t\t\t\t_.each(payload.type, typeData => {\n\t\t\t\t\t\tconst typeArgs = { typeId: typeData.id };\n\t\t\t\t\t\t_.each(typeData.messages, messageData => {\n\t\t\t\t\t\t\tconst rsus = [];\n\t\t\t\t\t\t\tconst thisRsu = getRsu(messageData.rsuId);\n\t\t\t\t\t\t\tif (thisRsu) rsus.push(thisRsu);\n\t\t\t\t\t\t\tif (!thisRsu && typeData.id == 20) {\n\t\t\t\t\t\t\t\t// This is BSM data, which doesn't get assigned an RSU id, so we'll credit it to any RSUs that we heard from elsewhere in this frame.\n\t\t\t\t\t\t\t\trsus.push(...frameRsus);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_.each(rsus, rsu => {\n\t\t\t\t\t\t\t\tconst vuApproaches = context.getters.approachesForPoint({\n\t\t\t\t\t\t\t\t\tfilterFn: approach => approach.approachtype == \"complete\",\n\t\t\t\t\t\t\t\t\t...rsu,\n\t\t\t\t\t\t\t\t\t...payload.gpsData\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!vuApproaches.length) {\n\t\t\t\t\t\t\t\t\tvuApproaches.push(MODULE_CONFIG.FALLBACK_APPROACH);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvuApproaches.sort(\n\t\t\t\t\t\t\t\t\t(a, b) => a.parentapproachid || 0 - b.parentapproachid || 0\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t_.each(vuApproaches, vuApproach => {\n\t\t\t\t\t\t\t\t\tconst approachArgs = {\n\t\t\t\t\t\t\t\t\t\tintersectionId: rsu.intersectionId,\n\t\t\t\t\t\t\t\t\t\tvuapproachesid: vuApproach.vuapproachesid\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tconst vuApproachLocationId = context.getters.vuApproachLocationId(\n\t\t\t\t\t\t\t\t\t\trsu\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.APPLY_DATA, {\n\t\t\t\t\t\t\t\t\t\tvuApproachLocationId,\n\t\t\t\t\t\t\t\t\t\t...approachArgs,\n\t\t\t\t\t\t\t\t\t\t...baseArgs,\n\t\t\t\t\t\t\t\t\t\t...typeArgs,\n\t\t\t\t\t\t\t\t\t\t...messageData,\n\t\t\t\t\t\t\t\t\t\trsuId: rsu.deviceId\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn resolve(true);\n\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.LOAD_APPROACH_TEST_RESULTS](context) {\n\t\t\tconst ret = {};\n\t\t\t_.each(\n\t\t\t\tcontext.getters.approachRunIdsToLoad,\n\t\t\t\t({ approachRunId, vuapproachesid, rsuId, approachtestid }) => {\n\t\t\t\t\tconst nonTestableTypesStr = context.getters.nonTestableMessageTypes\n\t\t\t\t\t\t.map(t => t.slug)\n\t\t\t\t\t\t.join(\",\");\n\t\t\t\t\tconst qString = API.buildQueryString(\n\t\t\t\t\t\tapproachtestid\n\t\t\t\t\t\t\t? { approachtestid, nonTestableTypesStr }\n\t\t\t\t\t\t\t: { approachRunId, rsuId, nonTestableTypesStr }\n\t\t\t\t\t);\n\t\t\t\t\tif (ret[qString]) return; // Already covered this one.\n\t\t\t\t\tcontext.dispatch(ACTION_TYPES.MARK_VU_APPROACH_RESULTS_LOADING, {\n\t\t\t\t\t\tvuapproachesid\n\t\t\t\t\t});\n\t\t\t\t\tconst flatTestParams = context.getters.testConfig(rsuId);\n\t\t\t\t\tconst testParams = [];\n\t\t\t\t\t_.each(context.getters.testableMessageTypes, msgTypeData => {\n\t\t\t\t\t\tconst msgType = msgTypeData.slug;\n\t\t\t\t\t\tconst msgTypeExpected = _.isUndefined(\n\t\t\t\t\t\t\tflatTestParams[`${msgType}_expected`]\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? context.rootGetters[`${RsuStore.MODULE_NAME}/shouldHaveType`]({\n\t\t\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\t\t\tmsgType\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: flatTestParams[`${msgType}_expected`];\n\t\t\t\t\t\ttestParams.push({\n\t\t\t\t\t\t\tid: msgTypeData.id,\n\t\t\t\t\t\t\tvalidationFrequency:\n\t\t\t\t\t\t\t\tflatTestParams[`${msgType}_validation_frequency`],\n\t\t\t\t\t\t\terrorThresholdPct:\n\t\t\t\t\t\t\t\tflatTestParams[`${msgType}_error_threshold_pct`],\n\t\t\t\t\t\t\texpected: msgTypeExpected ? 1 : 0\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\ttestParams.sort((a, b) => a.id - b.id); // Sorting matters so the backend can tell if this has already been tested\n\t\t\t\t\tret[qString] = (approachtestid\n\t\t\t\t\t\t? // If an approachtestid exists:\n\t\t\t\t\t\t API.getWithParamsJson(\n\t\t\t\t\t\t\t\tAPI.ENDPOINTS.GET_APPROACH_TEST_RESULTS,\n\t\t\t\t\t\t\t\t{ approachtestid, nonTestableTypesStr },\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\te => {\n\t\t\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: // If no approachtestid exists:\n\t\t\t\t\t\t API.postJson(\n\t\t\t\t\t\t\t\tAPI.ENDPOINTS.GET_APPROACH_RUN_TEST_RESULTS + qString,\n\t\t\t\t\t\t\t\ttestParams,\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\te => {\n\t\t\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t)\n\t\t\t\t\t\t.then(json => {\n\t\t\t\t\t\t\tif (!_.isObject(json)) {\n\t\t\t\t\t\t\t\tthrow new Error(`Invalid server response: ${json}`);\n\t\t\t\t\t\t\t} else if (json.retCode && json.retCode < 0) {\n\t\t\t\t\t\t\t\tthrow new Error(`[Server error] ${json.retMsg}`);\n\t\t\t\t\t\t\t} else if (_.isArray(json.rows) && !json.rows.length) {\n\t\t\t\t\t\t\t\tthrow new Error(`Empty server response.`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn json;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(e => {\n\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.LOAD_APPROACH_TEST_RESULTS} error: ${e.message}`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(approachRunTestResult => {\n\t\t\t\t\t\t\tcontext\n\t\t\t\t\t\t\t\t.dispatch(ACTION_TYPES.MARK_VU_APPROACH_RESULTS_LOADED, {\n\t\t\t\t\t\t\t\t\tvuapproachesid,\n\t\t\t\t\t\t\t\t\tapproachtestid: approachRunTestResult.approachtestid,\n\t\t\t\t\t\t\t\t\tapproachRunTestResult: approachRunTestResult.rows,\n\t\t\t\t\t\t\t\t\tapproachRunNonTestableCounts:\n\t\t\t\t\t\t\t\t\t\tapproachRunTestResult.nonTestableTypeCounts,\n\t\t\t\t\t\t\t\t\tapproachRunId\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tcontext.dispatch(\n\t\t\t\t\t\t\t\t\t\tACTION_TYPES.SET_TEST_CONFIG_FROM_TEST_RESULT,\n\t\t\t\t\t\t\t\t\t\tapproachRunTestResult.rows\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.catch(e => console.error(e));\n\t\t\t\t\t\t\treturn approachRunTestResult;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn Promise.all(Object.values(ret));\n\t\t},\n\t\t[ACTION_TYPES.LOAD_MESSAGE_COUNTS_BY_APPROACH_DISTANCE](\n\t\t\tcontext,\n\t\t\t{ approachRunId }\n\t\t) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_MESSAGE_COUNTS_BY_APPROACH_DISTANCE,\n\t\t\t\t{ approachRunId }\n\t\t\t)\n\t\t\t\t.then(json => {\n\t\t\t\t\tif (_.isObject(json)) {\n\t\t\t\t\t\tif (json.retCode && json.retCode < 0) {\n\t\t\t\t\t\t\tthrow new Error(json.retMsg || \"Invalid server response.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn json;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.LOAD_MESSAGE_COUNTS_BY_APPROACH_DISTANCE}: ${e.message}`\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.LOAD_OVERALL_INTERSECTION_RESULT](\n\t\t\tcontext,\n\t\t\t{ rsuId, deviceId }\n\t\t) {\n\t\t\trsuId = rsuId || deviceId;\n\t\t\tconst resultIds = [];\n\t\t\t_.each(context.state.rsu_data[rsuId], rsuData => {\n\t\t\t\tif (\n\t\t\t\t\trsuData.completionApproachRunId &&\n\t\t\t\t\trsuData.approachRuns[rsuData.completionApproachRunId] &&\n\t\t\t\t\trsuData.approachRuns[rsuData.completionApproachRunId].approachtestid\n\t\t\t\t) {\n\t\t\t\t\tresultIds.push(\n\t\t\t\t\t\trsuData.approachRuns[rsuData.completionApproachRunId].approachtestid\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn API.postJson(\n\t\t\t\tAPI.ENDPOINTS.GENERATE_VU_FINAL_TEST,\n\t\t\t\tresultIds.map(i => {\n\t\t\t\t\treturn { id: i };\n\t\t\t\t}),\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ACTION_TYPES.LOAD_RSU_TEST_CONFIG](context, { rsuId }) {\n\t\t\tconst rsuTestConfig = context.getters.rsuTestConfig(rsuId);\n\t\t\t// If we're already loading test config for this rsu, bail out.\n\t\t\tif (rsuTestConfig && rsuTestConfig.isLoading)\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\tACTION_TYPES.LOAD_RSU_TEST_CONFIG +\n\t\t\t\t\t\t\t\": Already loading test config for RSU \" +\n\t\t\t\t\t\t\trsuId +\n\t\t\t\t\t\t\t\"; aborting.\"\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t// Note that this RSU is loading\n\t\t\tcontext.commit(MUTATION_TYPES.SET_RSU_TEST_CONFIG, {\n\t\t\t\trsuId,\n\t\t\t\tisLoading: true\n\t\t\t});\n\n\t\t\t// At some point this Promise will be the result of an API call to whatever method pulls test parameters for a given RSU.\n\t\t\tconst req = Promise.reject(\n\t\t\t\tnew Error(\"RSU-specific test parameters are not yet implemented.\")\n\t\t\t);\n\n\t\t\treturn req\n\t\t\t\t.then(testConfig => {\n\t\t\t\t\tif (_.isEmpty(testConfig) || !_.isObject(testConfig)) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\"Invalid or missing test parameters for rsu \" + rsuId + \".\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn testConfig;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\"Unable to load specific test parameters for RSU \" + rsuId + \": \",\n\t\t\t\t\t\te\n\t\t\t\t\t);\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t\t.then(testConfig => {\n\t\t\t\t\tif (_.isObject(testConfig)) {\n\t\t\t\t\t\t// If we got an object from the request, update the state accordingly.\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.SET_RSU_TEST_CONFIG, {\n\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\t...testConfig\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.SET_RSU_TEST_CONFIG, { rsuId });\n\t\t\t\t\t}\n\t\t\t\t\treturn context.getters.rsuTestConfig(rsuId);\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.LOAD_VU_APPROACHES](\n\t\t\tcontext,\n\t\t\t{ rsuId, deviceId, intersectionId, vuApproachLocationId }\n\t\t) {\n\t\t\trsuId = rsuId || deviceId;\n\t\t\tif (\n\t\t\t\tvuApproachLocationId &&\n\t\t\t\t!_.isUndefined(\n\t\t\t\t\tcontext.getters.approachesByVuApproachLocationId(vuApproachLocationId)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tcontext.getters.approachesByVuApproachLocationId(vuApproachLocationId)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tintersectionId &&\n\t\t\t\t!_.isUndefined(\n\t\t\t\t\tcontext.getters.approachesByIntersectionId(intersectionId)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tcontext.getters.approachesByIntersectionId(intersectionId)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (rsuId && !_.isUndefined(context.getters.rsuApproaches(rsuId))) {\n\t\t\t\treturn Promise.resolve(context.getters.rsuApproaches(rsuId));\n\t\t\t}\n\t\t\treturn (vuApproachLocationId // Load by vuApproachLocationId if known\n\t\t\t\t? API.getWithParamsJson(\n\t\t\t\t\t\tAPI.ENDPOINTS.GET_VUAPPROACHES_BY_VU_APPROACH_LOCATION_ID,\n\t\t\t\t\t\t{ vuApproachLocationId }\n\t\t\t\t )\n\t\t\t\t: intersectionId // Fall back to intersectionId if known\n\t\t\t\t? API.getWithParamsJson(\n\t\t\t\t\t\tAPI.ENDPOINTS.GET_VUAPPROACHES_BY_INTERSECTION_ID,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tintersectionId\n\t\t\t\t\t\t}\n\t\t\t\t )\n\t\t\t\t: // Fall back to rsuId if nothing else is available\n\t\t\t\t API.getWithParamsJson(API.ENDPOINTS.GET_VUAPPROACHES_BY_RSU_ID, {\n\t\t\t\t\t\trsuId\n\t\t\t\t })\n\t\t\t)\n\t\t\t\t.then(json => {\n\t\t\t\t\tif (!_.isArray(json)) {\n\t\t\t\t\t\tthrow new Error(`Invalid server response: ${json}`);\n\t\t\t\t\t}\n\t\t\t\t\treturn json;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.LOAD_VU_APPROACHES} error: ${e.message}`\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.then(vuApproaches => {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.VU_APPROACHES_UPDATE, {\n\t\t\t\t\t\trsuId,\n\t\t\t\t\t\tintersectionId,\n\t\t\t\t\t\tvuApproachLocationId,\n\t\t\t\t\t\tvuApproaches\n\t\t\t\t\t});\n\n\t\t\t\t\treturn vuApproaches;\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.LOAD_APPROACH_RUNS_FOR_TESTSETNUM](\n\t\t\t{ commit },\n\t\t\t{ testsetnum }\n\t\t) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.APPROACH_RUNS_BY_TESTSETNUM,\n\t\t\t\t{ testsetnum },\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (!res.success || !_.isArray(res.rows)) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.APPROACH_RUNS_BY_TESTSETNUM}: Server error (${res.retMsg}).`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst startTime = _.min(\n\t\t\t\t\t\tres.rows\n\t\t\t\t\t\t\t.map(row => row.actualStart)\n\t\t\t\t\t\t\t.filter(i => !!i)\n\t\t\t\t\t\t\t.map(start => new Date(start))\n\t\t\t\t\t);\n\t\t\t\t\tif (startTime) {\n\t\t\t\t\t\tcommit(MUTATION_TYPES.SET_START_TIME, startTime);\n\t\t\t\t\t}\n\t\t\t\t\t_.each(res.rows, row => {\n\t\t\t\t\t\tcommit(MUTATION_TYPES.MARK_VU_APPROACH_CLOSED, {\n\t\t\t\t\t\t\t...row,\n\t\t\t\t\t\t\tapproachRunId: row.approachrunid,\n\t\t\t\t\t\t\tvuapproachesid: row.approachid,\n\t\t\t\t\t\t\ttimestamp: new Date(row.timestamp).getTime(),\n\t\t\t\t\t\t\trsuId: row.rsuDeviceID\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\treturn res.rows;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn [];\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.MARK_VU_APPROACH_RESULTS_LOADING](\n\t\t\t{ state, commit },\n\t\t\t{ vuapproachesid }\n\t\t) {\n\t\t\t_.each(state.rsu_data, (rsuData, rsuId) =>\n\t\t\t\t_.each(rsuData, (approachData, approachid) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tvuapproachesid == approachid &&\n\t\t\t\t\t\tapproachData.resultPending &&\n\t\t\t\t\t\t!approachData.resultLoaded\n\t\t\t\t\t) {\n\t\t\t\t\t\tcommit(MUTATION_TYPES.MARK_VU_APPROACH_RESULT_LOADING, {\n\t\t\t\t\t\t\tvuapproachesid,\n\t\t\t\t\t\t\trsuId\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t[ACTION_TYPES.MARK_VU_APPROACH_RESULTS_LOADED](\n\t\t\t{ state, commit },\n\t\t\t{\n\t\t\t\tvuapproachesid,\n\t\t\t\tapproachRunId,\n\t\t\t\tapproachRunTestResult,\n\t\t\t\tapproachRunNonTestableCounts,\n\t\t\t\tapproachtestid\n\t\t\t}\n\t\t) {\n\t\t\t_.each(state.rsu_data, (rsuData, rsuId) =>\n\t\t\t\t_.each(rsuData, (approachData, approachid) => {\n\t\t\t\t\tif (vuapproachesid == approachid) {\n\t\t\t\t\t\tcommit(MUTATION_TYPES.SET_APPROACH_TEST_RESULT, {\n\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\tvuapproachesid,\n\t\t\t\t\t\t\tapproachRunId,\n\t\t\t\t\t\t\tapproachRunTestResult,\n\t\t\t\t\t\t\tapproachRunNonTestableCounts,\n\t\t\t\t\t\t\tapproachtestid\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (approachData.completionApproachRunId == approachRunId) {\n\t\t\t\t\t\tcommit(MUTATION_TYPES.MARK_VU_APPROACH_RESULT_LOADED, {\n\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\tvuapproachesid\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// This mutation will also populate resultData in the approach data.\n\t\t\t\t\t\tcommit(MUTATION_TYPES.SET_COMPLETION_APPROACH_RUN, {\n\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\tvuapproachesid,\n\t\t\t\t\t\t\tapproachRunId\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t[ACTION_TYPES.SET_TEST_CONFIG_FROM_TESTSETNUM](\n\t\t\t{ dispatch },\n\t\t\t{ testsetnum }\n\t\t) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_TEST_CONFIG_BY_TESTSETNUM,\n\t\t\t\t{ testsetnum },\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn { success: false, rows: [] };\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.success && res.rows && res.rows.length)\n\t\t\t\t\t\treturn dispatch(\n\t\t\t\t\t\t\tACTION_TYPES.SET_TEST_CONFIG_FROM_TEST_RESULT,\n\t\t\t\t\t\t\tres.rows\n\t\t\t\t\t\t);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.debug(res);\n\t\t\t\t\t\tthrow new Error(\"Invalid server response.\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.SET_TEST_CONFIG_FROM_TESTSETNUM}: ${e.message}`\n\t\t\t\t\t);\n\t\t\t\t\tconsole.debug(e);\n\t\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.SET_TEST_CONFIG_FROM_TEST_RESULT](\n\t\t\t{ commit },\n\t\t\ttestResultRows\n\t\t) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst test_config = {};\n\t\t\t\t_.each(testResultRows, row => {\n\t\t\t\t\tconst msgTypeData = DSRCmessage.get(row.messageTypeId);\n\t\t\t\t\tconst msgType = msgTypeData && msgTypeData.slug;\n\t\t\t\t\tif (!msgType) return;\n\n\t\t\t\t\ttest_config[`${msgType}_validation_frequency`] =\n\t\t\t\t\t\trow.validationFrequency;\n\t\t\t\t\ttest_config[`${msgType}_error_threshold_pct`] = row.errorThresholdPct;\n\t\t\t\t\ttest_config[`${msgType}_expected`] = !!row.expected;\n\t\t\t\t});\n\t\t\t\tif (_.isEmpty(test_config))\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.SET_TEST_CONFIG_FROM_TEST_RESULT}: Unable to derive test config from given test result.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\tcommit(MUTATION_TYPES.SET_TEST_CONFIG, test_config);\n\t\t\t\treturn resolve(test_config);\n\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.CLEANUP](context, { protectedRsuIds }) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t// Overshoot by 10% so once we start hitting this we might not have to cleanup every single time.\n\t\t\t\tconst targetCount = Math.ceil(0.9 * MODULE_CONFIG.MAX_LOCATIONS);\n\t\t\t\tvar locationBuckets = context.getters.locationHistory;\n\t\t\t\tif (locationBuckets.length <= MODULE_CONFIG.MAX_LOCATIONS) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\tACTION_TYPES.CLEANUP +\n\t\t\t\t\t\t\t\t\": \" +\n\t\t\t\t\t\t\t\tlocationBuckets.length +\n\t\t\t\t\t\t\t\t\" TFM-VU location history items found out of \" +\n\t\t\t\t\t\t\t\tMODULE_CONFIG.MAX_LOCATIONS +\n\t\t\t\t\t\t\t\t\" allowed. Nothing to do.\"\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tprotectedRsuIds = _.reduce(\n\t\t\t\t\tprotectedRsuIds,\n\t\t\t\t\t(r, i) => {\n\t\t\t\t\t\tr[i] = true;\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\t\twhile (locationBuckets.length && locationBuckets.length > targetCount) {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.DELETE_LOCATION);\n\t\t\t\t}\n\t\t\t\treturn resolve(true);\n\t\t\t});\n\t\t}\n\t},\n\tgetters: {\n\t\t// Constants\n\t\tTEST_RESULTS: () => {\n\t\t\treturn {\n\t\t\t\tPASS: \"PASS\",\n\t\t\t\tFAIL: \"FAIL\",\n\t\t\t\tUNHEARD: \"UNHEARD\",\n\t\t\t\tNULL: \"NULL\"\n\t\t\t};\n\t\t},\n\t\tLATEST_MONITOR_FRAME_TIMEOUT_SECS: () =>\n\t\t\tMODULE_CONFIG.LATEST_MONITOR_FRAME_TIMEOUT_SECS,\n\t\tminNonStationarySpeed: () => MODULE_CONFIG.MIN_NON_STATIONARY_SPEED,\n\t\t// Regular Expressions\n\t\tfvuMonitorRegexp: () => MODULE_CONFIG.FVU_MONITOR_REGEXP,\n\t\tpartialParserRegexp: () => MODULE_CONFIG.PARTIAL_PARSER_REGEXP,\n\t\tgpsRegexp: () => MODULE_CONFIG.GPS_REGEXP,\n\t\tdeviceMessageRegexp: () => MODULE_CONFIG.DEVICE_MESSAGE_REGEXP,\n\n\t\tdsrcMessageTypes: () =>\n\t\t\t[\"SPAT\", \"MAP\", \"TIM\" /*, \"SSM\"*/, \"BSM\", \"WSA\"].map(DSRCmessage.get),\n\t\tj2735MessageTypes: (state, getters) =>\n\t\t\tgetters.dsrcMessageTypes.filter(t => t.standard == \"J2735\"),\n\t\ttestableMessageTypes: (state, getters) =>\n\t\t\tgetters.dsrcMessageTypes.filter(t => !!t.testable),\n\t\tnonTestableMessageTypes: (state, getters) =>\n\t\t\tgetters.dsrcMessageTypes.filter(t => !t.testable),\n\t\tstartTime: state => state.startTime,\n\t\tnow: state => state.now || new Date().getTime(),\n\t\tapproachRunIdsToLoad: state => {\n\t\t\tconst ret = {};\n\n\t\t\t_.each(state.rsu_data, (rsuData, rsuId) =>\n\t\t\t\t_.each(rsuData, (approachData, vuapproachesid) =>\n\t\t\t\t\t_.each(approachData.approachRuns, approachRunData => {\n\t\t\t\t\t\tif (!approachRunData.resultData) {\n\t\t\t\t\t\t\tret[approachRunData.approachRunId] = {\n\t\t\t\t\t\t\t\tisCompletionRun:\n\t\t\t\t\t\t\t\t\tapproachData.completionApproachRunId ==\n\t\t\t\t\t\t\t\t\tapproachRunData.approachRunId,\n\t\t\t\t\t\t\t\tapproachRunId: approachRunData.approachRunId,\n\t\t\t\t\t\t\t\tapproachtestid: approachRunData.approachtestid,\n\t\t\t\t\t\t\t\tvuapproachesid,\n\t\t\t\t\t\t\t\trsuId\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn Object.values(ret);\n\t\t},\n\t\tlocationHistory: state => state.location_history,\n\t\tlatestFvuGpsData: (state, getters) => {\n\t\t\tconst locationHistory = getters.locationHistory;\n\t\t\tif (locationHistory.length == 1) {\n\t\t\t\treturn locationHistory[0].gpsData;\n\t\t\t}\n\n\t\t\tvar ret = null;\n\t\t\tvar last;\n\t\t\t_.eachRight(locationHistory, lhItem => {\n\t\t\t\tif (last) {\n\t\t\t\t\tconst tooClose =\n\t\t\t\t\t\tlast.tooCloseTo && last.tooCloseTo == lhItem.latlngHash;\n\t\t\t\t\tconst tooFar =\n\t\t\t\t\t\tlast.tooFarFrom && last.tooFarFrom == lhItem.latlngHash;\n\t\t\t\t\tconst stationary = last.stationary;\n\t\t\t\t\tif (!tooClose && !tooFar && !stationary) {\n\t\t\t\t\t\tret = last.gpsData;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlast = lhItem;\n\t\t\t});\n\t\t\treturn ret || (last && last.gpsData);\n\t\t},\n\t\tlatestFvuPosition: (state, getters) => {\n\t\t\tconst gpsData = getters.latestFvuGpsData;\n\t\t\tif (\n\t\t\t\t!gpsData ||\n\t\t\t\t!_.isNumber(gpsData.latitude) ||\n\t\t\t\t!_.isNumber(gpsData.longitude)\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn [gpsData.latitude, gpsData.longitude];\n\t\t},\n\t\tlatestFvuHeading: (state, getters) =>\n\t\t\tgetters.latestFvuGpsData && getters.latestFvuGpsData.heading,\n\t\tlatestMonitorFrame: (state, getters) => {\n\t\t\tconst ret = state.latest_monitor_frame;\n\t\t\tconst now = state.now || new Date().getTime();\n\t\t\tconst age =\n\t\t\t\tret && ret.timestamp && now - new Date(ret.timestamp).getTime();\n\t\t\tif (age && age >= 1000 * getters.LATEST_MONITOR_FRAME_TIMEOUT_SECS) {\n\t\t\t\tconsole.debug(\n\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\"/latestMonitorFrame: Returning NULL because stored frame is \" +\n\t\t\t\t\t\tage +\n\t\t\t\t\t\t\"ms old.\"\n\t\t\t\t);\n\t\t\t\tconsole.debug(ret);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn ret;\n\t\t},\n\t\tlatestMonitorFrameRSUs: (state, getters, rootState, rootGetters) => {\n\t\t\tconst rsus = [];\n\t\t\tconst latestMonitorFrame = getters.latestMonitorFrame;\n\t\t\tif (latestMonitorFrame && latestMonitorFrame.type) {\n\t\t\t\t_.each(latestMonitorFrame.type, typeData => {\n\t\t\t\t\t_.each(typeData.messages, messageData => {\n\t\t\t\t\t\tconst rsu = rootGetters[`${RsuStore.MODULE_NAME}/byIdentifier`](\n\t\t\t\t\t\t\tmessageData.rsuId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (rsu) rsus.push(rsu);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn rsus;\n\t\t},\n\t\tlatlngHash: () => {\n\t\t\treturn getLatLngHash;\n\t\t},\n\t\tapproachesForPoint: state => {\n\t\t\treturn ({ vuApproachLocationId, latitude, longitude, filterFn }) => {\n\t\t\t\tvar ret = [];\n\t\t\t\tfilterFn = filterFn || (i => !!i);\n\t\t\t\t_.each(state.vu_approaches[vuApproachLocationId], vuApproach => {\n\t\t\t\t\tif (filterFn(vuApproach)) {\n\t\t\t\t\t\t_.each(vuApproach.geoJSON.coordinates, polygon => {\n\t\t\t\t\t\t\tif (pointInPolygon([longitude, latitude], polygon)) {\n\t\t\t\t\t\t\t\tret.push(vuApproach);\n\t\t\t\t\t\t\t\tif (ret.length > 1) return false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\tvuApproachLocationId: state => {\n\t\t\treturn ({ rsuId, deviceId, intersectionId, vuApproachLocationId }) => {\n\t\t\t\tif (vuApproachLocationId) {\n\t\t\t\t\treturn vuApproachLocationId;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tintersectionId &&\n\t\t\t\t\tstate.vu_approach_location_reference.intersectionId[intersectionId]\n\t\t\t\t) {\n\t\t\t\t\treturn state.vu_approach_location_reference.intersectionId[\n\t\t\t\t\t\tintersectionId\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\trsuId = rsuId || deviceId;\n\t\t\t\tif (rsuId && state.vu_approach_location_reference.rsuId[rsuId]) {\n\t\t\t\t\treturn state.vu_approach_location_reference.rsuId[rsuId];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\t\t},\n\t\tapproachesByVuApproachLocationId: state => {\n\t\t\treturn vuApproachLocationId => state.vu_approaches[vuApproachLocationId];\n\t\t},\n\t\trsuApproaches: (state, getters, rootState, rootGetters) => {\n\t\t\treturn rsuId => {\n\t\t\t\tconst rsu = rootGetters[RsuStore.MODULE_NAME + \"/byIdentifier\"](rsuId);\n\t\t\t\tif (!rsu) return null;\n\t\t\t\treturn getters.approachesByVuApproachLocationId(\n\t\t\t\t\tgetters.vuApproachLocationId(rsu)\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tapproachesByIntersectionId: (state, getters) => {\n\t\t\treturn intersectionId =>\n\t\t\t\tgetters.approachesByVuApproachLocationId(\n\t\t\t\t\tgetters.vuApproachLocationId({ intersectionId })\n\t\t\t\t);\n\t\t},\n\t\tcompletionApproachRun: (state, getters) => {\n\t\t\treturn ({ rsuId, deviceId, vuapproachesid }) => {\n\t\t\t\trsuId = rsuId || deviceId;\n\t\t\t\tconst approachRuns = getters.approachRuns({ rsuId, vuapproachesid });\n\t\t\t\tif (approachRuns) {\n\t\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\t\tif (rsuData.completionApproachRunId)\n\t\t\t\t\t\treturn approachRuns[rsuData.completionApproachRunId];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\t\t},\n\t\tapproachRuns: (state, getters) => {\n\t\t\treturn ({ rsuId, deviceId, vuapproachesid }) => {\n\t\t\t\trsuId = rsuId || deviceId;\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\tconst approachData = rsuData && rsuData[vuapproachesid];\n\t\t\t\treturn approachData && approachData.approachRuns;\n\t\t\t};\n\t\t},\n\t\trsuApproachComplete: (state, getters) => {\n\t\t\treturn ({ rsuId, vuapproachesid }) => {\n\t\t\t\tvar ret = null;\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\tif (rsuData && rsuData[vuapproachesid]) {\n\t\t\t\t\tret =\n\t\t\t\t\t\trsuData[vuapproachesid].approachComplete &&\n\t\t\t\t\t\t!rsuData[vuapproachesid].resultPending;\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\trsuAllApproachesComplete: (state, getters) => {\n\t\t\treturn ({ rsuId, deviceId }) => {\n\t\t\t\trsuId = rsuId || deviceId;\n\n\t\t\t\tconst parentApproaches = Object.values(\n\t\t\t\t\tgetters.rsuApproaches(rsuId)\n\t\t\t\t).filter(\n\t\t\t\t\tvuApproach =>\n\t\t\t\t\t\tvuApproach.vuapproachesid !=\n\t\t\t\t\t\t\tMODULE_CONFIG.FALLBACK_APPROACH.vuapproachesid &&\n\t\t\t\t\t\t!vuApproach.parentapproachid\n\t\t\t\t);\n\t\t\t\treturn (\n\t\t\t\t\tparentApproaches.length &&\n\t\t\t\t\t_.reduce(\n\t\t\t\t\t\tparentApproaches,\n\t\t\t\t\t\t(r, vuApproach) => {\n\t\t\t\t\t\t\t// const ret = getters.rsuApproachComplete({ rsuId, ...vuApproach });\n\t\t\t\t\t\t\t// console.log(r && ret);\n\t\t\t\t\t\t\t// debugger;\n\t\t\t\t\t\t\t// return r && ret;\n\t\t\t\t\t\t\treturn r && getters.rsuApproachComplete({ rsuId, ...vuApproach });\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\trsuApproachValidationError: (state, getters) => {\n\t\t\treturn ({ rsuId, vuapproachesid }) => {\n\t\t\t\tvar ret = null;\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\tif (rsuData && rsuData[vuapproachesid]) {\n\t\t\t\t\tconst invalidApproachRuns = _.reduce(\n\t\t\t\t\t\trsuData[vuapproachesid].approachRuns,\n\t\t\t\t\t\t(r, ar) => {\n\t\t\t\t\t\t\tif (!ar.validated) r.push(ar);\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tif (invalidApproachRuns.length) {\n\t\t\t\t\t\tinvalidApproachRuns.sort((a, b) => b.timestamp - a.timestamp);\n\t\t\t\t\t\tret = invalidApproachRuns[0].validationDetails;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\trsuApproachObservedTypeFrequency: (state, getters) => {\n\t\t\t// console.warn(\"rsuApp\", 8);\n\t\t\treturn ({ rsuId, vuapproachesid, type }) => {\n\t\t\t\tvar ret = null;\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\ttry {\n\t\t\t\t\tif (\n\t\t\t\t\t\trsuData &&\n\t\t\t\t\t\trsuData[vuapproachesid] &&\n\t\t\t\t\t\trsuData[vuapproachesid][type]\n\t\t\t\t\t) {\n\t\t\t\t\t\tret =\n\t\t\t\t\t\t\trsuData[vuapproachesid].gpsCount &&\n\t\t\t\t\t\t\trsuData[vuapproachesid][type].parserCount /\n\t\t\t\t\t\t\t\trsuData[vuapproachesid].gpsCount;\n\t\t\t\t\t\t// rsuData[vuapproachesid][type].freqTotal /\n\t\t\t\t\t\t// rsuData[vuapproachesid][type].freqCount;\n\t\t\t\t\t}\n\t\t\t\t\tif (isNaN(ret)) throw \"NaN\";\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(\"Error calculating rsuApproachObservedFrequency\", e);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\n\t\trsuApproachTimeWithin: (state, getters) => {\n\t\t\treturn ({ rsuId, vuapproachesid }) => {\n\t\t\t\tvar ret = null;\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\ttry {\n\t\t\t\t\tif (rsuData && rsuData[vuapproachesid]) {\n\t\t\t\t\t\tret = rsuData[vuapproachesid].gpsCount * 1000;\n\t\t\t\t\t}\n\t\t\t\t\tif (isNaN(ret)) throw \"NaN\";\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.debug(\"Error calculating rsuApproachTimeWithin\", e);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\n\t\trsuData: state => {\n\t\t\treturn rsuId => {\n\t\t\t\treturn state.rsu_data[rsuId];\n\t\t\t};\n\t\t},\n\n\t\trsuRecentSignalStrength: (state, getters, rootState, rootGetters) => {\n\t\t\treturn ({ deviceId, rsuId }) => {\n\t\t\t\trsuId = rsuId || deviceId;\n\t\t\t\tconst rsu = rootGetters[RsuStore.MODULE_NAME + \"/byIdentifier\"](rsuId);\n\t\t\t\tconst monitorFrame = getters.latestMonitorFrame;\n\t\t\t\tlet ret;\n\t\t\t\tif (rsu && monitorFrame) {\n\t\t\t\t\t// Walk the monitorFrame looking for partialParser messages for this RSU with an RSSI value\n\t\t\t\t\tlet rssi = [];\n\t\t\t\t\t_.each(monitorFrame.type, typeData => {\n\t\t\t\t\t\t_.each(typeData.messages, rsuData => {\n\t\t\t\t\t\t\tif (rsuData.rsuId == rsuId) {\n\t\t\t\t\t\t\t\trssi.push(\n\t\t\t\t\t\t\t\t\t..._.reduce(\n\t\t\t\t\t\t\t\t\t\trsuData.partialParser,\n\t\t\t\t\t\t\t\t\t\t(collectedRssi, ppData) => {\n\t\t\t\t\t\t\t\t\t\t\tif (_.isNumber(ppData.Rssi)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcollectedRssi.push(ppData.Rssi);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn collectedRssi;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tif (rssi.length) {\n\t\t\t\t\t\t// We have recent rssi information for this RSU. Let's map it to a 1-5 scale.\n\t\t\t\t\t\t// This transformation is based on an expected range of RSSI values that goes from roughly -100 dBm to -60 dBm.\n\t\t\t\t\t\tret = Math.max(\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\tMath.round(_.mean(rssi.map(i => (2.5 * (100 + i)) / 20)))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\n\t\ttestConfig: (state, getters) => {\n\t\t\treturn rsuId => {\n\t\t\t\t// User defined always overrides\n\t\t\t\tif (!_.isEmpty(state.test_config)) return state.test_config;\n\t\t\t\t// Then rsu-specific config, if an rsuId was given and we have it.\n\t\t\t\t// Note that it's up to the caller to check for the isLoading flag\n\t\t\t\tconst rsuTestConfig = (rsuId && getters.rsuTestConfig(rsuId)) || {};\n\t\t\t\treturn Object.assign({}, getters.defaultTestConfig, rsuTestConfig);\n\t\t\t};\n\t\t},\n\t\tdefaultTestConfig: (state, getters, globalState) => {\n\t\t\tconst ret = {};\n\t\t\tconst vFreqFactor = Math.pow(\n\t\t\t\t10,\n\t\t\t\tMODULE_CONFIG.VALIDATION_FREQUENCY_PRECISION\n\t\t\t);\n\n\t\t\t// User profile attribute for message pass rate.\n\t\t\tconst attrKey = \"vuatppass\";\n\t\t\tlet vuatppass = 0.7;\n\n\t\t\t// If profile attribute is available and parseable, then use it.\n\t\t\tif (!isNaN(globalState.user.profileAttributes[attrKey])) {\n\t\t\t\tvuatppass = parseFloat(globalState.user.profileAttributes[attrKey]);\n\t\t\t}\n\n\t\t\t// Limit vuatppass between 0 and 1.\n\t\t\tif (vuatppass < 0) {\n\t\t\t\tvuatppass = 0;\n\t\t\t}\n\t\t\tif (vuatppass > 1) {\n\t\t\t\tvuatppass = 1;\n\t\t\t}\n\n\t\t\t_.each(getters.testableMessageTypes, msgType => {\n\t\t\t\tret[msgType.slug + \"_error_threshold_pct\"] = 10;\n\t\t\t\tif (msgType.expectedFrequency) {\n\t\t\t\t\tret[msgType.slug + \"_validation_frequency\"] =\n\t\t\t\t\t\tMath.round(msgType.expectedFrequency * vuatppass * vFreqFactor) /\n\t\t\t\t\t\tvFreqFactor;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ret;\n\t\t},\n\t\trsuTestConfig: state => {\n\t\t\treturn rsuId => {\n\t\t\t\treturn state.rsu_test_config[rsuId];\n\t\t\t};\n\t\t},\n\t\tdynamicTestResult: (state, getters) => {\n\t\t\t// Run a test on the contents of the latest data frame only, optionally limited to one RSU.\n\t\t\t// Used in FvuMonitorMap to color the dynamic indicator for the activeFvu.\n\t\t\treturn ({ rsuId, deviceId }) => {\n\t\t\t\trsuId = rsuId || deviceId;\n\t\t\t\tconst monitorFrame = getters.latestMonitorFrame;\n\n\t\t\t\t// Init ret and dataByMsgType\n\t\t\t\tconst ret = { overall: getters.TEST_RESULTS.NULL };\n\t\t\t\tconst dataByMsgType = {};\n\t\t\t\t_.each(getters.testableMessageTypes, msgTypeData => {\n\t\t\t\t\tconst msgType = msgTypeData.slug;\n\t\t\t\t\tret[msgType] = getters.TEST_RESULTS.NULL;\n\t\t\t\t\tdataByMsgType[msgType] = {\n\t\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\t\tidleCount: 0,\n\t\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\t\tparserCount: 0\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\t// Loop over the \"type\" array in the latest frame, discarding any not related to the given rsu, if one was given, and accumulate results in dataByMsgType\n\t\t\t\tif (!monitorFrame || !monitorFrame.type || !monitorFrame.type.length) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t\t_.each(monitorFrame.type, typeFrameData => {\n\t\t\t\t\tconst msgTypeData = DSRCmessage.get(typeFrameData.id);\n\t\t\t\t\tconst msgType = msgTypeData && msgTypeData.slug;\n\t\t\t\t\tif (!msgType) return;\n\t\t\t\t\t_.each(typeFrameData.messages, rsuMessage => {\n\t\t\t\t\t\t// If we were asked about a specific RSU and this message is about a different one, discard it.\n\t\t\t\t\t\tif (rsuId && rsuMessage.rsuId != rsuId) return;\n\t\t\t\t\t\t_.each([\"partialParser\", \"frequencyChecker\"], srcKey =>\n\t\t\t\t\t\t\t_.each(rsuMessage[srcKey], srcData => {\n\t\t\t\t\t\t\t\tsetErrorUnheardFlags(srcData);\n\t\t\t\t\t\t\t\tswitch (srcKey) {\n\t\t\t\t\t\t\t\t\tcase \"frequencyChecker\":\n\t\t\t\t\t\t\t\t\t\tsrcData.WindowSizeSeconds = srcData.WindowSizeSeconds || 1;\n\t\t\t\t\t\t\t\t\t\tif (srcData.isUnheard) {\n\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].idleCount++;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].freqCount +=\n\t\t\t\t\t\t\t\t\t\t\t\tsrcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].freqTotal +=\n\t\t\t\t\t\t\t\t\t\t\t\tsrcData.FrequencyHz * srcData.WindowSizeSeconds;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase \"partialParser\":\n\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].parserCount++;\n\t\t\t\t\t\t\t\t\t\tif (srcData.isError) {\n\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].parserErrorCount++;\n\t\t\t\t\t\t\t\t\t\t\tif (!srcData.IsCorrectFormat) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].parserFormatErrorCount++;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (!srcData.IsCorrectContent) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataByMsgType[msgType].parserContentErrorCount++;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t// Then use the accumulated data to determine a TEST_RESULT for each message type, then put them together for an overall\n\t\t\t\tconst resultCounts = _.reduce(\n\t\t\t\t\tgetters.TEST_RESULTS,\n\t\t\t\t\t(r, v, k) => {\n\t\t\t\t\t\tr[k] = 0;\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\t\t\t\t_.each(getters.testableMessageTypes, msgTypeData => {\n\t\t\t\t\tconst msgType = msgTypeData.slug;\n\t\t\t\t\tret[msgType] = getters.msgTypeTestResult({\n\t\t\t\t\t\trsuId,\n\t\t\t\t\t\tmsgType,\n\t\t\t\t\t\tdata: dataByMsgType[msgType]\n\t\t\t\t\t});\n\t\t\t\t\tresultCounts[ret[msgType]]++;\n\t\t\t\t});\n\t\t\t\tif (resultCounts[getters.TEST_RESULTS.FAIL]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.FAIL;\n\t\t\t\t} else if (resultCounts[getters.TEST_RESULTS.UNHEARD]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.UNHEARD;\n\t\t\t\t} else if (resultCounts[getters.TEST_RESULTS.PASS]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.PASS;\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\trsuTestResult: (state, getters) => {\n\t\t\treturn ({ rsuId }) => {\n\t\t\t\tconst data = state.rsu_data[rsuId];\n\t\t\t\tvar ret = {\n\t\t\t\t\toverall: getters.TEST_RESULTS.NULL,\n\t\t\t\t\tcounts: { latlng: { total: 0 }, msgType: { total: 0 } },\n\t\t\t\t\ttestStart: null,\n\t\t\t\t\ttestEnd: null,\n\t\t\t\t\tlatlngResults: {},\n\t\t\t\t\tmsgTypeResults: {}\n\t\t\t\t};\n\t\t\t\t_.each(getters.TEST_RESULTS, v => {\n\t\t\t\t\tret.counts.latlng[v] = 0;\n\t\t\t\t\tret.counts.msgType[v] = 0;\n\t\t\t\t});\n\t\t\t\tif (!data) return ret;\n\t\t\t\t_.each(getters.testableMessageTypes, msgTypeData => {\n\t\t\t\t\tconst res = getters.msgTypeTestResult({\n\t\t\t\t\t\trsuId,\n\t\t\t\t\t\tmsgType: msgTypeData.slug\n\t\t\t\t\t});\n\t\t\t\t\tret.msgTypeResults[msgTypeData.slug] = res;\n\t\t\t\t\tret.counts.msgType[res]++;\n\t\t\t\t\tret.counts.msgType.total++;\n\t\t\t\t});\n\t\t\t\t_.each(data, (latlngData, latlngHash) => {\n\t\t\t\t\tconst res = getters.latlngTestResult({ rsuId, latlngHash });\n\t\t\t\t\tif (res.testStart) {\n\t\t\t\t\t\tret.testStart = _.min([ret.testStart, res.testStart]);\n\t\t\t\t\t}\n\t\t\t\t\tif (res.testEnd) {\n\t\t\t\t\t\tret.testEnd = _.max([ret.testEnd, res.testEnd]);\n\t\t\t\t\t}\n\t\t\t\t\tret.latlngResults[latlngHash] = res;\n\t\t\t\t\tret.counts.latlng[res.overall]++;\n\t\t\t\t\tret.counts.latlng.total++;\n\t\t\t\t});\n\t\t\t\tif (ret.counts.msgType[getters.TEST_RESULTS.FAIL]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.FAIL;\n\t\t\t\t} else if (ret.counts.msgType[getters.TEST_RESULTS.UNHEARD]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.UNHEARD;\n\t\t\t\t} else if (ret.counts.msgType[getters.TEST_RESULTS.PASS]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.PASS;\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\tlatlngTestResult: (state, getters) => {\n\t\t\treturn ({ rsuId, latlngHash }) => {\n\t\t\t\tconst data = state.rsu_data[rsuId] && state.rsu_data[rsuId][latlngHash];\n\t\t\t\tconst overrideResult = data && data.testResult;\n\t\t\t\tvar ret = {\n\t\t\t\t\toverall: overrideResult || getters.TEST_RESULTS.NULL,\n\t\t\t\t\tcounts: { total: 0 },\n\t\t\t\t\tmsgTypeResults: {}\n\t\t\t\t};\n\t\t\t\t_.each(getters.TEST_RESULTS, v => (ret.counts[v] = 0));\n\t\t\t\tif (!data) return ret;\n\t\t\t\t_.each(\n\t\t\t\t\t[\n\t\t\t\t\t\t\"approachComplete\",\n\t\t\t\t\t\t\"completionApproachRunId\",\n\t\t\t\t\t\t\"resultPending\",\n\t\t\t\t\t\t\"resultLoading\",\n\t\t\t\t\t\t\"resultLoaded\"\n\t\t\t\t\t],\n\t\t\t\t\tkey => {\n\t\t\t\t\t\tif (!_.isUndefined(data[key])) {\n\t\t\t\t\t\t\tret[key] = data[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tret.testStart = data.enteredAt;\n\t\t\t\tret.testEnd = data.exitedAt;\n\n\t\t\t\t_.each(getters.testableMessageTypes, msgTypeData => {\n\t\t\t\t\tconst msgType = msgTypeData.slug;\n\t\t\t\t\tconst res = getters.msgTypeTestResult({ rsuId, latlngHash, msgType });\n\t\t\t\t\tret.msgTypeResults[msgType] = res;\n\t\t\t\t\tret.counts[res]++;\n\t\t\t\t\tret.counts.total++;\n\t\t\t\t});\n\t\t\t\tif (overrideResult) {\n\t\t\t\t\tret.overall = overrideResult;\n\t\t\t\t} else if (ret.counts[getters.TEST_RESULTS.FAIL]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.FAIL;\n\t\t\t\t} else if (ret.counts[getters.TEST_RESULTS.UNHEARD]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.UNHEARD;\n\t\t\t\t} else if (ret.counts[getters.TEST_RESULTS.PASS]) {\n\t\t\t\t\tret.overall = getters.TEST_RESULTS.PASS;\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\tmsgTypeTestResult: (state, getters, rootState, rootGetters) => {\n\t\t\treturn ({ rsuId, latlngHash, msgType, data }) => {\n\t\t\t\tconst msgTypeData = DSRCmessage.get(msgType);\n\t\t\t\tif (!data) {\n\t\t\t\t\tdata =\n\t\t\t\t\t\tmsgTypeData &&\n\t\t\t\t\t\t(latlngHash\n\t\t\t\t\t\t\t? state.rsu_data[rsuId] &&\n\t\t\t\t\t\t\t state.rsu_data[rsuId][latlngHash] &&\n\t\t\t\t\t\t\t state.rsu_data[rsuId][latlngHash][msgTypeData.slug]\n\t\t\t\t\t\t\t: getters.flattenedRsuData(rsuId)[msgTypeData.slug]);\n\t\t\t\t}\n\t\t\t\tif (data && data.testResult) {\n\t\t\t\t\treturn data.testResult;\n\t\t\t\t}\n\t\t\t\tconst shouldHaveType = rsuId\n\t\t\t\t\t? rootGetters[RsuStore.MODULE_NAME + \"/shouldHaveType\"]({\n\t\t\t\t\t\t\trsuId,\n\t\t\t\t\t\t\tmsgType\n\t\t\t\t\t })\n\t\t\t\t\t: null;\n\t\t\t\tif (!data || !msgTypeData) {\n\t\t\t\t\treturn shouldHaveType\n\t\t\t\t\t\t? getters.TEST_RESULTS.UNHEARD\n\t\t\t\t\t\t: getters.TEST_RESULTS.NULL;\n\t\t\t\t}\n\t\t\t\tif (msgTypeData.expectedFrequency) {\n\t\t\t\t\tif (!data.parserCount) {\n\t\t\t\t\t\treturn getters.TEST_RESULTS.UNHEARD;\n\t\t\t\t\t}\n\t\t\t\t\tconst validationFrequency = getters.testConfig(rsuId)[\n\t\t\t\t\t\tmsgTypeData.slug + \"_validation_frequency\"\n\t\t\t\t\t];\n\t\t\t\t\t// AVERAGE frequency for this rsu[/location]/msgtype\n\t\t\t\t\tconst avgFreq = data.gpsCount\n\t\t\t\t\t\t? data.parserCount / data.gpsCount\n\t\t\t\t\t\t: // Fall back on frequencyChecker data when we don't have gpsCount (e.g. in the dynamic test)\n\t\t\t\t\t\tdata.freqCount\n\t\t\t\t\t\t? data.freqTotal / data.freqCount\n\t\t\t\t\t\t: // If we have no gpsCount AND no frequencyChecker data, assume this is one monitor frame\n\t\t\t\t\t\t data.parserCount;\n\n\t\t\t\t\tif (avgFreq < validationFrequency) {\n\t\t\t\t\t\treturn getters.TEST_RESULTS.FAIL;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst errorThresholdPct = getters.testConfig(rsuId)[\n\t\t\t\t\tmsgTypeData.slug + \"_error_threshold_pct\"\n\t\t\t\t];\n\t\t\t\tif (!data.parserCount) {\n\t\t\t\t\treturn getters.TEST_RESULTS.NULL;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tdata.parserErrorCount / data.parserCount >=\n\t\t\t\t\terrorThresholdPct / 100\n\t\t\t\t) {\n\t\t\t\t\treturn getters.TEST_RESULTS.FAIL;\n\t\t\t\t}\n\n\t\t\t\treturn getters.TEST_RESULTS.PASS;\n\t\t\t};\n\t\t},\n\t\taverageFrequency: (state, getters) => {\n\t\t\treturn ({ rsuId, msgType, vuapproachesid }) => {\n\t\t\t\tif (!rsuId) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${MODULE_NAME}/averageFrequency: Missing or invalid rsuid: \"${rsuId}\"`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst msgTypeData = DSRCmessage.get(msgType);\n\t\t\t\tif (!msgTypeData) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${MODULE_NAME}/averageFrequency: Missing or invalid msgType: \"${msgType}\"`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst allData = vuapproachesid\n\t\t\t\t\t? getters.rsuData(rsuId)[vuapproachesid]\n\t\t\t\t\t: getters.flattenedRsuData(rsuId);\n\t\t\t\tconst data = allData && allData[msgType];\n\t\t\t\tif (!data) return null;\n\t\t\t\tif (data.gpsCount) {\n\t\t\t\t\treturn data.parserCount / data.gpsCount;\n\t\t\t\t} else if (data.freqCount) {\n\t\t\t\t\treturn data.freqTotal / data.freqCount;\n\t\t\t\t} else if (data.parserCount) {\n\t\t\t\t\treturn data.parserCount;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tflattenedRsuData: (state, getters) => {\n\t\t\treturn rsuId => {\n\t\t\t\tconst rsuData = getters.rsuData(rsuId);\n\t\t\t\tconst ret = {\n\t\t\t\t\tgpsCount: 0,\n\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\tidleCount: 0,\n\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\tparserCount: 0,\n\t\t\t\t\tlatestTimestamp: null\n\t\t\t\t};\n\n\t\t\t\t_.each(rsuData, latlngData => {\n\t\t\t\t\tret.gpsCount += latlngData.gpsCount;\n\t\t\t\t\tret.freqCount += latlngData.freqCount;\n\t\t\t\t\tret.freqTotal += latlngData.freqTotal;\n\t\t\t\t\tret.idleCount += latlngData.idleCount;\n\t\t\t\t\tret.parserErrorCount += latlngData.parserErrorCount;\n\t\t\t\t\tret.parserFormatErrorCount += latlngData.parserFormatErrorCount;\n\t\t\t\t\tret.parserContentErrorCount += latlngData.parserContentErrorCount;\n\t\t\t\t\tret.parserCount += latlngData.parserCount;\n\t\t\t\t\tret.latestTimestamp = _.max([\n\t\t\t\t\t\tret.latestTimestamp,\n\t\t\t\t\t\tlatlngData.latestTimestamp\n\t\t\t\t\t]);\n\t\t\t\t\t_.each(latlngData, (val, key) => {\n\t\t\t\t\t\tconst msgType = DSRCmessage.get(key);\n\t\t\t\t\t\tif (!msgType) return;\n\t\t\t\t\t\tif (!ret[key]) {\n\t\t\t\t\t\t\tret[key] = {\n\t\t\t\t\t\t\t\tgpsCount: 0,\n\t\t\t\t\t\t\t\tfreqCount: 0,\n\t\t\t\t\t\t\t\tfreqTotal: 0,\n\t\t\t\t\t\t\t\tidleCount: 0,\n\t\t\t\t\t\t\t\tparserErrorCount: 0,\n\t\t\t\t\t\t\t\tparserFormatErrorCount: 0,\n\t\t\t\t\t\t\t\tparserContentErrorCount: 0,\n\t\t\t\t\t\t\t\tparserCount: 0\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret[key].gpsCount += latlngData.gpsCount;\n\t\t\t\t\t\tret[key].freqCount += val.freqCount;\n\t\t\t\t\t\tret[key].freqTotal += val.freqTotal;\n\t\t\t\t\t\tret[key].idleCount += val.idleCount;\n\t\t\t\t\t\tret[key].parserErrorCount += val.parserErrorCount;\n\t\t\t\t\t\tret[key].parserFormatErrorCount += val.parserFormatErrorCount;\n\t\t\t\t\t\tret[key].parserContentErrorCount += val.parserContentErrorCount;\n\t\t\t\t\t\tret[key].parserCount += val.parserCount;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t},\n\t\tneedsCleanup: (state, getters) => {\n\t\t\treturn getters.locationHistory.length > MODULE_CONFIG.MAX_LOCATIONS;\n\t\t}\n\t}\n};\n\nfunction getLatLngHash(payload) {\n\tvar latHash, lngHash;\n\tif (payload.LatHash && payload.LngHash) {\n\t\tlatHash = payload.LatHash;\n\t\tlngHash = payload.LngHash;\n\t} else {\n\t\tconst latlng = payload.gpsData;\n\t\tconst lat = latlng.latitude || latlng.lat || lat[0];\n\t\tconst lng = latlng.longitude || latlng.lng || lat[1];\n\t\tlatHash =\n\t\t\tMath.round(lat / MODULE_CONFIG.HASH_RESOLUTION) *\n\t\t\tMODULE_CONFIG.HASH_RESOLUTION;\n\t\tlngHash =\n\t\t\tMath.round(lng / MODULE_CONFIG.HASH_RESOLUTION) *\n\t\t\tMODULE_CONFIG.HASH_RESOLUTION;\n\t}\n\treturn [latHash, lngHash].join(\",\");\n}\n\nfunction setErrorUnheardFlags(o) {\n\tif (!_.isUndefined(o.FrequencyHz)) {\n\t\t// This is frequencyChecker data: All we can do is flag the idle ones so we don't accumulate them into the totals\n\t\to.isUnheard = !o.FrequencyHz;\n\t} else {\n\t\t// This is partialParser data\n\t\to.isError = !o.IsCorrectFormat || !o.IsCorrectContent;\n\t}\n}\n\nfunction gpsDifferentEnough(d1, d2) {\n\treturn getLatLngHash(d1) != getLatLngHash(d2);\n}\n\nfunction degToMeters(d) {\n\treturn d * 110250;\n}\n\nfunction metersToMiles(m) {\n\treturn m * 0.000621371;\n}\n\nfunction milesToMeters(mi) {\n\treturn mi / metersToMiles(1);\n}\n\nfunction msToHours(ms) {\n\treturn ms / 1000 / 60 / 60;\n}\n\nfunction gpsTooDifferent(d1, d2) {\n\tconst dist = degToMeters(\n\t\tGeo.flattenedEuclideanDistance(d1.gpsData, d2.gpsData)\n\t);\n\tconst rate = Math.max(d1.gpsData.speed, d2.gpsData.speed);\n\tconst time = d2.timestamp - d1.timestamp;\n\tif (time > MODULE_CONFIG.GPS_MAX_CONTINUOUS_TIME_SEC * 1000) {\n\t\treturn true;\n\t}\n\tconst maxDist =\n\t\tMODULE_CONFIG.GPS_MAX_DISTANCE_FUDGE_FACTOR *\n\t\tmilesToMeters(rate * msToHours(time)); // Generous fudge factor\n\treturn dist > maxDist;\n}\n","import Vue from \"vue\";\nimport deviceTypes from \"@/device-types\";\n\n// import _ from \"lodash\";\n\nconst scrStatuses = {\n\t1: \"Draft\",\n\t2: \"Submitted\",\n\t3: \"Reviewed\",\n\t4: \"Deleted\",\n\t5: \"Complete\"\n};\n\nconst initialState = {\n\ttitle: \"\",\n\tscrModify: false,\n\tdeviceTypeId: 0,\n\tscrStatusId: 1,\n\tmixonHillApproved: false,\n\tclientApproved: false,\n\tclients: [],\n\tcredentialTypesList: [],\n\tintersections: [],\n\tipAddressTypes: [],\n\tlocationTypes: [],\n\tmacAddressTypes: [],\n\tmodels: [],\n\tprivilegeTypes: [],\n\tauthTypes: [],\n\ttenants: [],\n\tdevicetenants: [],\n\ttestLabs: [],\n\tnetwork: null,\n\tVUs: [],\n\tpeople: [],\n\terrors: {},\n\tviewModel: {},\n\tappTypes: [],\n\tmovements: [],\n\ttotalStations: [],\n\ttotalStationName: \"\",\n\tdeviceId: 0,\n\trelationship: \"\",\n\tdeviceLocation: { lat: 0, lon: 0 },\n\ttestRunning: false,\n\tlabTests: [],\n\tisTotalStationSCR: false,\n\tcanEdit: false,\n\treadOnly: false,\n\tscrStatus: \"Draft\",\n\tisTotalStationReadOnly: false,\n\tNetworkList: [],\n\tHistoryList: [],\n\tLatestChanges: []\n};\n\nexport default {\n\tnamespaced: true,\n\n\tstate: {},\n\n\tmutations: {\n\t\tupdateState(state, { id }) {\n\t\t\tVue.set(state, id, Object.assign({}, initialState));\n\t\t},\n\t\tremoveState: (state, { id, payload }) => Vue.set(state, id, payload),\n\t\tupdateDeviceTypeId: (state, { id, deviceTypeId, isTotalStationSCR }) => {\n\t\t\tstate[id].deviceTypeId = deviceTypeId;\n\t\t\tstate[id].isTotalStationSCR = isTotalStationSCR;\n\t\t\tstate[id].deviceTypeName = isTotalStationSCR\n\t\t\t\t? \"TS\"\n\t\t\t\t: deviceTypes[deviceTypeId].shortName;\n\t\t},\n\t\tupdateClients: (state, { id, clients }) => (state[id].clients = clients),\n\t\tupdatecredentialTypesList: (state, { id, credentialTypesList }) =>\n\t\t\t(state[id].credentialTypesList = credentialTypesList),\n\t\tupdateIntersections: (state, { id, intersections }) =>\n\t\t\t(state[id].intersections = intersections),\n\t\tupdateIpAddressTypes: (state, { id, ipAddressTypes }) =>\n\t\t\t(state[id].ipAddressTypes = ipAddressTypes),\n\t\tupdateLocationTypes: (state, { id, locationTypes }) =>\n\t\t\t(state[id].locationTypes = locationTypes),\n\t\tupdateMacAddressTypes: (state, { id, macAddressTypes }) =>\n\t\t\t(state[id].macAddressTypes = macAddressTypes),\n\t\tupdateModels: (state, { id, models }) => (state[id].models = models),\n\t\tupdatePrivilegeTypes: (state, { id, privilegeTypes }) =>\n\t\t\t(state[id].privilegeTypes = privilegeTypes),\n\t\tupdateAuthTypes: (state, { id, authTypes }) =>\n\t\t\t(state[id].authTypes = authTypes),\n\t\tupdateTenants: (state, { id, tenants }) => (state[id].tenants = tenants),\n\t\tupdateDeviceTenants: (state, { id, devicetenants }) =>\n\t\t\t(state[id].devicetenants = devicetenants),\n\t\tupdateTestLabs: (state, { id, testLabs }) =>\n\t\t\t(state[id].testLabs = testLabs),\n\t\tupdateNetwork: (state, { id, network }) => (state[id].network = network),\n\t\tupdateVUs: (state, { id, VUs }) => (state[id].VUs = VUs),\n\t\taddError: (state, { id, prop, error }) =>\n\t\t\tVue.set(state[id].errors, prop, error),\n\t\tclearErrors: (state, { id }) => {\n\t\t\tstate[id].errors = {};\n\t\t},\n\t\tupdateViewModel: (state, { id, viewModel }) => {\n\t\t\tstate[id].viewModel = viewModel;\n\t\t},\n\t\tupdateDeviceScrId: (state, { id, deviceScrId }) => {\n\t\t\tstate[id].viewModel.deviceScrId = deviceScrId;\n\t\t},\n\t\tupdateProjectNumber: (state, { id, projectNumber }) =>\n\t\t\t(state[id].viewModel.projectNumber = projectNumber),\n\t\tupdateSaveInfo: (state, { id, saveInfo }) => {\n\t\t\tstate[id].saveInfo = saveInfo;\n\t\t},\n\t\tupdateTenantId: (state, { id, tenantId }) =>\n\t\t\t(state[id].viewModel.tenantId = tenantId),\n\t\tupdateClientNetworkId: (state, { id, clientnetworkId }) =>\n\t\t\t(state[id].viewModel.clientnetworkId = clientnetworkId),\n\t\tupdateRequestDate: (state, { id, requestDate }) =>\n\t\t\t(state[id].viewModel.requestDate = requestDate),\n\t\tupdateManufacturerId: (state, { id, manufacturerId }) =>\n\t\t\t(state[id].viewModel.manufacturerId = manufacturerId),\n\t\tupdateModelId: (state, { id, modelId }) =>\n\t\t\t(state[id].viewModel.modelId = modelId),\n\t\tupdateInfrastructureOwnerId: (state, { id, infrastructureOwnerId }) =>\n\t\t\t(state[id].viewModel.infrastructureOwnerId = infrastructureOwnerId),\n\t\tupdateInfrastructureOperatorId: (\n\t\t\tstate,\n\t\t\t{ id, infrastructureOperatorId }\n\t\t) => {\n\t\t\tstate[id].viewModel.infrastructureOperatorId = infrastructureOperatorId;\n\t\t},\n\t\tupdateDeviceRoles: (state, { id }) => {\n\t\t\tstate[id].scrApproveRole = state[id].deviceTypeId\n\t\t\t\t? \"SCR\" + state[id].deviceTypeName + \"approve\"\n\t\t\t\t: \"NONE\";\n\t\t\tstate[id].scrSysApproveRole = state[id].deviceTypeId\n\t\t\t\t? \"SCR\" + state[id].deviceTypeName + \"sysapprove\"\n\t\t\t\t: \"NONE\";\n\t\t\tstate[id].scrEditRole = state[id].deviceTypeId\n\t\t\t\t? \"SCR\" + state[id].deviceTypeName + \"edit\"\n\t\t\t\t: \"NONE\";\n\t\t\tstate[id].scrLabTestRole = state[id].deviceTypeId\n\t\t\t\t? state[id].deviceTypeName + \"labtest\"\n\t\t\t\t: \"NONE\";\n\t\t},\n\t\tupdateSCRViewDetails: (\n\t\t\tstate,\n\t\t\t{ id, isReadOnly, canEditSCR, isTSReadOnly, hasTestViewRole, hasTestRole }\n\t\t) => {\n\t\t\tstate[id].canEdit = canEditSCR;\n\t\t\tstate[id].readOnly = isReadOnly;\n\t\t\tstate[id].isTotalStationReadOnly = isTSReadOnly;\n\t\t\tstate[id].hasViewTestRole = hasTestViewRole;\n\t\t\tstate[id].hasTestRole = hasTestRole;\n\t\t},\n\n\t\tupdateDeviceName: (state, { id, deviceName }) =>\n\t\t\t(state[id].viewModel.deviceName = deviceName),\n\t\tupdateLocationTypeId: (state, { id, locationTypeId }) =>\n\t\t\t(state[id].viewModel.locationTypeId = locationTypeId),\n\t\tupdateAreaDescription: (state, { id, areaDescription }) =>\n\t\t\t(state[id].viewModel.areaDescription = areaDescription),\n\t\tupdateLatitude: (state, { id, latitude }) =>\n\t\t\t(state[id].viewModel.latitude = latitude),\n\t\tupdateLongitude: (state, { id, longitude }) =>\n\t\t\t(state[id].viewModel.longitude = longitude),\n\t\tupdateElevation: (state, { id, elevation }) =>\n\t\t\t(state[id].viewModel.elevation = elevation),\n\t\tupdateAdditionalDetails: (state, { id, additionalDetails }) =>\n\t\t\t(state[id].viewModel.additionalDetails = additionalDetails),\n\t\taddIpAddress: (state, { id, ipAddress }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"ipAddresses\",\n\t\t\t\tstate[id].viewModel.ipAddresses.concat([ipAddress])\n\t\t\t),\n\t\tremoveIpAddress: (state, { id, index }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"ipAddresses\",\n\t\t\t\tstate[id].viewModel.ipAddresses.filter((_v, i) => i !== index)\n\t\t\t),\n\t\tupdateIpAddressToNull: (state, { id, ipAddresses }) =>\n\t\t\t(state[id].viewModel.ipAddresses = ipAddresses),\n\t\taddMacAddress: (state, { id, macAddress }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"macAddresses\",\n\t\t\t\tstate[id].viewModel.macAddresses.concat([macAddress])\n\t\t\t),\n\t\tremoveMacAddress: (state, { id, index }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"macAddresses\",\n\t\t\t\tstate[id].viewModel.macAddresses.filter((_v, i) => i !== index)\n\t\t\t),\n\t\taddCredential: (state, { id, credential }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"credentials\",\n\t\t\t\tstate[id].viewModel.credentials.concat([credential])\n\t\t\t),\n\t\tremoveCredential: (state, { id, index }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"credentials\",\n\t\t\t\tstate[id].viewModel.credentials.filter((_v, i) => i !== index)\n\t\t\t),\n\t\tupdateCredential: (state, { id, credential, index }) =>\n\t\t\tVue.set(state[id].viewModel.credentials, index, credential),\n\t\tupdateTitle: (state, { id, title }) => {\n\t\t\tstate[id].title = title;\n\t\t},\n\t\tupdateScrModify: (state, { id, scrModify }) =>\n\t\t\t(state[id].scrModify = scrModify),\n\t\tupdateScrStatusId: (state, { id, scrStatusId }) => {\n\t\t\tstate[id].scrStatusId = scrStatusId;\n\t\t\tstate[id].scrStatus = scrStatuses[scrStatusId];\n\t\t},\n\t\tupdateMixonHillApproved: (state, { id, mixonHillApproved }) =>\n\t\t\t(state[id].mixonHillApproved = mixonHillApproved),\n\t\tupdateClientApproved: (state, { id, clientApproved }) =>\n\t\t\t(state[id].clientApproved = clientApproved),\n\t\tupdatePeople: (state, { id, people }) => (state[id].people = people),\n\t\tupdateInstallationSupportPersonId: (\n\t\t\tstate,\n\t\t\t{ id, installationSupportPersonId }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.installationSupportPersonId = installationSupportPersonId),\n\t\tupdateInstallationSupportFirstName: (\n\t\t\tstate,\n\t\t\t{ id, installationSupportFirstName }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.installationSupportFirstName = installationSupportFirstName),\n\t\tupdateInstallationSupportLastName: (\n\t\t\tstate,\n\t\t\t{ id, installationSupportLastName }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.installationSupportLastName = installationSupportLastName),\n\t\tupdateInstallationSupportPhone: (state, { id, installationSupportPhone }) =>\n\t\t\t(state[id].viewModel.installationSupportPhone = installationSupportPhone),\n\t\tupdateInstallationSupportEmail: (state, { id, installationSupportEmail }) =>\n\t\t\t(state[id].viewModel.installationSupportEmail = installationSupportEmail),\n\t\tupdateMaintenanceSupportPersonId: (\n\t\t\tstate,\n\t\t\t{ id, maintenanceSupportPersonId }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.maintenanceSupportPersonId = maintenanceSupportPersonId),\n\t\tupdateMaintenanceSupportFirstName: (\n\t\t\tstate,\n\t\t\t{ id, maintenanceSupportFirstName }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.maintenanceSupportFirstName = maintenanceSupportFirstName),\n\t\tupdateMaintenanceSupportLastName: (\n\t\t\tstate,\n\t\t\t{ id, maintenanceSupportLastName }\n\t\t) =>\n\t\t\t(state[\n\t\t\t\tid\n\t\t\t].viewModel.maintenanceSupportLastName = maintenanceSupportLastName),\n\t\tupdateMaintenanceSupportPhone: (state, { id, maintenanceSupportPhone }) =>\n\t\t\t(state[id].viewModel.maintenanceSupportPhone = maintenanceSupportPhone),\n\t\tupdateMaintenanceSupportEmail: (state, { id, maintenanceSupportEmail }) =>\n\t\t\t(state[id].viewModel.maintenanceSupportEmail = maintenanceSupportEmail),\n\t\tupdateSerialNumber: (state, { id, serialNumber }) =>\n\t\t\t(state[id].viewModel.serialNumber = serialNumber),\n\t\tupdateFirmwareVersion: (state, { id, firmwareVersion }) =>\n\t\t\t(state[id].viewModel.firmwareVersion = firmwareVersion),\n\t\tupdateAppTypes: (state, { id, appTypes }) => {\n\t\t\tstate[id].appTypes = appTypes;\n\t\t},\n\t\tupdateApproachDetails: (state, { id, approachDetails }) =>\n\t\t\tVue.set(state[id].viewModel, \"approachDetails\", approachDetails),\n\t\taddApproachDetails: (state, { id, approachDetails }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"approachDetails\",\n\t\t\t\tstate[id].viewModel.approachDetails.concat([approachDetails])\n\t\t\t),\n\t\tremoveApproachDetails: (state, { id, laneid }) => {\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"approachDetails\",\n\t\t\t\tstate[id].viewModel.approachDetails.filter(a => a.laneid !== laneid)\n\t\t\t);\n\t\t},\n\t\tupdateApplications: (state, { id, application }) =>\n\t\t\tVue.set(state[id].viewModel, \"applications\", application),\n\t\taddApplication: (state, { id, application }) => {\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"applications\",\n\t\t\t\tstate[id].viewModel.applications.concat([application])\n\t\t\t);\n\t\t},\n\t\tremoveApplication: (state, { id, appType }) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"applications\",\n\t\t\t\tstate[id].viewModel.applications.filter(a => a.appType !== appType)\n\t\t\t),\n\t\tupdateIntersectionId: (state, { id, intersectionId }) =>\n\t\t\tVue.set(state[id].viewModel, \"intersectionId\", intersectionId),\n\t\tupdateMovements: (state, { id, movements }) =>\n\t\t\tVue.set(state[id], \"movements\", movements),\n\t\tupdateIntersectionMovementPhases: (\n\t\t\tstate,\n\t\t\t{ id, intersectionMovementPhases }\n\t\t) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"intersectionMovementPhases\",\n\t\t\t\tintersectionMovementPhases\n\t\t\t),\n\t\tupdateIntersectionMovementPhaseNumber: (\n\t\t\tstate,\n\t\t\t{ id, index, phaseNumber }\n\t\t) =>\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel.intersectionMovementPhases[index],\n\t\t\t\t\"phaseNumber\",\n\t\t\t\tphaseNumber\n\t\t\t),\n\t\tupdateTotalStations: (state, { id, totalStations }) =>\n\t\t\tVue.set(state[id], \"totalStations\", totalStations),\n\t\tupdateTotalStationName: (state, { id, totalStationName }) => {\n\t\t\tstate[id].viewModel.totalStationName = totalStationName;\n\t\t},\n\t\tupdateRejectReason: (state, { id, rejectReason }) =>\n\t\t\t(state[id].viewModel.rejectReason = rejectReason),\n\t\tupdateRelationship: (state, { id, relationship }) =>\n\t\t\t(state[id].relationship = relationship),\n\t\tupdateTestMode: (state, { id, inTestMode }) => {\n\t\t\tstate[id].viewModel.inTestMode = inTestMode;\n\t\t},\n\t\tupdateTestLabId: (state, { id, testLabId }) =>\n\t\t\t(state[id].viewModel.testLabId = testLabId),\n\t\tupdateNetworkId: (state, { id, networkId }) =>\n\t\t\t(state[id].viewModel.networkId = networkId),\n\t\tupdateTestIP: (state, { id, testIP }) =>\n\t\t\t(state[id].viewModel.testIP = testIP),\n\t\tupdateLabTests: (state, { id, labTests }) =>\n\t\t\t(state[id].labTests = labTests),\n\t\tupdateLabTestId: (state, { id, labTestId }) =>\n\t\t\t(state[id].viewModel.labTestId = labTestId),\n\t\tupdateTestCompletion: (state, { id, testCompletion }) =>\n\t\t\t(state[id].viewModel.testCompletion = testCompletion),\n\t\tupdateTestStatus: (state, { id, testStatus }) =>\n\t\t\t(state[id].viewModel.testStatus = testStatus),\n\t\tupdateTestResults: (state, { id, testResults }) =>\n\t\t\t(state[id].viewModel.testResults = testResults),\n\t\tupdateVuId: (state, { id, vuId }) => (state[id].viewModel.vuId = vuId),\n\t\tupdateESSInterfaceList: (state, { id, ESSInterfaceList }) => {\n\t\t\tVue.set(state[id].viewModel, \"ESSInterfaceList\", ESSInterfaceList);\n\t\t},\n\t\tupdateNetworkList: (state, { id, NetworkList }) => {\n\t\t\tVue.set(state[id].viewModel, \"NetworkList\", NetworkList);\n\t\t},\n\t\tupdateStationCategory: (state, { id, StationCategory }) => {\n\t\t\tstate[id].StationCategory = StationCategory;\n\t\t},\n\t\tupdateStationCategoryValue: (state, { id, StationCategoryValue }) => {\n\t\t\tVue.set(\n\t\t\t\tstate[id].viewModel,\n\t\t\t\t\"StationCategoryValue\",\n\t\t\t\tStationCategoryValue\n\t\t\t);\n\t\t},\n\t\tupdateStationTypes: (state, { id, StationTypes }) => {\n\t\t\tstate[id].StationTypes = StationTypes;\n\t\t},\n\t\tupdateStationTypeValue: (state, { id, StationTypeValue }) => {\n\t\t\tVue.set(state[id].viewModel, \"StationTypeValue\", StationTypeValue);\n\t\t},\n\t\tupdateSensorDataRequest: (state, { id, SensorDataRequest }) => {\n\t\t\tVue.set(state[id].viewModel, \"SensorDataRequest\", SensorDataRequest);\n\t\t},\n\t\tupdateHttpFlag: (state, { id, HttpFlag }) => {\n\t\t\tstate[id].HttpFlag = HttpFlag;\n\t\t},\n\t\tupdateRegionDistrictList: (state, { id, RegionDistrictList }) => {\n\t\t\tVue.set(state[id], \"RegionDistrictList\", RegionDistrictList);\n\t\t},\n\t\tupdateRegionDistrict: (state, { id, RegionDistrict }) =>\n\t\t\t(state[id].viewModel.RegionDistrict = RegionDistrict),\n\t\tupdatePortTypeLists: (state, { id, PortTypeLists }) => {\n\t\t\tVue.set(state[id], \"PortTypeLists\", PortTypeLists);\n\t\t},\n\t\tupdatePortTypes: (state, { id, PortTypes }) =>\n\t\t\t(state[id].viewModel.PortTypes = PortTypes),\n\t\tupdateHighway: (state, { id, Highway }) =>\n\t\t\t(state[id].viewModel.Highway = Highway),\n\t\tupdateMilePost: (state, { id, MilePost }) =>\n\t\t\t(state[id].viewModel.MilePost = MilePost),\n\t\tupdateSiteAddress: (state, { id, SiteAddress }) =>\n\t\t\t(state[id].viewModel.SiteAddress = SiteAddress),\n\t\tupdateDirection: (state, { id, Direction }) =>\n\t\t\t(state[id].viewModel.Direction = Direction),\n\t\tupdateDrivingAccess: (state, { id, DrivingAccess }) =>\n\t\t\t(state[id].viewModel.DrivingAccess = DrivingAccess),\n\t\tupdatehttpEnabledChkBx: (state, { id, httpEnabledChkBx }) =>\n\t\t\tVue.set(state[id].viewModel, \"httpEnabledChkBx\", httpEnabledChkBx),\n\t\tupdateHttpFlagValue: (state, { id, HttpFlagValue }) =>\n\t\t\tVue.set(state[id].viewModel, \"HttpFlagValue\", HttpFlagValue)\n\t},\n\tgetters: {\n\t\tscrInfoByID(state) {\n\t\t\treturn id => state[id];\n\t\t},\n\t\thasErrors: (state, id) => !!Object.keys(state[id].errors).length,\n\t\tscrStatus: (state, id) => {\n\t\t\treturn state[id].scrStatus;\n\t\t},\n\t\ttitle: (state, id) => state[id].title,\n\t\tscrModify: (state, id) => state[id].scrModify,\n\t\ttestLabId: (state, id) =>\n\t\t\tstate[id].viewModel.testLabId ? state[id].viewModel.testLabId : null,\n\t\tmixonHillApproved: (state, id) => state[id].mixonHillApproved,\n\t\tclientApproved: (state, id) => state[id].clientApproved,\n\t\tdeviceTypeId: (state, id) => {\n\t\t\treturn state[id].deviceTypeId;\n\t\t},\n\t\tdeviceTypeName: (state, id) => {\n\t\t\treturn state[id].deviceTypeName;\n\t\t},\n\n\t\tviewModel: (state, id) => {\n\t\t\tstate[id].viewModel ? state[id].viewModel : null;\n\t\t},\n\t\ttestIP: (state, id) =>\n\t\t\tstate[id].viewModel.testIP ? state[id].viewModel.testIP : \"\",\n\t\tlabTestId: (state, id) =>\n\t\t\tstate[id].viewModel.labTestId ? state[id].viewModel.labTestId : \"\",\n\t\tserialNumber: (state, id) => state[id].viewModel.serialNumber,\n\t\tipAddressTypes: (state, id) =>\n\t\t\tstate[id].ipAddressTypes ? state[id].ipAddressTypes : null,\n\t\tmacAddressTypes: (state, id) =>\n\t\t\tstate[id].macAddressTypes ? state[id].macAddressTypes : null,\n\t\ttenants: (state, id) => (state[id].tenants ? state[id].tenants : null),\n\t\tdevicetenants: (state, id) =>\n\t\t\tstate[id].devicetenants ? state[id].devicetenants : null,\n\t\ttestLabs: (state, id) => (state[id].testLabs ? state[id].testLabs : null),\n\t\tnetwork: (state, id) => (state[id].network ? state[id].network : null),\n\t\tnetworkId: (state, id) =>\n\t\t\tstate[id].viewModel.networkId ? state[id].viewModel.networkId : null,\n\t\tVUs: (state, id) => (state[id].VUs ? state[id].VUs : null),\n\t\tcredentialTypesList: (state, id) =>\n\t\t\tstate[id].credentialTypesList ? state[id].credentialTypesList : null,\n\t\tprivilegeTypes: (state, id) =>\n\t\t\tstate[id].privilegeTypes ? state[id].privilegeTypes : null,\n\t\tauthTypes: (state, id) =>\n\t\t\tstate[id].authTypes ? state[id].authTypes : null,\n\t\ttotalStationOptions: (state, id) => state[id].totalStations,\n\t\tscrApproveRole: (state, id) => state[id].scrApproveRole,\n\t\tscrSysApproveRole: (state, id) => state[id].scrSysApproveRole,\n\t\tscrEditRole: (state, id) => state[id].scrEditRole,\n\t\tscrLabTestRole: (state, id) => state[id].scrLabTestRole,\n\t\treadonly: (state, id) => {\n\t\t\treturn state[id].readonly;\n\t\t},\n\t\tcanEdit: (state, id) => {\n\t\t\treturn state[id].canEdit;\n\t\t},\n\t\tisTotalStationReadOnly: (state, id) => {\n\t\t\treturn state[id].isTotalStationReadOnly;\n\t\t},\n\n\t\tisTotalStationSCR: (state, id) => {\n\t\t\treturn state[id].isTotalStationSCR ? state[id].isTotalStationSCR : null;\n\t\t},\n\t\thasTestRole: (state, id) => {\n\t\t\treturn state[id].hasTestRole;\n\t\t},\n\t\thasViewTestRole: (state, id) => {\n\t\t\treturn state[id].hasViewTestRole;\n\t\t},\n\t\ttotalStationName: (state, id) => state[id].viewModel.totalStationName,\n\t\trejectReason: (state, id) =>\n\t\t\tstate[id].viewModel ? state[id].viewModel.rejectReason : \"\",\n\t\trelationship: (state, id) => state[id].relationship,\n\t\terrors: (state, id) => state[id].errors,\n\t\tStationCategory: (state, id) =>\n\t\t\tstate[id].StationCategory ? state[id].StationCategory : null,\n\t\tESSInterfaceList: (state, id) => state[id].viewModel.ESSInterfaceList,\n\t\tTotalStationInfoList: (state, id) =>\n\t\t\tstate[id].viewModel.TotalStationInfoList,\n\t\tNetworkList: (state, id) => state[id].viewModel.NetworkList,\n\t\tHistoryList: (state, id) => state[id].viewModel.HistoryList,\n\t\tLatestChanges: (state, id) => state[id].viewModel.LatestChanges,\n\t\tStationCategoryValue: (state, id) =>\n\t\t\tstate[id].viewModel.StationCategoryValue,\n\t\tStationTypes: (state, id) =>\n\t\t\tstate[id].StationTypes ? state[id].StationTypes : null,\n\t\tStationTypeValue: (state, id) => state[id].viewModel.StationTypeValue,\n\t\tRegionDistrictList: (state, id) =>\n\t\t\tstate[id].RegionDistrictList ? state[id].RegionDistrictList : null,\n\t\tRegionDistrict: (state, id) => state[id].viewModel.RegionDistrict,\n\t\tPortTypeLists: (state, id) =>\n\t\t\tstate[id].PortTypeLists ? state[id].PortTypeLists : null,\n\t\tPortTypes: (state, id) =>\n\t\t\tstate[id].viewModel.PortTypes ? state[id].viewModel.PortTypes : null,\n\t\tCredentialType: (state, id) =>\n\t\t\tstate[id].viewModel.CredentialType\n\t\t\t\t? state[id].viewModel.CredentialType\n\t\t\t\t: null,\n\n\t\tHighway: (state, id) => state[id].viewModel.Highway,\n\t\tMilePost: (state, id) => state[id].viewModel.MilePost,\n\t\tSiteAddress: (state, id) => state[id].viewModel.SiteAddress,\n\t\tDirection: (state, id) => state[id].viewModel.Direction,\n\t\tDrivingAccess: (state, id) => state[id].viewModel.DrivingAccess,\n\t\tHttpFlag: (state, id) => (state[id].HttpFlag ? state[id].HttpFlag : null),\n\t\tHttpFlagValue: (state, id) => state[id].viewModel.HttpFlagValue,\n\t\thttpEnabledChkBx: (state, id) => state[id].viewModel.httpEnabledChkBx,\n\t\thttpIsNewChkbx: (state, id) => state[id].viewModel.httpIsNewChkbx,\n\t\tSensorDataRequest: (state, id) =>\n\t\t\tstate[id].SensorDataRequest ? state[id].SensorDataRequest : null,\n\t\ttestRunning: (state, id) => state[id].testRunning,\n\t\tinTestMode: (state, id) => state[id].viewModel.inTestMode,\n\t\tlabTests: (state, id) => (state[id].labTests ? state[id].labTests : null),\n\t\tlocationTypeId: (state, id) => {\n\t\t\tstate[id].viewModel.locationTypeId\n\t\t\t\t? state[id].viewModel.locationTypeId\n\t\t\t\t: \"\";\n\t\t},\n\t\tvuId: (state, id) => (state[id].viewModel ? state[id].viewModel.vuId : \"\"),\n\t\tdeviceLocation: (state, id) => state[id].deviceLocation,\n\t\tapproachDetails: (state, id) =>\n\t\t\tstate[id].viewModel.approachDetails\n\t\t\t\t? state[id].viewModel.approachDetails\n\t\t\t\t: []\n\t},\n\tactions: {\n\t\tupdateState: ({ commit }, { id }) => commit(\"updateState\", { id }),\n\t\tremoveState: ({ commit }, { id }) => commit(\"removeState\", { id }),\n\t\tupdateDeviceTypeId: ({ commit }, { id, deviceTypeId, isTotalStationSCR }) =>\n\t\t\tcommit(\"updateDeviceTypeId\", { id, deviceTypeId, isTotalStationSCR }),\n\t\tupdateClients: ({ commit }, { id, clients }) =>\n\t\t\tcommit(\"updateClients\", { id, clients }),\n\n\t\tupdatecredentialTypesList: ({ commit }, { id, credentialTypesList }) =>\n\t\t\tcommit(\"updatecredentialTypesList\", { id, credentialTypesList }),\n\t\tupdateIntersections: ({ commit }, { id, intersections }) =>\n\t\t\tcommit(\"updateIntersections\", { id, intersections }),\n\t\tupdateIpAddressTypes: ({ commit }, { id, ipAddressTypes }) =>\n\t\t\tcommit(\"updateIpAddressTypes\", { id, ipAddressTypes }),\n\t\tupdateLocationTypes: ({ commit }, { id, locationTypes }) =>\n\t\t\tcommit(\"updateLocationTypes\", { id, locationTypes }),\n\t\tupdateMacAddressTypes: ({ commit }, { id, macAddressTypes }) =>\n\t\t\tcommit(\"updateMacAddressTypes\", { id, macAddressTypes }),\n\t\tupdateModels: ({ commit }, { id, models }) =>\n\t\t\tcommit(\"updateModels\", { id, models }),\n\t\tupdatePrivilegeTypes: ({ commit }, { id, privilegeTypes }) =>\n\t\t\tcommit(\"updatePrivilegeTypes\", { id, privilegeTypes }),\n\t\tupdateAuthTypes: ({ commit }, { id, authTypes }) =>\n\t\t\tcommit(\"updateAuthTypes\", { id, authTypes }),\n\t\tupdateTenants: ({ commit }, { id, tenants }) =>\n\t\t\tcommit(\"updateTenants\", { id, tenants }),\n\t\tupdateDeviceTenants: ({ commit }, { id, devicetenants }) =>\n\t\t\tcommit(\"updateDeviceTenants\", { id, devicetenants }),\n\t\tupdateTestLabs: ({ commit }, { id, testLabs }) => {\n\t\t\t// console.log(\"DEBUG(updateTestLab):: testLabs: \", {id, testLabs);\n\t\t\tcommit(\"updateTestLabs\", { id, testLabs });\n\t\t},\n\t\tupdateNetwork: ({ commit }, { id, network }) => {\n\t\t\t// console.log(\"DEBUG(updateNetwork):: network: \", {id, network);\n\t\t\tcommit(\"updateNetwork\", { id, network });\n\t\t},\n\t\tupdateVUs: ({ commit }, { id, VUs }) => {\n\t\t\t// console.log(\"DEBUG(updateVUs):: VUs: \", {id, VUs);\n\t\t\tcommit(\"updateVUs\", { id, VUs });\n\t\t},\n\t\taddError: ({ commit }, { id, prop, error }) =>\n\t\t\tcommit(\"addError\", { id, prop, error }),\n\t\tupdateViewModel: ({ commit }, { id, viewModel }) => {\n\t\t\tcommit(\"updateViewModel\", { id, viewModel });\n\t\t},\n\t\tupdateProjectNumber: ({ commit }, { id, projectNumber }) =>\n\t\t\tcommit(\"updateProjectNumber\", { id, projectNumber }),\n\t\tupdateSaveInfo: ({ commit }, { id, saveInfo }) =>\n\t\t\tcommit(\"updateSaveInfo\", { id, saveInfo }),\n\t\tupdateRequestDate: ({ commit }, { id, requestDate }) =>\n\t\t\tcommit(\"updateRequestDate\", { id, requestDate }),\n\t\tupdateDeviceRoles: ({ commit }, { id }) =>\n\t\t\tcommit(\"updateDeviceRoles\", { id }),\n\t\tupdateSCRViewDetails: (\n\t\t\t{ commit },\n\t\t\t{ id, isReadOnly, canEditSCR, isTSReadOnly, hasTestViewRole, hasTestRole }\n\t\t) => {\n\t\t\tcommit(\"updateSCRViewDetails\", {\n\t\t\t\tid,\n\t\t\t\tisReadOnly,\n\t\t\t\tcanEditSCR,\n\t\t\t\tisTSReadOnly,\n\t\t\t\thasTestViewRole,\n\t\t\t\thasTestRole\n\t\t\t});\n\t\t},\n\t\tupdateInfrastructureOwnerId: ({ commit }, { id, infrastructureOwnerId }) =>\n\t\t\tcommit(\"updateInfrastructureOwnerId\", { id, infrastructureOwnerId }),\n\t\tupdateInfrastructureOperatorId: (\n\t\t\t{ commit },\n\t\t\t{ id, infrastructureOperatorId }\n\t\t) =>\n\t\t\tcommit(\"updateInfrastructureOperatorId\", {\n\t\t\t\tid,\n\t\t\t\tinfrastructureOperatorId\n\t\t\t}),\n\t\tupdateDeviceName: ({ commit }, { id, deviceName }) =>\n\t\t\tcommit(\"updateDeviceName\", { id, deviceName }),\n\t\tupdateAreaDescription: ({ commit }, { id, areaDescription }) =>\n\t\t\tcommit(\"updateAreaDescription\", { id, areaDescription }),\n\t\tupdateLocationTypeId: ({ commit }, { id, locationTypeId }) =>\n\t\t\tcommit(\"updateLocationTypeId\", { id, locationTypeId }),\n\t\tupdateLatitude: ({ commit }, { id, latitude }) =>\n\t\t\tcommit(\"updateLatitude\", { id, latitude }),\n\t\tupdateLongitude: ({ commit }, { id, longitude }) =>\n\t\t\tcommit(\"updateLongitude\", { id, longitude }),\n\t\tupdateElevation: ({ commit }, { id, elevation }) =>\n\t\t\tcommit(\"updateElevation\", { id, elevation }),\n\t\tupdateAdditionalDetails: ({ commit }, { id, additionalDetails }) =>\n\t\t\tcommit(\"updateAdditionalDetails\", { id, additionalDetails }),\n\t\tupdateIpAddressToNull: ({ commit }, { id, ipAddresses }) =>\n\t\t\tcommit(\"updateIpAddressToNull\", { id, ipAddresses }),\n\n\t\tupdateDeviceScrId: ({ commit }, { id, deviceScrId }) => {\n\t\t\tcommit(\"updateDeviceScrId\", { id, deviceScrId });\n\t\t},\n\t\t// updateIsDraft: ({ commit }, { id , isDraft}) => commit(\"updateIsDraft\", {id, isDraft}),\n\t\tupdateTenantId: ({ commit }, { id, tenantId }) =>\n\t\t\tcommit(\"updateTenantId\", { id, tenantId }),\n\t\tupdateClientNetworkId: ({ commit }, { id, clientnetworkId }) =>\n\t\t\tcommit(\"updateClientNetworkId\", { id, clientnetworkId }),\n\t\tupdateManufacturerId: ({ commit }, { id, manufacturerId }) =>\n\t\t\tcommit(\"updateManufacturerId\", { id, manufacturerId }),\n\t\tupdateModelId: ({ commit }, { id, modelId }) =>\n\t\t\tcommit(\"updateModelId\", { id, modelId }),\n\t\tupdateSerialNumber: ({ commit }, { id, serialNumber }) =>\n\t\t\tcommit(\"updateSerialNumber\", { id, serialNumber }),\n\t\tupdateFirmwareVersion: ({ commit }, { id, firmwareVersion }) =>\n\t\t\tcommit(\"updateFirmwareVersion\", { id, firmwareVersion }),\n\t\taddIpAddress: ({ commit }, { id, ipAddress }) =>\n\t\t\tcommit(\"addIpAddress\", { id, ipAddress }),\n\t\tremoveIpAddress: ({ commit }, { id, index }) =>\n\t\t\tcommit(\"removeIpAddress\", { id, index }),\n\t\taddMacAddress: ({ commit }, { id, macAddress }) =>\n\t\t\tcommit(\"addMacAddress\", { id, macAddress }),\n\t\tremoveMacAddress: ({ commit }, { id, index }) =>\n\t\t\tcommit(\"removeMacAddress\", { id, index }),\n\t\taddCredential: ({ commit }, { id, credential }) =>\n\t\t\tcommit(\"addCredential\", { id, credential }),\n\t\tremoveCredential: ({ commit }, { id, index }) =>\n\t\t\tcommit(\"removeCredential\", { id, index }),\n\t\tupdateCredential: ({ commit }, { id, credential, index }) =>\n\t\t\tcommit(\"updateCredential\", { id, credential, index }),\n\t\tupdateTitle: ({ commit }, { id, title }) => {\n\t\t\tcommit(\"updateTitle\", { id, title });\n\t\t},\n\t\tupdateScrModify: ({ commit }, { id, scrModify }) =>\n\t\t\tcommit(\"updateScrModify\", { id, scrModify }),\n\t\tupdateScrStatusId: ({ commit }, { id, scrStatusId }) =>\n\t\t\tcommit(\"updateScrStatusId\", { id, scrStatusId }),\n\t\tupdateMixonHillApproved: ({ commit }, { id, mixonHillApproved }) =>\n\t\t\tcommit(\"updateMixonHillApproved\", { id, mixonHillApproved }),\n\t\tupdateClientApproved: ({ commit }, { id, clientApproved }) =>\n\t\t\tcommit(\"updateClientApproved\", { id, clientApproved }),\n\t\tupdatePeople: ({ commit }, { id, people }) =>\n\t\t\tcommit(\"updatePeople\", { id, people }),\n\t\tupdateInstallationSupportPersonId: (\n\t\t\t{ commit },\n\t\t\t{ id, installationSupportPersonId }\n\t\t) =>\n\t\t\tcommit(\"updateInstallationSupportPersonId\", {\n\t\t\t\tid,\n\t\t\t\tinstallationSupportPersonId\n\t\t\t}),\n\t\tupdateInstallationSupportFirstName: (\n\t\t\t{ commit },\n\t\t\t{ id, installationSupportFirstName }\n\t\t) =>\n\t\t\tcommit(\"updateInstallationSupportFirstName\", {\n\t\t\t\tid,\n\t\t\t\tinstallationSupportFirstName\n\t\t\t}),\n\t\tupdateInstallationSupportLastName: (\n\t\t\t{ commit },\n\t\t\t{ id, installationSupportLastName }\n\t\t) =>\n\t\t\tcommit(\"updateInstallationSupportLastName\", {\n\t\t\t\tid,\n\t\t\t\tinstallationSupportLastName\n\t\t\t}),\n\t\tupdateInstallationSupportPhone: (\n\t\t\t{ commit },\n\t\t\t{ id, installationSupportPhone }\n\t\t) =>\n\t\t\tcommit(\"updateInstallationSupportPhone\", {\n\t\t\t\tid,\n\t\t\t\tinstallationSupportPhone\n\t\t\t}),\n\t\tupdateInstallationSupportEmail: (\n\t\t\t{ commit },\n\t\t\t{ id, installationSupportEmail }\n\t\t) =>\n\t\t\tcommit(\"updateInstallationSupportEmail\", {\n\t\t\t\tid,\n\t\t\t\tinstallationSupportEmail\n\t\t\t}),\n\t\tupdateMaintenanceSupportPersonId: (\n\t\t\t{ commit },\n\t\t\t{ id, maintenanceSupportPersonId }\n\t\t) =>\n\t\t\tcommit(\"updateMaintenanceSupportPersonId\", {\n\t\t\t\tid,\n\t\t\t\tmaintenanceSupportPersonId\n\t\t\t}),\n\t\tupdateMaintenanceSupportFirstName: (\n\t\t\t{ commit },\n\t\t\t{ id, maintenanceSupportFirstName }\n\t\t) =>\n\t\t\tcommit(\"updateMaintenanceSupportFirstName\", {\n\t\t\t\tid,\n\t\t\t\tmaintenanceSupportFirstName\n\t\t\t}),\n\t\tupdateMaintenanceSupportLastName: (\n\t\t\t{ commit },\n\t\t\t{ id, maintenanceSupportLastName }\n\t\t) =>\n\t\t\tcommit(\"updateMaintenanceSupportLastName\", {\n\t\t\t\tid,\n\t\t\t\tmaintenanceSupportLastName\n\t\t\t}),\n\t\tupdateMaintenanceSupportPhone: (\n\t\t\t{ commit },\n\t\t\t{ id, maintenanceSupportPhone }\n\t\t) =>\n\t\t\tcommit(\"updateMaintenanceSupportPhone\", { id, maintenanceSupportPhone }),\n\t\tupdateMaintenanceSupportEmail: (\n\t\t\t{ commit },\n\t\t\t{ id, maintenanceSupportEmail }\n\t\t) =>\n\t\t\tcommit(\"updateMaintenanceSupportEmail\", { id, maintenanceSupportEmail }),\n\t\tupdateAppTypes: ({ commit }, { id, appTypes }) =>\n\t\t\tcommit(\"updateAppTypes\", { id, appTypes }),\n\t\tupdateApproachDetails: ({ commit }, { id, approachDetails }) =>\n\t\t\tcommit(\"updateApproachDetails\", { id, approachDetails }),\n\t\taddApproachDetails: ({ commit }, { id, approachDetails }) =>\n\t\t\tcommit(\"addApproachDetails\", { id, approachDetails }),\n\t\tremoveApproachDetails: ({ commit }, { id, laneid }) =>\n\t\t\tcommit(\"removeApproachDetails\", { id, laneid }),\n\t\tupdateApplications: ({ commit }, { id, application }) =>\n\t\t\tcommit(\"updateApplications\", { id, application }),\n\t\tclearErrors: ({ commit }, id) => commit(\"clearErrors\", { id }),\n\t\taddApplication: ({ commit }, { id, application }) =>\n\t\t\tcommit(\"addApplication\", { id, application }),\n\t\tremoveApplication: ({ commit }, { id, appType }) =>\n\t\t\tcommit(\"removeApplication\", { id, appType }),\n\t\tupdateIntersectionId: ({ commit }, { id, intersectionId }) =>\n\t\t\tcommit(\"updateIntersectionId\", { id, intersectionId }),\n\t\tupdateMovements: ({ commit }, { id, movements }) =>\n\t\t\tcommit(\"updateMovements\", { id, movements }),\n\t\tupdateTotalStations: ({ commit }, { id, totalStations }) =>\n\t\t\tcommit(\"updateTotalStations\", { id, totalStations }),\n\t\tupdateTotalStationName: ({ commit }, { id, totalStationName }) =>\n\t\t\tcommit(\"updateTotalStationName\", { id, totalStationName }),\n\t\tupdateIntersectionMovementPhases: (\n\t\t\t{ commit },\n\t\t\t{ id, intersectionMovementPhases }\n\t\t) =>\n\t\t\tcommit(\"updateIntersectionMovementPhases\", {\n\t\t\t\tid,\n\t\t\t\tintersectionMovementPhases\n\t\t\t}),\n\t\tupdateIntersectionMovementPhaseNumber: (\n\t\t\t{ commit },\n\t\t\t{ id, index, phaseNumber }\n\t\t) =>\n\t\t\tcommit(\"updateIntersectionMovementPhaseNumber\", {\n\t\t\t\tid,\n\t\t\t\tindex,\n\t\t\t\tphaseNumber\n\t\t\t}),\n\t\tupdateRejectReason: ({ commit }, { id, rejectReason }) => {\n\t\t\treturn commit(\"updateRejectReason\", { id, rejectReason });\n\t\t},\n\t\tupdateRelationship: ({ commit }, { id, relationship }) =>\n\t\t\tcommit(\"updateRelationship\", { id, relationship }),\n\t\tupdateHttpFlag: ({ commit }, { id, HttpFlag }) =>\n\t\t\tcommit(\"updateHttpFlag\", { id, HttpFlag }),\n\t\tupdateRegionDistrictList: ({ commit }, { id, RegionDistrictList }) => {\n\t\t\tcommit(\"updateRegionDistrictList\", { id, RegionDistrictList });\n\t\t},\n\t\tupdateRegionDistrict: ({ commit }, { id, RegionDistrict }) =>\n\t\t\tcommit(\"updateRegionDistrict\", { id, RegionDistrict }),\n\n\t\tupdatePortTypeLists: ({ commit }, { id, PortTypeLists }) => {\n\t\t\tcommit(\"updatePortTypeLists\", { id, PortTypeLists });\n\t\t},\n\t\tupdatePortTypes: ({ commit }, { id, PortTypes }) =>\n\t\t\tcommit(\"updatePortTypes\", { id, PortTypes }),\n\t\tupdateHighway: ({ commit }, { id, Highway }) =>\n\t\t\tcommit(\"updateHighway\", { id, Highway }),\n\t\tupdateMilePost: ({ commit }, { id, MilePost }) =>\n\t\t\tcommit(\"updateMilePost\", { id, MilePost }),\n\t\tupdateSiteAddress: ({ commit }, { id, SiteAddress }) =>\n\t\t\tcommit(\"updateSiteAddress\", { id, SiteAddress }),\n\t\tupdateDirection: ({ commit }, { id, Direction }) =>\n\t\t\tcommit(\"updateDirection\", { id, Direction }),\n\t\tupdateDrivingAccess: ({ commit }, { id, DrivingAccess }) =>\n\t\t\tcommit(\"updateDrivingAccess\", { id, DrivingAccess }),\n\t\tupdateHttpFlagValue: ({ commit }, { id, HttpFlagValue }) =>\n\t\t\tcommit(\"updateHttpFlagValue\", { id, HttpFlagValue }),\n\t\tupdateSensorDataRequest: ({ commit }, { id, SensorDataRequest }) => {\n\t\t\tcommit(\"updateSensorDataRequest\", { id, SensorDataRequest });\n\t\t},\n\t\tupdateStationCategoryValue: ({ commit }, { id, StationCategoryValue }) =>\n\t\t\tcommit(\"updateStationCategoryValue\", { id, StationCategoryValue }),\n\t\tupdateStationTypeValue: ({ commit }, { id, StationTypeValue }) => {\n\t\t\tcommit(\"updateStationTypeValue\", { id, StationTypeValue });\n\t\t},\n\t\tupdatehttpEnabledChkBx: ({ commit }, { id, httpEnabledChkBx }) =>\n\t\t\tcommit(\"updatehttpEnabledChkBx\", { id, httpEnabledChkBx }),\n\t\tupdateStationCategory: ({ commit }, { id, StationCategory }) =>\n\t\t\tcommit(\"updateStationCategory\", { id, StationCategory }),\n\t\tupdateStationTypes: ({ commit }, { id, StationTypes }) =>\n\t\t\tcommit(\"updateStationTypes\", { id, StationTypes }),\n\t\tupdateESSInterfaceList: ({ commit }, { id, ESSInterfaceList }) =>\n\t\t\tcommit(\"updateESSInterfaceList\", { id, ESSInterfaceList }),\n\t\tupdateNetworkList: ({ commit }, { id, NetworkList }) =>\n\t\t\tcommit(\"updateNetworkList\", { id, NetworkList }),\n\t\tupdateTestMode: ({ commit }, { id, inTestMode }) =>\n\t\t\tcommit(\"updateTestMode\", { id, inTestMode }),\n\t\tupdateTestLabId: ({ commit }, { id, testLabId }) =>\n\t\t\tcommit(\"updateTestLabId\", { id, testLabId }),\n\t\tupdateNetworkId: ({ commit }, { id, networkId }) =>\n\t\t\tcommit(\"updateNetworkId\", { id, networkId }),\n\t\tupdateTestIP: ({ commit }, { id, testIP }) =>\n\t\t\tcommit(\"updateTestIP\", { id, testIP }),\n\t\tupdateLabTests: ({ commit }, { id, labTests }) =>\n\t\t\tcommit(\"updateLabTests\", { id, labTests }),\n\t\tupdateLabTestId: ({ commit }, { id, labTestId }) =>\n\t\t\tcommit(\"updateLabTestId\", { id, labTestId }),\n\t\tupdateTestCompletion: ({ commit }, { id, testCompletion }) =>\n\t\t\tcommit(\"updateTestCompletion\", { id, testCompletion }),\n\t\tupdateTestStatus: ({ commit }, { id, testStatus }) =>\n\t\t\tcommit(\"updateTestStatus\", { id, testStatus }),\n\t\tupdateTestResults: ({ commit }, { id, testResults }) =>\n\t\t\tcommit(\"updateTestResults\", { id, testResults }),\n\t\tupdateVuId: ({ commit }, { id, vuId }) => commit(\"updateVuId\", { id, vuId })\n\t}\n};\n","import rsu from \"./rsu\";\nimport tim from \"./tim\";\nimport fvu from \"./fvu\";\nimport tsc from \"./tsc\";\nimport ess from \"./ess\";\nimport fvu_monitor from \"./fvu_monitor\";\nimport deviceManager from \"./device-manager\";\nimport totalStation from \"./total_station\";\nimport deviceScr from \"./device-scr\";\nimport intersection from \"./intersection\";\nimport vu_approach_location from \"./vu_approach_location\";\nimport spatVerificationModule from \"./spat-verification\";\nimport motModule from \"./mot\";\n\nexport default {\n\t[deviceManager.MODULE_NAME]: deviceManager,\n\t[totalStation.MODULE_NAME]: totalStation,\n\t[spatVerificationModule.MODULE_NAME]: spatVerificationModule,\n\t[motModule.MODULE_NAME]: motModule,\n\trsu,\n\ttim,\n\tfvu,\n\tfvu_monitor,\n\ttsc,\n\tess,\n\tdeviceScr,\n\tintersection,\n\tvu_approach_location\n};\n","import deviceTypes from \"@/device-types\";\nexport default {\n\tmostRecentToasts(state) {\n\t\treturn state.toasts;\n\t},\n\n\tapiUrl(state) {\n\t\treturn state.apiUrl;\n\t},\n\n\tmqttCredentials(state) {\n\t\tconst res = state.credentials.mqtt;\n\t\tif (Object.prototype.hasOwnProperty.call(res, \"RetCode\") && res.RetCode < 0)\n\t\t\treturn {};\n\t\treturn res;\n\t},\n\n\tmqttSubscriptions(state) {\n\t\tconst res = state.mqtt.subscriptions;\n\t\treturn res;\n\t},\n\n\tbreadcrumbsOpened(state) {\n\t\treturn state.breadcrumbsOpened;\n\t},\n\n\tisLoggedIn(state) {\n\t\treturn state.user.username ? true : false;\n\t},\n\n\tcurrentUsername(state) {\n\t\tif (state.user && \"username\" in state.user) return state.user.username;\n\t\treturn null;\n\t},\n\n\tcurrentUserPrimaryClientId(state) {\n\t\tif (state.user.primaryClientId) return state.user.primaryClientId;\n\t\treturn 0;\n\t},\n\n\tcurrentUserHasRole(state) {\n\t\treturn role => {\n\t\t\tif (!state.user.roles) return false;\n\t\t\treturn state.user.roles.indexOf(role) !== -1;\n\t\t};\n\t},\n\n\tcurrentUserHasFeature(state) {\n\t\treturn feature => {\n\t\t\tif (!state.user.features) return false;\n\t\t\treturn state.user.features.indexOf(feature) !== -1;\n\t\t};\n\t},\n\n\tscrEdit(state) {\n\t\tif (!state.user.roles) return false;\n\t\t// for (var i in deviceTypes) {\n\t\t// \tvar e = \"SCR\" + deviceTypes[i].shortName + \"edit\";\n\t\t// \tif (state.user.roles.indexOf(e) !== -1) return true;\n\t\t// }\n\t\tvar e = \"SCRTSedit\";\n\t\tif (state.user.roles.indexOf(e) !== -1) return true;\n\t\treturn false;\n\t},\n\n\tdeviceScrEdit(state) {\n\t\tif (!state.user.roles) return false;\n\t\tfor (var i in deviceTypes) {\n\t\t\tvar e = \"SCR\" + deviceTypes[i].shortName + \"edit\";\n\t\t\tif (state.user.roles.indexOf(e) !== -1) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\tmapZoom(state) {\n\t\treturn state.map.zoom;\n\t},\n\n\tmapCenter(state) {\n\t\treturn state.map.center;\n\t},\n\n\treplaceLabel(state) {\n\t\treturn labelText => {\n\t\t\tlabelText = labelText.trim();\n\t\t\tlet replaceText = labelText;\n\t\t\tconst labelIndex = labelText.toUpperCase();\n\t\t\tconst mappings = state.user.labelMappings;\n\n\t\t\tif (mappings[labelIndex]) {\n\t\t\t\tconst thisLabel = mappings[labelIndex];\n\t\t\t\tif (thisLabel.ExactMatch === true && thisLabel.LabelText == labelText) {\n\t\t\t\t\treplaceText = thisLabel.ReplaceText;\n\t\t\t\t} else if (thisLabel.ExactMatch === false) {\n\t\t\t\t\treplaceText = thisLabel.ReplaceText;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn replaceText;\n\t\t};\n\t}\n};\n","import MutationTypes from \"./mutation-types.js\";\nimport ActionTypes from \"./action-types\";\n\nimport API from \"@/api/index\";\n\nconst actions = {};\n\nconst GET_AVAILABLE_MQTT_CREDENTIALS = \"/Misc/GetAvailableMQTTCredentials\";\n\nactions[ActionTypes.FETCH_MQTT_CREDENTIALS] = context => {\n\tAPI.fetchJson(\n\t\tGET_AVAILABLE_MQTT_CREDENTIALS,\n\t\tnull,\n\t\t// Error callback\n\t\texception => {\n\t\t\tconsole.error(\"Exception fetching MQTT credentials\", exception);\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t).then(json => {\n\t\tcontext.commit(MutationTypes.SET_MQTT_CREDENTIALS, json);\n\t});\n};\n\nactions[ActionTypes.FETCH_USER_INFO] = context => {\n\treturn API.fetchJson(\n\t\tAPI.ENDPOINTS.GET_USER_INFO,\n\t\tnull,\n\t\t// Error callback\n\t\texception => {\n\t\t\tconsole.error(\"Exception fetching user info\", exception);\n\t\t}\n\t).then(json => {\n\t\tif (!json || !json[\"ok\"] || !json[\"data\"]) {\n\t\t\tcontext.commit(MutationTypes.SET_USERNAME, \"\");\n\t\t\tcontext.commit(MutationTypes.SET_PRIMARY_CLIENT, 0);\n\t\t\tcontext.commit(MutationTypes.SET_ROLES, []);\n\t\t\tcontext.commit(MutationTypes.SET_FEATURES, []);\n\t\t\tcontext.commit(MutationTypes.SET_LABELMAPPINGS, {});\n\t\t\t// TODO: Add Toast with error message here.\n\t\t\treturn;\n\t\t}\n\n\t\t// TESTING: add ess diagnostics role claim to test auth guard\n\t\t// json.data.roles.push(\"ESSdiagnostics\");\n\t\t// json.data.roles.sort();\n\n\t\tcontext.commit(MutationTypes.SET_USERNAME, json.data.username);\n\t\tcontext.commit(MutationTypes.SET_LABELMAPPINGS, json.data.labelMappings);\n\t\tcontext.commit(MutationTypes.SET_ROLES, json.data.roles);\n\t\tcontext.commit(MutationTypes.SET_FEATURES, json.data.features);\n\t\tcontext.commit(MutationTypes.SET_PRIMARY_CLIENT, json.data.primaryClientId);\n\t\tcontext.commit(\n\t\t\tMutationTypes.SET_PROFILE_ATTRIBUTES,\n\t\t\tjson.data.profileAttributes\n\t\t);\n\t});\n};\n\n// The router will not perform routing until the promise returned by this method fullfills.\n// Anything required before routing occurs should be placed here, e.g. the roles the user has.\nactions[ActionTypes.INIT] = ({ dispatch }) => {\n\treturn Promise.all([dispatch(ActionTypes.FETCH_USER_INFO)]);\n};\n\nexport default actions;\n","import Vue from \"vue\";\nimport MutationTypes from \"./mutation-types\";\nimport _ from \"lodash\";\n\nconst mutations = {};\n\nmutations[MutationTypes.SET_BREADCRUMBS_OPENED] = (state, payload) => {\n\tstate.breadcrumbsOpened = payload;\n\tlocalStorage.setItem(\n\t\t\"store.state.breadcrumbsOpened\",\n\t\tJSON.stringify(state.breadcrumbsOpened)\n\t);\n};\n\nmutations[MutationTypes.SET_MQTT_CREDENTIALS] = (state, payload) => {\n\tstate.credentials.mqtt = payload;\n};\n\nmutations[MutationTypes.SET_USERNAME] = (state, payload) => {\n\tif (_.isString(payload) === true) {\n\t\tstate.user.username = payload.trim();\n\t}\n};\n\nmutations[MutationTypes.SET_PRIMARY_CLIENT] = (state, payload) => {\n\tif (_.isInteger(payload) === true) {\n\t\tstate.user.primaryClientId = payload;\n\t}\n};\n\nmutations[MutationTypes.SET_ROLES] = (state, payload) => {\n\tif (_.isArray(payload) === true) {\n\t\tstate.user.roles = payload;\n\t}\n};\n\nmutations[MutationTypes.SET_FEATURES] = (state, payload) => {\n\tif (_.isArray(payload) === true) {\n\t\tstate.user.features = payload;\n\t}\n};\n\nmutations[MutationTypes.SET_LABELMAPPINGS] = (state, payload) => {\n\tif (_.isObject(payload) === true) {\n\t\tstate.user.labelMappings = payload;\n\t}\n};\n\nmutations[MutationTypes.SET_PROFILE_ATTRIBUTES] = (state, payload) => {\n\tstate.client.logoImageUrl = payload.logourl;\n\tstate.user.profileAttributes = payload;\n};\n\nmutations[MutationTypes.MQTT_SUBSCRIBE] = (state, payload) => {\n\tVue.set(state.mqtt.subscriptions, payload.name, payload.subscription);\n};\n\nmutations[MutationTypes.MQTT_UNSUBSCRIBE] = (state, subscriptionName) => {\n\tVue.delete(state.mqtt.subscriptions, subscriptionName);\n};\n\nmutations[MutationTypes.ADD_TOAST] = (state, payload) => {\n\tstate.toasts.push(payload);\n};\n\nmutations[MutationTypes.DISMISS_TOAST] = (state, toast) => {\n\t// Vue.delete(state.mqtt.subscriptions, subscriptionName);\n\tconst id = state.toasts.indexOf(toast);\n\tif (!isNaN(id)) {\n\t\tstate.toasts.splice(id, 1);\n\t}\n};\n\nmutations[MutationTypes.SET_MAP_ZOOM] = (state, payload) => {\n\tstate.map.zoom = payload;\n};\n\nmutations[MutationTypes.SET_MAP_CENTER] = (state, payload) => {\n\tstate.map.center = payload;\n};\n\nmutations[MutationTypes.SET_TILE_PROVIDER_VISIBILITY] = (state, name) => {\n\tconst newtp = _.map(state.map.tileProviders, t => {\n\t\treturn Object.assign(t, { visible: t.name === name });\n\t});\n\tVue.set(state.map, \"tileProviders\", newtp);\n};\n\nexport default mutations;\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport modules from \"@/store/modules\";\n\nimport getters from \"./getters\";\nimport actions from \"./actions\";\nimport mutations from \"./mutations\";\n\n// import * as L from \"leaflet\";\n\nVue.use(Vuex);\n\n// localStorage initialization and loading\nvar initialBreadcrumbsOpened = window.localStorage.getItem(\n\t\"store.state.breadcrumbsOpened\"\n);\nif (initialBreadcrumbsOpened === null) {\n\tinitialBreadcrumbsOpened = true;\n} else {\n\tinitialBreadcrumbsOpened = JSON.parse(initialBreadcrumbsOpened);\n}\n\nexport default new Vuex.Store({\n\tmodules,\n\tstate: {\n\t\t// TODO: refactor MQTT stuff to its own store module\n\t\ttoasts: [],\n\t\tcredentials: {\n\t\t\tmqtt: {}\n\t\t},\n\t\tmqtt: {\n\t\t\tsubscriptions: {}\n\t\t},\n\t\tmap: {\n\t\t\ttileProviders: [\n\t\t\t\t{\n\t\t\t\t\tname: \"TFM OpenStreetMap\",\n\t\t\t\t\tvisible: true,\n\t\t\t\t\turl: \"https://tilesvr.terraformmanager.net/{z}/{x}/{y}.png\",\n\t\t\t\t\tattribution:\n\t\t\t\t\t\t\"© OpenStreetMap\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"Google Satellite\",\n\t\t\t\t\tvisible: false,\n\t\t\t\t\turl: \"https://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}\",\n\t\t\t\t\tattribution: \"Map data ©2018 Google\",\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tsubdomains: [\"mt0\", \"mt1\", \"mt2\", \"mt3\"]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"OSM\",\n\t\t\t\t\turl: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n\t\t\t\t\tattribution:\n\t\t\t\t\t\t'© OpenStreetMap',\n\t\t\t\t\tvariants: {\n\t\t\t\t\t\tMapnik: {},\n\t\t\t\t\t\tBlackAndWhite: {\n\t\t\t\t\t\t\turl: \"http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDE: {\n\t\t\t\t\t\t\turl:\n\t\t\t\t\t\t\t\t\"http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHOT: {\n\t\t\t\t\t\t\turl: \"http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png\",\n\t\t\t\t\t\t\tattribution:\n\t\t\t\t\t\t\t\t'{attribution.OpenStreetMap}, Tiles courtesy of Humanitarian OpenStreetMap Team'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\tzoom: 7,\n\t\t\tcenter: { lat: 43.54456658436357, lng: -83.9959716796875 }\n\t\t},\n\t\tbreadcrumbsOpened: initialBreadcrumbsOpened,\n\t\tapiUrl:\n\t\t\tprocess.env.NODE_ENV === \"production\" ? \"\" : process.env.API_URL || \"\",\n\t\tuser: {\n\t\t\tusername: \"\",\n\t\t\troles: [],\n\t\t\tfeatures: [],\n\t\t\tlabelMappings: {},\n\t\t\tprofileAttributes: {},\n\t\t\tdashboard: {\n\t\t\t\tconfig: {\n\t\t\t\t\treloadIntervalMilliseconds: 300000,\n\t\t\t\t\twidgets: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidgetType: \"TS_STATUS\",\n\t\t\t\t\t\t\tdisplayName: \"Total Stations Status\",\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tbackgroundColor: \"#ff8\",\n\t\t\t\t\t\t\t\tisDisplay: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidgetType: \"RSU_STATUS\",\n\t\t\t\t\t\t\tdisplayName: \"Roadside Units Status\",\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tbackgroundColor: \"#ff8\",\n\t\t\t\t\t\t\t\tisDisplay: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidgetType: \"TSC_STATUS\",\n\t\t\t\t\t\t\tdisplayName: \"Traffic Signal Controllers Status\",\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tbackgroundColor: \"#ff8\",\n\t\t\t\t\t\t\t\tisDisplay: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidgetType: \"ESS_STATUS\",\n\t\t\t\t\t\t\tdisplayName: \"Environmental Sensor Stations Status\",\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tbackgroundColor: \"#ff8\",\n\t\t\t\t\t\t\t\tisDisplay: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tclient: {\n\t\t\tlinkUrl: \"\",\n\t\t\tlogoImageUrl: \"\",\n\t\t\tname: \"\"\n\t\t},\n\t\tmqttCredentials: {},\n\t\tisDebug: process.env.NODE_ENV !== \"production\"\n\t},\n\tgetters,\n\tmutations,\n\tactions\n});\n","// polyfill CSS variables\n/*!\n * css-var-polyfill.js - v1.0.0\n *\n * Copyright (c) 2018 Aaron Barker \n * Released under the MIT license\n *\n * Date: 2018-03-09\n */\nif (!String.prototype.startsWith) {\n\tString.prototype.startsWith = function(search, pos) {\n\t\treturn this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n\t};\n}\n\nlet cssVarPoly = {\n\tinit: function() {\n\t\t// first lets see if the browser supports CSS variables\n\t\t// No version of IE supports window.CSS.supports, so if that isn't supported in the first place we know CSS variables is not supported\n\t\t// Edge supports supports, so check for actual variable support\n\t\tif (\n\t\t\twindow.CSS &&\n\t\t\twindow.CSS.supports &&\n\t\t\twindow.CSS.supports(\"(--foo: red)\")\n\t\t) {\n\t\t\t// this browser does support variables, abort\n\t\t\t// console.log('your browser supports CSS variables, aborting and letting the native support handle things.');\n\t\t\treturn;\n\t\t} else {\n\t\t\t// edge barfs on console statements if the console is not open... lame!\n\t\t\t// console.log('no support for you! polyfill all (some of) the things!!');\n\t\t\tdocument.body.classList.add(\"cssvars-polyfilled\");\n\t\t}\n\n\t\tcssVarPoly.ratifiedVars = {};\n\t\tcssVarPoly.varsByBlock = {};\n\t\tcssVarPoly.oldCSS = {};\n\n\t\t// start things off\n\t\tcssVarPoly.findCSS();\n\t\tcssVarPoly.updateCSS();\n\t},\n\n\t// find all the css blocks, save off the content, and look for variables\n\tfindCSS: function() {\n\t\tlet styleBlocks = document.querySelectorAll(\n\t\t\t'style:not(.inserted),link[rel=\"stylesheet\"]'\n\t\t);\n\n\t\t// we need to track the order of the style/link elements when we save off the CSS, set a counter\n\t\tlet counter = 1;\n\n\t\t// loop through all CSS blocks looking for CSS variables being set\n\t\t[].forEach.call(styleBlocks, function(block) {\n\t\t\t// console.log(block.nodeName);\n\t\t\tlet theCSS;\n\t\t\tif (block.nodeName === \"STYLE\") {\n\t\t\t\t// console.log(\"style\");\n\t\t\t\ttheCSS = block.innerHTML;\n\t\t\t\tcssVarPoly.findSetters(theCSS, counter);\n\t\t\t} else if (block.nodeName === \"LINK\") {\n\t\t\t\t// console.log(\"link\");\n\t\t\t\tcssVarPoly.getLink(block.getAttribute(\"href\"), counter, function(\n\t\t\t\t\tcounter,\n\t\t\t\t\trequest\n\t\t\t\t) {\n\t\t\t\t\tcssVarPoly.findSetters(request.responseText, counter);\n\t\t\t\t\tcssVarPoly.oldCSS[counter] = request.responseText;\n\t\t\t\t\tcssVarPoly.updateCSS();\n\t\t\t\t});\n\t\t\t\ttheCSS = \"\";\n\t\t\t}\n\t\t\t// save off the CSS to parse through again later. the value may be empty for links that are waiting for their ajax return, but this will maintain the order\n\t\t\tcssVarPoly.oldCSS[counter] = theCSS;\n\t\t\tcounter++;\n\t\t});\n\t},\n\n\t// find all the \"--variable: value\" matches in a provided block of CSS and add them to the master list\n\tfindSetters: function(theCSS, counter) {\n\t\t// console.log(theCSS);\n\t\tcssVarPoly.varsByBlock[counter] = theCSS.match(/(--.+:.+;)/g) || [];\n\t},\n\n\t// run through all the CSS blocks to update the variables and then inject on the page\n\tupdateCSS: function() {\n\t\t// first lets loop through all the variables to make sure later vars trump earlier vars\n\t\tcssVarPoly.ratifySetters(cssVarPoly.varsByBlock);\n\n\t\t// loop through the css blocks (styles and links)\n\t\tfor (let curCSSID in cssVarPoly.oldCSS) {\n\t\t\t// console.log(\"curCSS:\",oldCSS[curCSSID]);\n\t\t\tlet newCSS = cssVarPoly.replaceGetters(\n\t\t\t\tcssVarPoly.oldCSS[curCSSID],\n\t\t\t\tcssVarPoly.ratifiedVars\n\t\t\t);\n\t\t\t// put it back into the page\n\t\t\t// first check to see if this block exists already\n\t\t\tif (document.querySelector(\"#inserted\" + curCSSID)) {\n\t\t\t\t// console.log(\"updating\")\n\t\t\t\tdocument.querySelector(\"#inserted\" + curCSSID).innerHTML = newCSS;\n\t\t\t} else {\n\t\t\t\t// console.log(\"adding\");\n\t\t\t\tvar style = document.createElement(\"style\");\n\t\t\t\tstyle.type = \"text/css\";\n\t\t\t\tstyle.innerHTML = newCSS;\n\t\t\t\tstyle.classList.add(\"inserted\");\n\t\t\t\tstyle.id = \"inserted\" + curCSSID;\n\t\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(style);\n\t\t\t}\n\t\t}\n\t},\n\n\t// parse a provided block of CSS looking for a provided list of variables and replace the --var-name with the correct value\n\treplaceGetters: function(curCSS, varList) {\n\t\t// console.log(varList);\n\t\tfor (let theVar in varList) {\n\t\t\t// console.log(theVar);\n\t\t\t// match the variable with the actual variable name\n\t\t\tlet getterRegex = new RegExp(\"var\\\\(\\\\s*\" + theVar + \"\\\\s*\\\\)\", \"g\");\n\t\t\t// console.log(getterRegex);\n\t\t\t// console.log(curCSS);\n\t\t\tcurCSS = curCSS.replace(getterRegex, varList[theVar]);\n\n\t\t\t// now check for any getters that are left that have fallbacks\n\t\t\tlet getterRegex2 = new RegExp(\"var\\\\(\\\\s*.+\\\\s*,\\\\s*(.+)\\\\)\", \"g\");\n\t\t\t// console.log(getterRegex);\n\t\t\t// console.log(curCSS);\n\t\t\tlet matches = curCSS.match(getterRegex2);\n\t\t\tif (matches) {\n\t\t\t\t// console.log(\"matches\",matches);\n\t\t\t\tmatches.forEach(function(match) {\n\t\t\t\t\t// console.log(match.match(/var\\(.+,\\s*(.+)\\)/))\n\t\t\t\t\t// find the fallback within the getter\n\t\t\t\t\tcurCSS = curCSS.replace(match, match.match(/var\\(.+,\\s*(.+)\\)/)[1]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// curCSS = curCSS.replace(getterRegex2,varList[theVar]);\n\t\t}\n\t\t// console.log(curCSS);\n\t\treturn curCSS;\n\t},\n\n\t// determine the css variable name value pair and track the latest\n\tratifySetters: function(varList) {\n\t\t// console.log(\"varList:\",varList);\n\t\t// loop through each block in order, to maintain order specificity\n\t\tfor (let curBlock in varList) {\n\t\t\tlet curVars = varList[curBlock];\n\t\t\t// console.log(\"curVars:\",curVars);\n\t\t\t// loop through each var in the block\n\t\t\tcurVars.forEach(function(theVar) {\n\t\t\t\t// console.log(theVar);\n\t\t\t\t// split on the name value pair separator\n\t\t\t\tlet matches = theVar.split(/:\\s*/);\n\t\t\t\t// console.log(matches);\n\t\t\t\t// put it in an object based on the varName. Each time we do this it will override a previous use and so will always have the last set be the winner\n\t\t\t\t// 0 = the name, 1 = the value, strip off the ; if it is there\n\t\t\t\tcssVarPoly.ratifiedVars[matches[0]] = matches[1].replace(/;/, \"\");\n\t\t\t});\n\t\t}\n\t\t// console.log(ratifiedVars);\n\t},\n\n\t// get the CSS file (same domain for now)\n\tgetLink: function(url, counter, success) {\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", url, true);\n\t\trequest.overrideMimeType(\"text/css;\");\n\t\trequest.onload = function() {\n\t\t\tif (request.status >= 200 && request.status < 400) {\n\t\t\t\t// Success!\n\t\t\t\t// console.log(request.responseText);\n\t\t\t\tif (typeof success === \"function\") {\n\t\t\t\t\tsuccess(counter, request);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We reached our target server, but it returned an error\n\t\t\t\t// console.warn(\"an error was returned from:\", url);\n\t\t\t}\n\t\t};\n\n\t\trequest.onerror = function() {\n\t\t\t// There was a connection error of some sort\n\t\t\t// console.warn(\"we could not get anything from:\", url);\n\t\t};\n\n\t\trequest.send();\n\t}\n};\n\ndocument.onreadystatechange = function() {\n\tcssVarPoly.init();\n};\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BigMap.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BigMap.vue?vue&type=style&index=0&lang=stylus&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.minimized),expression:\"!minimized\"}],ref:\"win\",staticClass:\"window\",style:(_vm.style),on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.requestActive($event)},\"mouseenter\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.mouseEnter($event)},\"mouseleave\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.mouseLeave($event)}}},[_vm._t(\"header\",[_c('header',{on:{\"mousedown\":_vm.startDragMove,\"dblclick\":_vm.maximize}},[_vm._t(\"title\",[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title || \"Window\"))])]),_c('div',{staticClass:\"actions\"},[(_vm.isMinimizable)?_c('button',{staticClass:\"minimize\",on:{\"click\":_vm.minimize}},[_c('i',{staticClass:\"fa fa-window-minimize\"})]):_vm._e(),(_vm.isMaximizable)?_c('button',{staticClass:\"maximize\",on:{\"click\":_vm.maximize}},[_c('i',{staticClass:\"fa fa-window-maximize\"})]):_vm._e(),(_vm.isClosable)?_c('button',{staticClass:\"close\",on:{\"click\":_vm.close}},[_c('i',{staticClass:\"fa fa-window-close\"})]):_vm._e()])],2)]),_vm._t(\"default\",[_c('div',{staticClass:\"content\"},[_c(_vm.component,_vm._g(_vm._b({ref:\"component\",tag:\"component\"},'component',_vm.wrappedComponentProps,false),_vm.componentEventHandlers))],1)]),_vm._t(\"footer\",[_c('footer',[_c('div',{staticClass:\"content\"}),_c('div',{staticClass:\"resize-handle-container\"},[(_vm.isResizable)?_c('div',{staticClass:\"resize-handle\",on:{\"mousedown\":_vm.startDragResize}},[_c('i',{staticClass:\"fa fa-grip-lines\"})]):_vm._e()])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.window(\n\tref=\"win\"\n\tv-show=\"!minimized\"\n\t:style=\"style\"\n\t@mousedown.stop=\"requestActive\"\n\t@mouseenter.stop.prevent=\"mouseEnter\"\n\t@mouseleave.stop.prevent=\"mouseLeave\"\n\t)\n\tslot(name=\"header\")\n\t\theader(@mousedown=\"startDragMove\" @dblclick=\"maximize\")\n\t\t\tslot(name=\"title\")\n\t\t\t\t.title {{ title || \"Window\" }}\n\t\t\t.actions\n\t\t\t\tbutton.minimize(v-if=\"isMinimizable\" @click=\"minimize\"): i.fa.fa-window-minimize\n\t\t\t\tbutton.maximize(v-if=\"isMaximizable\" @click=\"maximize\"): i.fa.fa-window-maximize\n\t\t\t\tbutton.close(v-if=\"isClosable\" @click=\"close\"): i.fa.fa-window-close\n\n\tslot(ref=\"content\")\n\t\t.content\n\t\t\tcomponent(:is=\"component\" v-bind=\"wrappedComponentProps\" ref=\"component\" v-on=\"componentEventHandlers\")\n\n\tslot(name=\"footer\")\n\t\tfooter\n\t\t\t.content\n\t\t\t.resize-handle-container\n\t\t\t\t.resize-handle(v-if=\"isResizable\" @mousedown=\"startDragResize\"): i.fa.fa-grip-lines\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Window.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Window.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Window.vue?vue&type=template&id=365eb00a&scoped=true&lang=pug&\"\nimport script from \"./Window.vue?vue&type=script&lang=js&\"\nexport * from \"./Window.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Window.vue?vue&type=style&index=0&id=365eb00a&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"365eb00a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('page',[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\npage: slot\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BaseView.vue?vue&type=template&id=428dcfb6&scoped=true&lang=pug&\"\nimport script from \"./BaseView.vue?vue&type=script&lang=js&\"\nexport * from \"./BaseView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"428dcfb6\",\n null\n \n)\n\nexport default component.exports","/**\n * Please insert in alphabetical order.\n * It helps find things more easily. If you see\n * something out of place, please fix it.\n */\nconst permissions = {\n\tESS_DIAGNOSTICS: \"ESSdiagnostics\",\n\tESS_VIEW: \"ESSview\",\n\tESS_OPERATIONS: \"ESSoperations\",\n\tHELP_VIEW: \"HELPview\",\n\tMOT_VIEW: \"MOTview\",\n\tMOT_APPROVE: \"MOTapprove\",\n\tMOT_EDIT: \"MOTedit\",\n\tMPD_ANALYSIS_TAB: \"MPDanalysistab\",\n\tMPD_REPORTS_TAB: \"MPDreportstab\",\n\tMPD_VEHICLE_TAB: \"MPDvehicletab\",\n\tMPD_FORM_TAB: \"MPDformstab\",\n\tRSU_LAB_TEST: \"RSUlabtest\",\n\tRSU_MAP_ACTIVATE: \"RSUMAPactivate\",\n\tRSU_MAP_EDIT: \"RSUMAPedit\",\n\tRSU_MAP_VIEW: \"RSUMAPview\",\n\tRSU_NEAR_NEIGHBOR: \"RSUnearneighbor\",\n\tRSU_OPERATIONS: \"RSUoperations\",\n\tRSU_ON_DEMANDCHECK: \"RSUondemand\",\n\tRSU_TIM_ACTIVATE: \"RSUTIMactivate\",\n\tRSU_TIM_EDIT: \"RSUTIMedit\",\n\tRSU_TIM_VIEW: \"RSUTIMview\",\n\tRSU_RWM_ACTIVATE: \"RSURWMactivate\",\n\tRSU_RWM_EDIT: \"RSURWMedit\",\n\tRSU_RWM_VIEW: \"RSURWMview\",\n\tRSU_VIEW: \"RSUview\",\n\tRSU_VU_FEED_VIEW: \"RSUvufeedview\",\n\tRSU_VU_TEST_VIEW: \"RSUvutestview\",\n\tSCR_ESS_APPROVE: \"SCRESSapprove\",\n\tSCR_ESS_EDIT: \"SCRESSedit\",\n\tSCR_ESS_VIEW: \"SCRESSview\",\n\tSCR_RSU_APPROVE: \"SCRRSUapprove\",\n\tSCR_RSU_EDIT: \"SCRRSUedit\",\n\tSCR_RSU_VIEW: \"SCRRSUview\",\n\tSCR_TS_APPROVE: \"SCRTSapprove\",\n\tSCR_TS_EDIT: \"SCRTSedit\",\n\tSCR_TS_VIEW: \"SCRTSview\",\n\tSCR_TSC_APPROVE: \"SCRTSCapprove\",\n\tSCR_TSC_EDIT: \"SCRTSCedit\",\n\tSCR_TSC_VIEW: \"SCRTSCview\",\n\tSCR_VIEW: \"SCRview\",\n\tSPAT_VERIFY_VIEW: \"SPATVERIFYview\",\n\tSYS_ADMIN_HEALTH_CHECK_VIEW: \"SYSADMINhealthcheckview\",\n\tTFM_VIEW: \"TFMview\",\n\tTFR_EDIT: \"TFRcreate\",\n\tTFR_VIEW: \"TFRview\",\n\tTOTAL_STATION_VIEW: \"TOTALSTATIONview\",\n\tTOTALSTATION_SCR_VIEW: \"SCRTSview\",\n\tTSC_VIEW: \"TSCview\",\n\tUSER_SETUP_VIEW: \"USERSETUPview\",\n\tUSER_SETUP_MODIFY_ALL_CLIENT: \"USERSETUPmodifyallclient\",\n\tUSER_SETUP_MODIFY_IN_CLIENT: \"USERSETUPmodifyinclient\",\n\tVIDAS_CONFIG_VIEW: \"VIDASCONFIGview\",\n\tWP_VIEW: \"TFRwpview\",\n\tWP_EDIT: \"TFRwpedit\"\n};\n\nexport default permissions;\n","export default {\n\tFETCH_MQTT_CREDENTIALS: \"FETCH_MQTT_CREDENTIALS\",\n\tFETCH_USER_INFO: \"FETCH_USER_INFO\",\n\tINIT: \"INIT\"\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('mqtt-manager',{attrs:{\"reconnect\":true}}),_c('session-manager',{attrs:{\"IsUserIdle\":_vm.IsUserIdle},on:{\"ResetTimer\":function($event){return _vm.setIsUserIdle(true)}}}),_c('site-header'),_c('div',{attrs:{\"id\":\"view\"}},[_vm._t(\"breadcrumbs\",[_c('breadcrumbs')]),_vm._t(\"default\",[_c('router-view')]),_c('toasts',{attrs:{\"toasts\":_vm.$store.getters.mostRecentToasts}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"tfm-header\"},[_c('div',{staticClass:\"appname-container header-section header-section-shrinkable\"},[_c('main-hamburger-menu'),_c('a',{staticClass:\"header-menu-item\",attrs:{\"id\":\"logo\",\"href\":\"/\"}},[_vm._v(\"TFM\"),(_vm.showEnv)?_c('strong',{staticClass:\"env is-error\"},[_vm._v(\" \"+_vm._s(_vm.envName))]):_vm._e()]),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$store.state.isDebug),expression:\"$store.state.isDebug\"}],staticClass:\"is-warning header-menu-item no-wrap no-overflow\",attrs:{\"id\":\"debug-warning\"}},[_vm._v(\" Running locally causes times to display UTC\")])],1),_c('div',{staticClass:\"logos-container header-section\"},[_c('div',{staticClass:\"logos header-menu-item\"},[_c('a',{staticClass:\"linkback\",attrs:{\"href\":_vm.$store.state.client.linkUrl,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('img',{staticClass:\"linkback\",attrs:{\"src\":_vm.$store.state.client.logoImageUrl,\"alt\":_vm.$store.state.client.name}})]),_vm._m(0)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"linkback\",attrs:{\"href\":\"http://www.mixonhill.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('img',{staticClass:\"linkback\",attrs:{\"src\":\"/Images/MHLogoGreen_reg.png\",\"alt\":\"Mixon Hill\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"menu-button-wrapper\"},[_c('li',{staticClass:\"menu-button-container\",class:{ 'active': _vm.open }},[_c('div',{staticClass:\"menu-button\",on:{\"click\":_vm.toggleOpen}},[_c('div',{staticClass:\"line-1\"}),_c('div',{staticClass:\"line-2\"}),_c('div',{staticClass:\"line-3\"})]),_c('transition',{attrs:{\"name\":\"slide-down\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"menu\"},[_c('ul',[(_vm.show('map'))?_c('li',[_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(\"Map\")])]):_vm._e(),(_vm.show('report'))?_c('li',[_c('a',{attrs:{\"href\":\"/#Reports\"}},[_vm._v(\"Reports\")])]):_vm._e(),(_vm.show('analysis'))?_c('li',[_c('a',{attrs:{\"href\":\"/#Analysis\"}},[_vm._v(\"Analysis\")])]):_vm._e(),(_vm.show('config'))?_c('li',[_c('a',{attrs:{\"href\":\"/#Config\"}},[_vm._v(\"Config\")])]):_vm._e(),(_vm.show('forms'))?_c('li',[_c('a',{attrs:{\"href\":\"/#Forms\"}},[_vm._v(\"Forms\")])]):_vm._e(),(_vm.show('flood_dss'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/FloodStatus\"}},[_vm._v(\"Flood Status\")])]):_vm._e(),(_vm.show('total_stations'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/DeviceManager\"}},[_vm._v(\"Total Stations\")])]):_vm._e(),(_vm.show('fleet_management'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/FleetTracker\"}},[_vm._v(\"Fleet Management\")])]):_vm._e(),(_vm.show('vu_feed'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/VUFeed\"}},[_vm._v(\"TFM-VU Feed \")])]):_vm._e(),(_vm.show('vu_history'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/VUHistory\"}},[_vm._v(\"TFM-VU History\")])]):_vm._e(),(_vm.show('tfr_entry') && _vm.checkLegacyTFRFeatureFlag)?_c('li',[_c('a',{attrs:{\"href\":\"/TFREntry\"}},[_vm._v(\"TFR Entry\")])]):_vm._e(),((_vm.show('MOT') || _vm.show('tfr_entry'))&& !_vm.checkLegacyTFRFeatureFlag)?_c('li',[_c('a',{attrs:{\"href\":\"/Client/TFlowRestriction\"}},[_vm._v(\"T-Flow Restriction\")])]):(_vm.show('worker_presence'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/WorkerPresence\"}},[_vm._v(\"TFR Worker Presence\")])]):_vm._e(),(_vm.show('MOT') && _vm.checkLegacyTFRFeatureFlag)?_c('li',[_c('a',{attrs:{\"href\":\"/Client/MOT\"}},[_vm._v(\"TFR MOT\")])]):_vm._e(),(_vm.show('system_change_requests'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/ChangeRequests\"}},[_vm._v(\"System Change Requests\")])]):_vm._e(),(_vm.show('dashboard'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/Dashboard\"}},[_vm._v(\"Dashboard\")])]):_vm._e(),(_vm.show('user_profile'))?_c('li',[_c('a',{attrs:{\"href\":\"/UserSetup\"}},[_vm._v(\"User Profile\")])]):_vm._e(),(_vm.show('contact'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/ContactUs\"}},[_vm._v(\"Contact Us\")])]):_vm._e(),(_vm.show('help'))?_c('li',[_c('a',{attrs:{\"href\":\"/Client/Help\"}},[_vm._v(\"Help\")])]):_vm._e(),(_vm.show('logout'))?_c('li',{on:{\"click\":function($event){return _vm.logout()}}},[_c('a',{attrs:{\"href\":\"/Account/Logout\"}},[_vm._v(\"Logout\")])]):_vm._e(),(_vm.show('login'))?_c('li',[_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(\"Login\")])]):_vm._e()])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nul.menu-button-wrapper\r\n\tli.menu-button-container(:class=\"{ 'active': open }\")\r\n\t\t.menu-button(@click=\"toggleOpen\")\r\n\t\t\t.line-1\r\n\t\t\t.line-2\r\n\t\t\t.line-3\r\n\t\ttransition(name=\"slide-down\")\r\n\t\t\t.menu(v-show=\"open\")\r\n\t\t\t\tul\r\n\t\t\t\t\tli(v-if=\"show('map')\"): a(href=\"/\") Map\r\n\t\t\t\t\tli(v-if=\"show('report')\"): a(href=\"/#Reports\") Reports\r\n\t\t\t\t\tli(v-if=\"show('analysis')\"): a(href=\"/#Analysis\") Analysis\r\n\t\t\t\t\tli(v-if=\"show('config')\"): a(href=\"/#Config\") Config\r\n\t\t\t\t\tli(v-if=\"show('forms')\"): a(href=\"/#Forms\") Forms\r\n\t\t\t\t\tli(v-if=\"show('flood_dss')\"): a(href=\"/Client/FloodStatus\") Flood Status\r\n\t\t\t\t\tli(v-if=\"show('total_stations')\"): a(href=\"/Client/DeviceManager\") Total Stations\r\n\t\t\t\t\tli(v-if=\"show('fleet_management')\"): a(href=\"/Client/FleetTracker\") Fleet Management\r\n\t\t\t\t\tli(v-if=\"show('vu_feed')\"): a(href=\"/Client/VUFeed\") TFM-VU Feed\t\t\t\t\t\r\n\t\t\t\t\tli(v-if=\"show('vu_history')\"): a(href=\"/Client/VUHistory\") TFM-VU History\r\n\t\t\t\t\tli(v-if=\"show('tfr_entry') && checkLegacyTFRFeatureFlag\"): a(href=\"/TFREntry\") TFR Entry\r\n\t\t\t\t\tli(v-if=\"(show('MOT') || show('tfr_entry'))&& !checkLegacyTFRFeatureFlag\"): a(href=\"/Client/TFlowRestriction\") T-Flow Restriction\r\n\t\t\t\t\tli(v-else-if=\"show('worker_presence')\"): a(href=\"/Client/WorkerPresence\") TFR Worker Presence\r\n\t\t\t\t\tli(v-if=\"show('MOT') && checkLegacyTFRFeatureFlag\"): a(href=\"/Client/MOT\") TFR MOT\r\n\t\t\t\t\tli(v-if=\"show('system_change_requests')\"): a(href=\"/Client/ChangeRequests\") System Change Requests\r\n\t\t\t\t\tli(v-if=\"show('dashboard')\"): a(href=\"/Client/Dashboard\") Dashboard\r\n\t\t\t\t\tli(v-if=\"show('user_profile')\"): a(href=\"/UserSetup\") User Profile\r\n\t\t\t\t\tli(v-if=\"show('contact')\"): a(href=\"/Client/ContactUs\") Contact Us\r\n\t\t\t\t\tli(v-if=\"show('help')\"): a(href=\"/Client/Help\") Help\r\n\t\t\t\t\t//- li: a(href=\"/#About\") About\r\n\t\t\t\t\tli(v-if=\"show('logout')\" @click=\"logout()\"): a(href=\"/Account/Logout\") Logout\r\n\t\t\t\t\tli(v-if=\"show('login')\" ): a(href=\"/\") Login\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainHamburgerMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainHamburgerMenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MainHamburgerMenu.vue?vue&type=template&id=83dc338c&lang=pug&\"\nimport script from \"./MainHamburgerMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MainHamburgerMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MainHamburgerMenu.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nheader.tfm-header\n\t.appname-container.header-section.header-section-shrinkable\n\t\tmain-hamburger-menu\n\t\ta.header-menu-item#logo(href=\"/\") TFM\n\t\t\tstrong.env.is-error(v-if=\"showEnv\")\n\t\t\t\t= \" \"\n\t\t\t\t| {{ envName }}\n\t\tp.is-warning.header-menu-item.no-wrap.no-overflow#debug-warning(v-show=\"$store.state.isDebug\")\n\t\t\t=\" Running locally causes times to display UTC\"\n\n\t.logos-container.header-section\n\t\t//- the logout option is already in the hamburger menu\n\t\t//- .user.hover-dropdown-toggle.header-menu-item(v-if=\"typeof username === 'string'\")\n\t\t\ti.fa.fas.fa-user\n\t\t\t| {{ username }}\n\t\t\tul.hover-dropdown\n\t\t\t\tli: a.hover-dropdown-item(href=\"/Account/Logout\") Logout\n\t\t.logos.header-menu-item\n\t\t\ta.linkback(:href=\"$store.state.client.linkUrl\" target=\"_blank\" rel=\"noopener noreferrer\")\n\t\t\t\timg.linkback(:src=\"$store.state.client.logoImageUrl\" :alt=\"$store.state.client.name\")\n\t\t\ta.linkback(href=\"http://www.mixonhill.com\" target=\"_blank\" rel=\"noopener noreferrer\")\n\t\t\t\timg.linkback(src=\"/Images/MHLogoGreen_reg.png\" alt=\"Mixon Hill\")\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteHeader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteHeader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SiteHeader.vue?vue&type=template&id=3267a2ba&lang=pug&\"\nimport script from \"./SiteHeader.vue?vue&type=script&lang=js&\"\nexport * from \"./SiteHeader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SiteHeader.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"baseElement\",staticClass:\"breadcrumbs-container\"},[(_vm.$breadcrumbs.length)?_c('nav',{staticClass:\"breadcrumbs\",class:{ 'closed': !_vm.show }},[_vm._m(0),_c('transition-group',{ref:\"items\",staticClass:\"breadcrumb-items-container main-breadcrumb-items-container\",attrs:{\"name\":\"open-right\",\"tag\":\"div\"}},_vm._l((_vm.$breadcrumbs),function(crumb,key){return _c('div',{key:(key + \"-breadcrumb\"),staticClass:\"breadcrumb-item\"},[_c('router-link',{attrs:{\"to\":_vm.linkProp(crumb),\"title\":'Jump to ' + _vm.crumbText(crumb)}},[_vm._v(_vm._s(_vm.crumbText(crumb)))])],1)}),0),_c('div',{staticClass:\"breadcrumb-items-container\"},[_c('button',{staticClass:\"breadcrumbs-toggle-button right\",attrs:{\"title\":(_vm.show ? 'Hide' : 'Show') + ' Navigation Breadcrumbs'},on:{\"click\":function($event){_vm.show = !_vm.show}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"fa fas fa-angle-double-left\"}),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.show),expression:\"!show\"}],staticClass:\"fa fas fa-angle-double-right\"})])])],1):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcrumb-home\"},[_c('i',{staticClass:\"fa fas fa-home\"})])}]\n\nexport { render, staticRenderFns }","\n.breadcrumbs-container(ref=\"baseElement\")\n\tnav.breadcrumbs(v-if=\"$breadcrumbs.length\" :class=\"{ 'closed': !show }\")\n\t\t.breadcrumb-home: i.fa.fas.fa-home\n\t\ttransition-group(name=\"open-right\" tag=\"div\" class=\"breadcrumb-items-container main-breadcrumb-items-container\" ref=\"items\")\n\t\t\t.breadcrumb-item(v-for=\"(crumb, key) in $breadcrumbs\" :key=\"`${key}-breadcrumb`\")\n\t\t\t\trouter-link(:to=\"linkProp(crumb)\" :title=\"'Jump to ' + crumbText(crumb)\") {{ crumbText(crumb) }}\n\t\t.breadcrumb-items-container\n\t\t\tbutton.breadcrumbs-toggle-button.right(@click=\"show = !show\" :title=\"(show ? 'Hide' : 'Show') + ' Navigation Breadcrumbs'\")\n\t\t\t\ti.fa.fas.fa-angle-double-left(v-show=\"show\")\n\t\t\t\ti.fa.fas.fa-angle-double-right(v-show=\"!show\")\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Breadcrumbs.vue?vue&type=template&id=4d078a9e&scoped=true&lang=pug&\"\nimport script from \"./Breadcrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./Breadcrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Breadcrumbs.vue?vue&type=style&index=0&id=4d078a9e&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d078a9e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"session-manager\"},[(_vm.sessionState === 'expiresSoon' && _vm.showSessionExpiresSoonModal && !_vm.isRefreshingSession)?_c('modal',{attrs:{\"title\":\"Session Expiry\"},on:{\"close\":_vm.checkSession}},[_c('p',[_vm._v(\"Your session expires soon. Do you want to extend it?\")]),_c('div',{staticClass:\"actions\",attrs:{\"slot\":\"actions\"},slot:\"actions\"},[_c('button',{staticClass:\"button\",on:{\"click\":function($event){return _vm.logoutSession(true)}}},[_vm._v(\"No\")]),_c('button',{staticClass:\"button button--primary\",on:{\"click\":_vm.checkSession}},[_vm._v(\"Yes\")])])]):_vm._e(),(_vm.sessionState === 'expired' && _vm.showSessionExpiredModal && !_vm.isRefreshingSession)?_c('modal',{attrs:{\"title\":\"\"},on:{\"submit\":_vm.logoutSession}},[_c('p',[_vm._v(\"It seems your session has expired. You will need to sign in again. Redirecting you to the login page...\")]),_c('div',{staticClass:\"actions\",attrs:{\"slot\":\"actions\"},slot:\"actions\"},[_c('button',{staticClass:\"button button--primary\",on:{\"click\":function($event){return _vm.logoutSession(true)}}},[_vm._v(\"Ok\")])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.session-manager\n\t\tmodal(v-if=\"sessionState === 'expiresSoon' && showSessionExpiresSoonModal && !isRefreshingSession\" @close=\"checkSession\" title=\"Session Expiry\")\n\t\t\tp Your session expires soon. Do you want to extend it?\n\t\t\t.actions(slot=\"actions\")\n\t\t\t\tbutton.button(@click=\"logoutSession(true)\") No\n\t\t\t\tbutton.button.button--primary(@click=\"checkSession\") Yes\n\n\n\t\tmodal(v-if=\"sessionState === 'expired' && showSessionExpiredModal && !isRefreshingSession\" @submit=\"logoutSession\" title=\"\")\n\t\t\tp It seems your session has expired. You will need to sign in again. Redirecting you to the login page...\n\t\t\t.actions(slot=\"actions\")\n\t\t\t\tbutton.button.button--primary(@click=\"logoutSession(true)\") Ok\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SessionManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SessionManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SessionManager.vue?vue&type=template&id=2e5943fe&lang=pug&\"\nimport script from \"./SessionManager.vue?vue&type=script&lang=js&\"\nexport * from \"./SessionManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// TODO: we may not want to handle the versioning here but in another\n// abstraction layer\nexport default class MqttTopic {\n\tstatic VERSION_1_PREFIX = \"v1\";\n\n\tstatic VERSION_CONSTRUCTOR_MAP = {\n\t\t[MqttTopic.VERSION_1_PREFIX]: \"v1constructor\"\n\t};\n\n\tconstructor(topic) {\n\t\tif (!Array.isArray(topic)) topic = topic.split(\"/\");\n\n\t\tthis[MqttTopic.VERSION_CONSTRUCTOR_MAP[topic[0]]](topic);\n\t}\n\n\tv1constructor(topic) {\n\t\tvar _; /* eslint-disable-line no-unused-vars */\n\t\tthis.version = MqttTopic.VERSION_1_PREFIX;\n\t\t[\n\t\t\t_,\n\t\t\tthis.category,\n\t\t\tthis.identifier,\n\t\t\tthis.reporter,\n\t\t\tthis.event,\n\t\t\tthis.type\n\t\t] = topic;\n\t}\n\n\ttoString() {\n\t\tconst v = this.version;\n\t\tif (v === MqttTopic.VERSION_1_PREFIX) this.v1toString();\n\t\tthrow \"Invalid MqttTopic version for toString()\";\n\t}\n\n\tarrayToTopic(a) {\n\t\ta.filter(e => typeof e === \"string\").join(\"/\");\n\t}\n\n\tv1toString() {\n\t\treturn this.arrayToTopic([\n\t\t\tMqttTopic.VERSION_1_PREFIX,\n\t\t\tthis.category,\n\t\t\tthis.identifier,\n\t\t\tthis.reporter,\n\t\t\tthis.event,\n\t\t\tthis.type\n\t\t]);\n\t}\n}\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport MQTT from \"paho-mqtt\";\nimport MqttTopic from \"@/models/MqttTopic\";\n\nwindow.Paho = { MQTT };\n\n// console.log(MQTT);\n\nconst EVENT_SOURCE = \"mqtt-client\";\n\nexport default Vue.component(\"mqtt-client\", {\n\tEVENT_SOURCE,\n\n\tprops: {\n\t\tclientId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\n\t\thost: { type: String, required: true },\n\t\tport: { type: [String, Number], default: 9001 }, // MQTT via websockets\n\t\tprotocol: { type: String, default: \"wss://\" }, // websockets + SSL/TLS\n\t\tsuffix: { type: String, default: \"/\" },\n\t\tusername: { type: String, default: null },\n\t\tpassword: { type: String, default: null },\n\n\t\treconnect: { type: Boolean, default: false },\n\t\tconnectTimeoutSecs: { type: Number, default: 30 },\n\t\treconnectTimeoutMillis: { type: Number, default: 5000 },\n\t\tmaxReconnectAttempts: { type: Number, default: 0 },\n\n\t\tuseSSL: { type: Boolean, default: true },\n\n\t\tsubscriptions: {\n\t\t\ttype: [Array, Object],\n\t\t\tdefault: function() {\n\t\t\t\treturn [{ topic: \"#\", qos: 0 }];\n\t\t\t}\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\treconnectAttempts: 0,\n\t\t\tclient: null,\n\t\t\tisConnected: false,\n\t\t\tdisconnecting: false\n\t\t};\n\t},\n\twatch: {\n\t\tisConnected(val, old) {\n\t\t\tif (val !== old) {\n\t\t\t\tif (val) console.info(\"MQTT Client has connected!\");\n\t\t\t\telse console.info(\"MQTT Client has disconnected!\");\n\t\t\t}\n\t\t\tthis.$emit(EVENT_SOURCE + \":isConnected\", {\n\t\t\t\tclientId: this.clientId,\n\t\t\t\tisConnected: val\n\t\t\t});\n\t\t},\n\t\tsubscriptions(val, old) {\n\t\t\tthis.resetSubscriptions(old);\n\t\t}\n\t},\n\tbeforeMount() {\n\t\t// console.log(\"beforeMount() MQTT client\", this, this.username);\n\t\tthis.connect();\n\t\tthis.$root.$refs.mqttClientComponent = this;\n\t},\n\tmethods: {\n\t\tconnect() {\n\t\t\t// console.log(\"MQTT Client Connect()\");\n\t\t\tthis.isConnected = false;\n\t\t\tvar c = new MQTT.Client(\n\t\t\t\tthis.host,\n\t\t\t\tparseInt(this.port),\n\t\t\t\tthis.suffix,\n\t\t\t\tthis.clientId\n\t\t\t);\n\t\t\tthis.client = c;\n\n\t\t\twindow._mqtt_client = this._client;\n\t\t\tvar clientOptions = {\n\t\t\t\ttimeout: this.connectTimeoutSecs,\n\t\t\t\tuseSSL: this.useSSL,\n\t\t\t\tuserName: this.username,\n\t\t\t\tpassword: this.password,\n\t\t\t\tonSuccess: this.onClientConnectSuccess,\n\t\t\t\tonFailure: this.onClientConnectFailed\n\t\t\t};\n\n\t\t\tthis.client.onConnectionLost = this.onClientConnectionLost;\n\t\t\tthis.client.onMessageArrived = this.onClientMessageArrived;\n\n\t\t\tthis.$emit(EVENT_SOURCE + \":beforeConnect\", this.client);\n\t\t\tthis.client.connect(clientOptions);\n\t\t\tthis.$emit(EVENT_SOURCE + \":afterConnect\", this.client);\n\t\t},\n\n\t\tonClientConnectSuccess() {\n\t\t\tthis.isConnected = true;\n\t\t\tthis.resetSubscriptions();\n\t\t\tthis.publishConnectMessage();\n\t\t\tthis.$emit(EVENT_SOURCE + \":subscribed\", this.client);\n\t\t},\n\n\t\tonClientMessageArrived(message) {\n\t\t\t// console.log(\"MQTT Client Message Arrived\", message);\n\t\t\tthis.$emit(EVENT_SOURCE + \":messageArrived\", message);\n\t\t},\n\n\t\tonClientConnectFailed(reason) {\n\t\t\tconsole.error(\"MQTT Client connection failed.\");\n\t\t\tthis.isConnected = false;\n\t\t\tthis.reconnectAttempts = 0;\n\t\t\tthis.$emit(EVENT_SOURCE + \":connectFailed\", {\n\t\t\t\tclient: this.client,\n\t\t\t\treason\n\t\t\t});\n\t\t\tthis.checkReconnect();\n\t\t},\n\n\t\tonClientConnectionLost(reason) {\n\t\t\tconsole.error(\"MQTT Client connection lost.\");\n\t\t\tthis.isConnected = false;\n\t\t\tthis.reconnectAttempts = 0;\n\t\t\tthis.$emit(EVENT_SOURCE + \":connectionLost\", {\n\t\t\t\tclient: this.client,\n\t\t\t\treason\n\t\t\t});\n\t\t\tthis.checkReconnect();\n\t\t},\n\n\t\tcheckReconnect() {\n\t\t\tif (this.isConnected) return;\n\t\t\tif (!this.reconnect) return;\n\n\t\t\tthis.reconnectAttempts++;\n\n\t\t\tconsole.error(\n\t\t\t\t`Attempt ${this.reconnectAttempts} to reconnect to MQTT Client.`\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\tthis.maxReconnectAttempts > 0 &&\n\t\t\t\tthis.reconnectAttempts >= this.maxReconnectAttempts\n\t\t\t)\n\t\t\t\treturn;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.connect();\n\t\t\t}, this.reconnectTimeoutMillis);\n\t\t},\n\n\t\tdisconnect() {\n\t\t\tthis.isConnected = false;\n\t\t\tthis.client.disconnect();\n\t\t\tthis.client = null;\n\t\t},\n\n\t\tresetSubscriptions(oldSubscriptions) {\n\t\t\tif (_.isEmpty(oldSubscriptions)) oldSubscriptions = [];\n\t\t\t_.forEach(oldSubscriptions, s =>\n\t\t\t\t_.isEmpty(s) ? null : this.unsubscribe(s)\n\t\t\t);\n\t\t\t_.forEach(this.subscriptions, s => {\n\t\t\t\tif (_.isEmpty(s)) return;\n\t\t\t\tthis.subscribe(s);\n\t\t\t});\n\t\t},\n\n\t\tunsubscribe(subscription, opts) {\n\t\t\tif (!this.isConnected) return;\n\n\t\t\tif (opts === void 0) opts = {};\n\n\t\t\tif (typeof subscription === \"string\")\n\t\t\t\treturn this.client.unsubscribe(subscription, opts);\n\n\t\t\tconst s = Object.assign({}, subscription);\n\t\t\tconst topic = s.topic;\n\t\t\tdelete s.topic;\n\t\t\tdelete s.qos; // The client is going to validate this object, and qos isn't one of the options it considers valid.\n\t\t\tconst options = s;\n\t\t\treturn this.client.unsubscribe(topic, Object.assign({}, opts, options));\n\t\t},\n\n\t\tsubscribe(subscription, opts) {\n\t\t\tif (!this.isConnected) return;\n\n\t\t\tif (opts === void 0) opts = { qos: 0 };\n\n\t\t\tif (typeof subscription === \"string\")\n\t\t\t\treturn this.client.subscribe(subscription, opts);\n\n\t\t\tconst s = Object.assign({}, subscription);\n\t\t\tconst topic = s.topic;\n\t\t\tdelete s.topic;\n\t\t\tconst options = s;\n\t\t\treturn this.client.subscribe(topic, Object.assign({}, opts, options));\n\t\t},\n\n\t\tpublishConnectMessage() {\n\t\t\tthis.publish(\n\t\t\t\t[\n\t\t\t\t\t\"v1\",\n\t\t\t\t\t\"clients\",\n\t\t\t\t\t\"tfm-DeviceManager_\" + this.clientId,\n\t\t\t\t\t\"connection\",\n\t\t\t\t\t\"connectionStatusChange\",\n\t\t\t\t\t\"notifiction\"\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tconnected: true\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tpublish(topic, payload, qos) {\n\t\t\tif (qos === void 0) qos = 0;\n\t\t\tif (Array.isArray(topic)) topic = topic.join(\"/\");\n\t\t\t// this.client.send(topic, JSON.stringify(payload), qos, false);\n\t\t},\n\n\t\tparseTopic(topic) {\n\t\t\treturn new MqttTopic(topic);\n\t\t}\n\t},\n\trender(h) {\n\t\treturn h(\"div\", { class: \"mqtt-client\" }, []);\n\t}\n});\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport MqttClient from \"@/components/mqtt-client\";\nimport { EventBus } from \"@/event-bus\";\n\nconst MQTT_CLIENT_ID_MAX_LENGTH = 23;\n\nexport default Vue.component(\"mqtt-manager\", {\n\tprops: {\n\t\treconnect: { type: Boolean, default: false }\n\t},\n\tcomputed: {\n\t\tmqttCredentials() {\n\t\t\treturn this.$store.getters.mqttCredentials;\n\t\t},\n\t\tusername() {\n\t\t\treturn this.$store.state.user.username;\n\t\t},\n\t\tsubscriptions() {\n\t\t\treturn this.$store.getters.mqttSubscriptions;\n\t\t}\n\t},\n\tbeforeMount() {},\n\tmounted() {},\n\tmethods: {\n\t\tgenerateRandomClientID() {\n\t\t\t// TODO: solve the race condition of not yet having a username\n\t\t\treturn (\n\t\t\t\t\"tfmwdm-\" + // TerraForm Manager Web Device Manager\n\t\t\t\tthis.username.substring(0, 14) +\n\t\t\t\t\"-\" +\n\t\t\t\t(Math.random() * 1000000000000000).toString()\n\t\t\t).substring(0, MQTT_CLIENT_ID_MAX_LENGTH);\n\t\t}\n\t},\n\trender(h) {\n\t\tconst manager = this;\n\t\treturn h(\n\t\t\t\"div\",\n\t\t\t{ class: \"mqtt-manager\" },\n\t\t\t_.isEmpty(this.username)\n\t\t\t\t? []\n\t\t\t\t: _.map(this.mqttCredentials, (c, k) => {\n\t\t\t\t\t\treturn h(\n\t\t\t\t\t\t\tMqttClient,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tref: k,\n\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t[\"mqtt-client:messageArrived\"](message) {\n\t\t\t\t\t\t\t\t\t\tEventBus.pushGlobalEvent(\"mqtt-client:messageArrived\", {\n\t\t\t\t\t\t\t\t\t\t\tclient: manager.$refs[k],\n\t\t\t\t\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t[\"mqtt-client:subscribed\"](message) {\n\t\t\t\t\t\t\t\t\t\tEventBus.pushGlobalEvent(\"mqtt-client:subscribed\", {\n\t\t\t\t\t\t\t\t\t\t\tclient: manager.$refs[k],\n\t\t\t\t\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t[\"mqtt-client:connectFailed\"]({ client, message }) {\n\t\t\t\t\t\t\t\t\t\tEventBus.pushGlobalEvent(\"mqtt-client:connectFailed\", {\n\t\t\t\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t[\"mqtt-client:connectionLost\"]({ client, message }) {\n\t\t\t\t\t\t\t\t\t\tEventBus.pushGlobalEvent(\"mqtt-client:connectionLost\", {\n\t\t\t\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t[\"mqtt-client:isConnected\"]({ client, isConnected }) {\n\t\t\t\t\t\t\t\t\t\tEventBus.pushGlobalEvent(\"mqtt-client:isConnected\", {\n\t\t\t\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\t\t\t\tisConnected\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprops: Object.assign({}, c, {\n\t\t\t\t\t\t\t\t\tclientId: this.generateRandomClientID(),\n\t\t\t\t\t\t\t\t\tsubscriptions: Object.assign({}, this.subscriptions),\n\t\t\t\t\t\t\t\t\treconnect: this.reconnect\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t);\n\t\t\t\t })\n\t\t);\n\t}\n});\n","\n#app\n\tmqtt-manager(:reconnect=\"true\")\n\tsession-manager(:IsUserIdle=\"IsUserIdle\" @ResetTimer=\"setIsUserIdle(true)\")\n\tsite-header\n\t#view\n\t\tslot(name=\"breadcrumbs\"): breadcrumbs\n\t\tslot: router-view\n\t\ttoasts(:toasts=\"$store.getters.mostRecentToasts\")\n\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4ed43eee&lang=pug&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('breadcrumb-view',{staticClass:\"home\"},[_c('h1',[_vm._v(\"You seem to be lost!\")]),_c('p',[_c('a',{staticClass:\"button\",attrs:{\"href\":\"/\"}},[_vm._v(\"Go Home\")])]),(!_vm.getIsProductionEnvironment())?_c('div',{staticClass:\"dev-nav\"},[_c('hr'),_c('p',[_vm._v(\"You also may have been looking for...\")]),_c('p',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'DeviceManager' }}},[_vm._v(\"Total Stations\")]),_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'FloodDss'}}},[_vm._v(\"Flood Status\")]),_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'ChangeRequests.User.Request' }}},[_vm._v(\"Add User\")]),_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'VUFeed' }}},[_vm._v(\"TFM-VU Feed\")]),_c('router-link',{staticClass:\"button is-error\",attrs:{\"to\":{ name: 'ResetPassword' }}},[_vm._v(\"Password Reset\")])],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nbreadcrumb-view.home\n\th1 You seem to be lost!\n\tp\n\t\ta.button(href=\"/\") Go Home\n\n\tdiv(v-if=\"!getIsProductionEnvironment()\").dev-nav\n\t\thr\n\t\tp You also may have been looking for...\n\t\tp\n\t\t\trouter-link.button(:to=\"{ name: 'DeviceManager' }\") Total Stations\n\t\t\trouter-link.button(:to=\"{ name: 'FloodDss'}\") Flood Status\n\t\t\trouter-link.button(:to=\"{ name: 'ChangeRequests.User.Request' }\") Add User\n\t\t\trouter-link.button(:to=\"{ name: 'VUFeed' }\") TFM-VU Feed\n\t\t\t//- router-link.button(:to=\"{ name: 'Sandbox' }\") Sandbox\n\t\t\t//- router-link.button(:to=\"{ name: 'Manage' }\") Manage\n\t\t\t//- router-link.button(:to=\"{ name: 'Account' }\") Account (Blank)\n\t\t\trouter-link.button.is-error(:to=\"{ name: 'ResetPassword' }\") Password Reset\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=46fef1d7&scoped=true&lang=pug&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=46fef1d7&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46fef1d7\",\n null\n \n)\n\nexport default component.exports","import PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/Help\",\n\tcomponent: () =>\n\t\timport(/* webpackChunkName: \"User\" */ \"@/views/Help/HelpMain\"),\n\tmeta: {\n\t\tbreadcrumb: \"Help\",\n\t\tauthorizedRoles: [PERMISSIONS.HELP_VIEW]\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":_vm.pageTransition}},[_c('router-view',_vm._b({},'router-view',_vm.passProps,false))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\ntransition(:name=\"pageTransition\")\n\trouter-view(v-bind=\"passProps\")\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PageViewer.vue?vue&type=template&id=64db5d33&lang=pug&\"\nimport script from \"./PageViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./PageViewer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/MOT\",\n\tmeta: {\n\t\tbreadcrumb: \"TFR MOT\",\n\t\tauthorizedRoles: [\n\t\t\tPERMISSIONS.MOT_EDIT,\n\t\t\tPERMISSIONS.MOT_VIEW,\n\t\t\tPERMISSIONS.MOT_APPROVE\n\t\t]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/MOT\",\n\t\t\tname: \"TFR MOT\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT\" */ \"@/views/MOT/MOTMain\")\n\t\t},\n\t\t{\n\t\t\tpath: \"/MOT/:motId?\",\n\t\t\tname: \"MOT.bymotId\",\n\t\t\tprops: route => ({ motId: route.params.motId }),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn `${this.$route.params.motId}`;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT.motId\" */ \"@/views/MOT/MOTDisplay\")\n\t\t},\n\t\t{\n\t\t\tpath: \"/MOT/:rulesetId?\",\n\t\t\tname: \"MOT.byrulesetId\",\n\t\t\tprops: route => ({ rulesetId: route.params.motId }),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn `rulesetId: ${this.$route.params.motId}`;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT.motId\" */ \"@/views/MOT/MOTDisplay\")\n\t\t},\n\t\t{\n\t\t\tpath: \"/MOT/:projectId?\",\n\t\t\tname: \"MOT.byprojectId\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\tprojectId: route.params.projectId\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tthis.$mhi.replaceLabel(\"Project\") +\n\t\t\t\t\t\t`Id:` +\n\t\t\t\t\t\tthis.$route.params.projectId\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT.motId\" */ \"@/views/MOT/MOTMain\")\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/TFlowRestriction\",\n\tmeta: {\n\t\tbreadcrumb: \"TFlowRestriction\",\n\t\tauthorizedRoles: [\n\t\t\tPERMISSIONS.MOT_EDIT,\n\t\t\tPERMISSIONS.MOT_VIEW,\n\t\t\tPERMISSIONS.MOT_APPROVE,\n\t\t\tPERMISSIONS.TFR_EDIT,\n\t\t\tPERMISSIONS.TFR_VIEW\n\t\t]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/TFlowRestriction\",\n\t\t\tname: \"TFlowRestriction\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"TFlowRestriction\" */ \"@/views/TFlowRestriction/TFlowRestrictionMain\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath:\n\t\t\t\t\"/TFlowRestriction/:projectId/:region/:county/:localOffice/:clientId/:contractorId/:fromDate/:toDate/:byUser/:type/:showWithoutRules/:status\",\n\t\t\tname: \"TFlowRestriction.Filter\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\tprojectId: route.params.ProjectId,\n\t\t\t\t\tregion: route.params.Region,\n\t\t\t\t\tcounty: route.params.County,\n\t\t\t\t\tlocalOffice: route.params.LocalOffice,\n\t\t\t\t\tclientId: route.params.ClientId,\n\t\t\t\t\tcontractorId: route.params.ContractorId,\n\t\t\t\t\tfromDate: route.params.FromDate,\n\t\t\t\t\ttoDate: route.params.ToDate,\n\t\t\t\t\tbyUser: route.params.ByUser,\n\t\t\t\t\tshowWithoutRules: route.params.ShowWithoutRuleSet,\n\t\t\t\t\ttype: route.params.ProjectType,\n\t\t\t\t\tstatus: route.params.ProjectStatus\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"MOT.motId\" */ \"@/views/TFlowRestriction/TFlowRestrictionMain\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \"/MOT/:projectId/:motId\",\n\t\t\tname: \"MOT\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\tprojectId: route.params.projectId,\n\t\t\t\t\tmotId: route.params.motId\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t`TFR ` +\n\t\t\t\t\t\tthis.$mhi.replaceLabel(\"Rule Set\") +\n\t\t\t\t\t\t`#:` +\n\t\t\t\t\t\tthis.$route.params.motId\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT.motId\" */ \"@/views/MOT/MOTMain\")\n\t\t},\n\t\t{\n\t\t\tpath: \"/MOT/:motId?\",\n\t\t\tname: \"MOT.bymotId_New\",\n\t\t\tprops: route => ({ motId: route.params.motId }),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn `RuleSetId: ${this.$route.params.motId}`;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"MOT.motId\" */ \"@/views/MOT/MOTDisplay\")\n\t\t}\n\t]\n};\n","import store from \"@/store\";\nimport FEATURES from \"@/common/feature-lib\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/Dashboard\",\n\tcomponent: () => import(\"@/views/Dashboard/DashboardRouteView\"),\n\tbeforeEnter: (to, from, next) => {\n\t\tif (!store.getters.currentUserHasFeature(FEATURES.DASHBOARD)) {\n\t\t\tnext({\n\t\t\t\tname: \"Unauthorized\"\n\t\t\t});\n\t\t}\n\t\tnext();\n\t},\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tcomponent: () => import(\"@/views/Dashboard/DashboardDetailsRouteView\"),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"Dashboard\",\n\t\t\t\tauthorizedRoles: [\n\t\t\t\t\tPERMISSIONS.ESS_VIEW,\n\t\t\t\t\tPERMISSIONS.RSU_VIEW,\n\t\t\t\t\tPERMISSIONS.TSC_VIEW,\n\t\t\t\t\tPERMISSIONS.TOTAL_STATION_VIEW\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tname: \"Dashboard\",\n\t\t\t\t\tcomponent: () => import(\"@/views/Dashboard/DashboardEntryPoint\")\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"TotalStationsStatus/:totalStationStatusId\",\n\t\t\t\t\tname: \"Dashboard.Details.TotalStationsStatus\",\n\t\t\t\t\tcomponent: () => import(\"@/views/Dashboard/Details/DetailsStatusTs\"),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb: \"Total Stations Status\"\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"RsusStatus/:deviceStatusId\",\n\t\t\t\t\tname: \"Dashboard.Details.RsusStatus\",\n\t\t\t\t\tcomponent: () => import(\"@/views/Dashboard/Details/DetailsStatusRsu\"),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb: \"Devices Status\"\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"TscsStatus/:deviceStatusId\",\n\t\t\t\t\tname: \"Dashboard.Details.TscsStatus\",\n\t\t\t\t\tcomponent: () => import(\"@/views/Dashboard/Details/DetailsStatusTsc\"),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb: \"Devices Status\"\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"EsssStatus/:deviceStatusId\",\n\t\t\t\t\tname: \"Dashboard.Details.EsssStatus\",\n\t\t\t\t\tcomponent: () => import(\"@/views/Dashboard/Details/DetailsStatusEss\"),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb: \"Devices Status\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-view',{staticClass:\"page\"},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nbase-view.page\n\trouter-view\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DmsRouteView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DmsRouteView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DmsRouteView.vue?vue&type=template&id=900f0898&lang=pug&\"\nimport script from \"./DmsRouteView.vue?vue&type=script&lang=js&\"\nexport * from \"./DmsRouteView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// import PageViewer from \"@/components/PageViewer\";\nimport DmsRouteView from \"@/views/DeviceManager/DMS/DmsRouteView\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"DMS\",\n\tcomponent: DmsRouteView,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"VerifyHeadings\",\n\t\t\tname: \"DeviceManager.DMS.VerifyHeadings\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\"@/views/DeviceManager/DMS/DmsTim/DetailsDmsTimVerifyHeadings\"),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"Verify DMS TIM Headings\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.RSU_TIM_EDIT]\n\t\t\t}\n\t\t}\n\t]\n};\n","import _ from \"lodash\";\nimport PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\nimport store from \"@/store\";\n\nconst dsrcProps = route => {\n\treturn {\n\t\tdeviceIdentifier: parseInt(route.params.rsuIdentifier),\n\t\tdeviceType: \"rsu\"\n\t};\n};\n\nexport default {\n\tpath: \"DSRC\",\n\tprops: dsrcProps,\n\tcomponent: PageViewer,\n\tmeta: {\n\t\tauthorizedRoles: [PERMISSIONS.RSU_TIM_VIEW, PERMISSIONS.RSU_MAP_VIEW]\n\t},\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"DeviceManager.RSU.DSRC\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.DSRC\" */ \"@/views/DeviceManager/DSRC/Index\"\n\t\t\t\t),\n\t\t\tprops: dsrcProps\n\t\t},\n\t\t{\n\t\t\tpath: \"TIM\",\n\t\t\tcomponent: PageViewer,\n\t\t\tprops: dsrcProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"TIMs\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.RSU_TIM_VIEW]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tname: \"DeviceManager.RSU.DSRC.TIM\",\n\t\t\t\t\tprops: route => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dsrcProps(route),\n\t\t\t\t\t\t\tpageTransition: \"none\"\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"DeviceManager.RSU.DSRC.TIMIndex\" */ \"@/views/DeviceManager/DSRC/TIM/TIMList\"\n\t\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \":timIdentifier/:action?\",\n\t\t\t\t\tname: \"DeviceManager.RSU.DSRC.TIM.byIdentifier\",\n\t\t\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\t\t\t// If there's no action, then no further checks required.\n\t\t\t\t\t\tif (!to.params.action) {\n\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check only needed for edit or create actions.\n\t\t\t\t\t\tconst action = to.params.action.toLowerCase();\n\t\t\t\t\t\tif (action === \"edit\" || action === \"create\") {\n\t\t\t\t\t\t\tif (store.getters.currentUserHasRole(PERMISSIONS.RSU_TIM_EDIT)) {\n\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnext(\"Unauthorized\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Default\n\t\t\t\t\t\tnext();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tprops: route => {\n\t\t\t\t\t\troute.params.action = route.params.action || \"view\";\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dsrcProps(route),\n\t\t\t\t\t\t\ttimIdentifier: parseInt(route.params.timIdentifier),\n\t\t\t\t\t\t\taction: route.params.action\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb() {\n\t\t\t\t\t\t\tif (_.isNil(this.$route.params.action)) {\n\t\t\t\t\t\t\t\treturn \"View\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tthis.$route.params.action.charAt(0).toUpperCase() +\n\t\t\t\t\t\t\t\tthis.$route.params.action.slice(1)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"DeviceManager.RSU.DSRC.TIM\" */ \"@/views/DeviceManager/DSRC/TIM/TIMDetail\"\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tpath: \"RWM\",\n\t\t\tcomponent: PageViewer,\n\t\t\tprops: dsrcProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"RWMs\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.RSU_RWM_VIEW]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tname: \"DeviceManager.RSU.DSRC.RWM\",\n\t\t\t\t\tprops: route => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dsrcProps(route),\n\t\t\t\t\t\t\tpageTransition: \"none\"\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () => import(\"@/views/DeviceManager/DSRC/RWM/RWMList\")\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \":rwmIdentifier/:action?\",\n\t\t\t\t\tname: \"DeviceManager.RSU.DSRC.RWM.byIdentifier\",\n\t\t\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\t\t\t// If there's no action, then no further checks required.\n\t\t\t\t\t\tif (!to.params.action) {\n\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check only needed for edit or create actions.\n\t\t\t\t\t\tconst action = to.params.action.toLowerCase();\n\t\t\t\t\t\tif (action === \"edit\" || action === \"create\") {\n\t\t\t\t\t\t\tif (store.getters.currentUserHasRole(PERMISSIONS.RSU_RWM_EDIT)) {\n\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnext(\"Unauthorized\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Default\n\t\t\t\t\t\tnext();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tprops: route => {\n\t\t\t\t\t\troute.params.action = route.params.action || \"view\";\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dsrcProps(route),\n\t\t\t\t\t\t\trwmIdentifier: parseInt(route.params.rwmIdentifier),\n\t\t\t\t\t\t\taction: route.params.action\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb() {\n\t\t\t\t\t\t\tif (_.isNil(this.$route.params.action)) {\n\t\t\t\t\t\t\t\treturn \"View\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tthis.$route.params.action.charAt(0).toUpperCase() +\n\t\t\t\t\t\t\t\tthis.$route.params.action.slice(1)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () => import(\"@/views/DeviceManager/DSRC/RWM/RWMDetail\")\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tpath: \"MAP\",\n\t\t\tprops: dsrcProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"MAP\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.RSU_MAP_VIEW]\n\t\t\t},\n\t\t\tname: \"DeviceManager.RSU.DSRC.MAP\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.DSRC.MAP\" */ \"@/views/DeviceManager/DSRC/MAP/Index\"\n\t\t\t\t)\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\nimport DSRC from \"./DSRC\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\nimport store from \"@/store\";\nimport FEATURES from \"@/common/feature-lib\";\n\nconst rsuProps = route => {\n\treturn {\n\t\trsuIdentifier: route.params.rsuIdentifier,\n\t\tdeviceIdentifier: route.params.rsuIdentifier,\n\t\tdeviceType: \"rsu\"\n\t};\n};\n\nexport default {\n\tpath: \"RSU\",\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tmeta: {\n\t\tauthorizedRoles: [PERMISSIONS.RSU_VIEW]\n\t},\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"DeviceManager.RSU\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.RSU\" */ \"@/views/DeviceManager/RSU/Index\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \":rsuIdentifier\",\n\t\t\tprops: rsuProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\tconst id = this.$route.params.rsuIdentifier;\n\t\t\t\t\tconst device = this.$store.getters[\"rsu/byIdentifier\"](id);\n\t\t\t\t\treturn device ? device.locationDescription : id;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: PageViewer,\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tprops: rsuProps,\n\t\t\t\t\tname: \"DeviceManager.RSU.byIdentifier\",\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"DeviceManager.RSU.ByIdentifier\" */ \"@/views/DeviceManager/RSU/ByIdentifier\"\n\t\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\tDSRC\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tpath: \"Config/:rsuIdentifier\",\n\t\t\tcomponent: PageViewer,\n\t\t\tprops: rsuProps,\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tif (\n\t\t\t\t\t!store.getters.currentUserHasFeature(FEATURES.RSU_NTCIP1218_CONFIG)\n\t\t\t\t) {\n\t\t\t\t\tnext({\n\t\t\t\t\t\tname: \"Unauthorized\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"RSU Configuration\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.SCR_RSU_EDIT]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tname: \"DeviceManager.RSU.CONFIG\",\n\t\t\t\t\tprops: route => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...rsuProps(route),\n\t\t\t\t\t\t\tpageTransition: \"none\"\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () => import(\"@/views/DeviceManager/RSU/CONFIG/RSUConfig\")\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n","// import PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"ESS\",\n\tprops: { pageTransition: \"none\" },\n\tcomponent: () => import(\"@/views/DeviceManager/ESS/Index\"),\n\tchildren: [\n\t\t{\n\t\t\tpath: \"Diagnostics/:id\",\n\t\t\tname: \"DeviceManager.ESS.Diagnostics\",\n\t\t\tcomponent: () => import(\"@/views/DeviceManager/ESS/Diagnostics\"),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"Diagnostics for ESS\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.ESS_DIAGNOSTICS]\n\t\t\t}\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\n\nexport default {\n\tpath: \"DeviceReport\",\n\t// meta: {\n\t// \tbreadcrumb: \"Report\"\n\t// },\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"DeviceManager.Verification.DeviceReport\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification.DeviceReport\" */ \"@/views/DeviceManager/Verification/DeviceReport/Index\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \":rsuId\",\n\t\t\tname: \"DeviceManager.Verification.DeviceReport.byRsuId\",\n\t\t\tprops: route => {\n\t\t\t\treturn { rsuId: route.params.rsuId };\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn \"RSU: \" + this.$route.params.rsuId;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification.DeviceReport.byRsuId\" */ \"@/views/DeviceManager/Verification/DeviceReport/Rsu/Index\"\n\t\t\t\t),\n\t\t\tchildren: []\n\t\t},\n\t\t{\n\t\t\tpath: \":rsuId/:testsetnum\",\n\t\t\tname: \"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\trsuId: route.params.rsuId,\n\t\t\t\t\ttestsetnum: route.params.testsetnum\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn \"Test #: \" + this.$route.params.testsetnum;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\" */ \"@/views/DeviceManager/Verification/DeviceReport/Rsu/Testsetnum\"\n\t\t\t\t)\n\t\t}\n\t]\n};\n","import DeviceReport from \"./DeviceReport\";\nimport PageViewer from \"@/components/PageViewer\";\nimport FvuStore from \"@/store/modules/fvu\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nconst fvuProps = route => {\n\treturn {\n\t\tfvuId: route.params.fvuId,\n\t\tdeviceIdentifier: route.params.fvuId,\n\t\tdeviceType: \"fvu\",\n\t\trsuId: route.params.rsuId\n\t};\n};\n\nexport default {\n\tpath: \"Verification\",\n\tmeta: {\n\t\tbreadcrumb: \"TFM-VU\",\n\t\tauthorizedRoles: [PERMISSIONS.RSU_VU_TEST_VIEW]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"DeviceManager.Verification\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification\" */ \"@/views/DeviceManager/Verification/Index\"\n\t\t\t\t)\n\t\t},\n\t\tDeviceReport,\n\t\t{\n\t\t\tpath: \"Replay/:testsetnum\",\n\t\t\tname: \"DeviceManager.Verification.Replay\",\n\t\t\tprops: route => {\n\t\t\t\treturn { ...fvuProps(route), testsetnum: route.params.testsetnum };\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn \"Replay Test \" + this.$route.params.testsetnum;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification.Replay\" */ \"@/views/DeviceManager/Verification/Replay\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \":fvuId\",\n\t\t\tname: \"DeviceManager.Verification.byFvuId\",\n\t\t\tprops: fvuProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\tconst fvu = this.$store.getters[\n\t\t\t\t\t\t`${FvuStore.MODULE_NAME}/byIdentifier`\n\t\t\t\t\t](this.$route.params.fvuId);\n\t\t\t\t\treturn \"VUnit: \" + ((fvu && fvu.displayName) || \"...\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification\" */ \"@/views/DeviceManager/Verification/Index\"\n\t\t\t\t),\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"rsu/:rsuId\",\n\t\t\t\t\tname: \"DeviceManager.Verification.byFvuId.withInitialRsu\",\n\t\t\t\t\tprops: fvuProps,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb() {\n\t\t\t\t\t\t\treturn \"RSU: \" + this.$route.params.rsuId;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification\" */ \"@/views/DeviceManager/Verification/Index\"\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tpath: \"rsu/:rsuId\",\n\t\t\tname: \"DeviceManager.Verification.withInitialRsu\",\n\t\t\tprops: fvuProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn \"RSU: \" + this.$route.params.rsuId;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification\" */ \"@/views/DeviceManager/Verification/Index\"\n\t\t\t\t)\n\t\t}\n\t]\n};\n","import DMS from \"./DMS\";\nimport RSU from \"./RSU\";\nimport ESS from \"./ESS\";\nimport Verification from \"./Verification\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nimport PageViewer from \"@/components/PageViewer\";\n\nimport { isNil } from \"lodash\";\nimport store from \"@/store\";\nimport DeviceManagerStoreModule from \"@/store/modules/device-manager\";\n\nconst checkContextMenuLatLng = (to, from, next) => {\n\tconst contextMenuLatLng =\n\t\tstore.getters[DeviceManagerStoreModule.MODULE_NAME + \"/contextMenuLatLng\"];\n\tif (\n\t\tisNil(contextMenuLatLng) ||\n\t\tisNil(contextMenuLatLng.lat) ||\n\t\tisNil(contextMenuLatLng.lng)\n\t) {\n\t\tnext({ name: \"DeviceManager\" });\n\t\treturn;\n\t}\n\tnext();\n};\n\nexport default {\n\tpath: \"/DeviceManager\",\n\tprops: { pageTransition: \"none\" },\n\tmeta: {\n\t\tbreadcrumb: \"Total Stations\",\n\t\tauthorizedRoles: [PERMISSIONS.TOTAL_STATION_VIEW]\n\t},\n\tcomponent: PageViewer,\n\tchildren: [\n\t\t// {\n\t\t// \tpath: \"/DeviceManager/Devices\",\n\t\t// \tname: \"DeviceManager.Devices\",\n\t\t// \tcomponent: () =>\n\t\t// \t\timport(\n\t\t// \t\t\t/* webpackChunkName: \"DeviceManager.Devices\" */ \"@/views/DeviceManager/Devices\"\n\t\t// \t\t),\n\t\t// \tmeta: {\n\t\t// \t\tauthorizedRoles: [\n\t\t// \t\t\tPERMISSIONS.RSU_VIEW,\n\t\t// \t\t\tPERMISSIONS.TSC_VIEW,\n\t\t// \t\t\tPERMISSIONS.ESS_VIEW\n\t\t// \t\t]\n\t\t// \t},\n\t\t// \tchildren: [\n\t\t// \t\t{\n\t\t// \t\t\tpath: \"Manage/:deviceTypeId/:deviceId\",\n\t\t// \t\t\tname: \"DeviceManager.Manage\",\n\t\t// \t\t\tcomponent: () =>\n\t\t// \t\t\t\timport(\n\t\t// \t\t\t\t\t/* webpackChunkName: \"DeviceManager.Manage\" */ \"@/views/DeviceManager/Manage\"\n\t\t// \t\t\t\t)\n\t\t// \t\t}\n\t\t// \t]\n\t\t// },\n\t\t{\n\t\t\tpath: \"/DeviceManager/SpatVerification\",\n\t\t\tname: \"Spat Verification\",\n\t\t\tcomponent: () => import(\"@/views/DeviceManager/SpatVerification/Index\"),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"Spat Verification\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.SPAT_VERIFY_VIEW]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"DeviceManager\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Index\" */ \"@/views/DeviceManager/Index\"\n\t\t\t\t),\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"SCR/:scrId?\",\n\t\t\t\t\tname: \"DeviceManager.TSSCR\",\n\t\t\t\t\tbeforeEnter: checkContextMenuLatLng,\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\"@/views/ChangeRequests/TotalStationScrModal\"),\n\t\t\t\t\tprops: route => ({\n\t\t\t\t\t\tscrId: route.params.scrId && parseInt(route.params.scrId)\n\t\t\t\t\t}),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tauthorizedRoles: [PERMISSIONS.TOTALSTATION_SCR_VIEW]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"DeviceSCR/:initialDeviceTypeId?/:scrId?\",\n\t\t\t\t\tname: \"DeviceManager.SCR\",\n\t\t\t\t\tbeforeEnter: checkContextMenuLatLng,\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"DeviceManager.SCR\" */ \"@/views/ChangeRequests/DeviceScrModal\"\n\t\t\t\t\t\t),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tauthorizedRoles: [\n\t\t\t\t\t\t\tPERMISSIONS.SCR_RSU_VIEW,\n\t\t\t\t\t\t\tPERMISSIONS.SCR_TSC_VIEW,\n\t\t\t\t\t\t\tPERMISSIONS.SCR_ESS_VIEW,\n\t\t\t\t\t\t\tPERMISSIONS.RSU_LAB_TEST\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tprops: route => ({\n\t\t\t\t\t\tinitialDeviceTypeId:\n\t\t\t\t\t\t\troute.params.initialDeviceTypeId &&\n\t\t\t\t\t\t\tparseInt(route.params.initialDeviceTypeId),\n\t\t\t\t\t\tscrId: route.params.scrId && parseInt(route.params.scrId),\n\t\t\t\t\t\ttest: route.params.test\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \":totalStationId\",\n\t\t\t\t\tname: \"DeviceManagerById\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tDMS,\n\t\tRSU,\n\t\tVerification,\n\t\tESS\n\t]\n};\n","import PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\t// name: \"ChangeRequests\",\n\tpath: \"/ChangeRequests\",\n\tcomponent: () =>\n\t\timport(/* webpackChunkName: \"User\" */ \"@/views/ChangeRequests/Index\"),\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"ChangeRequests.SCR\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"UserList\" */ \"@/views/ChangeRequests/components/SCRListIndex\"\n\t\t\t\t),\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb: \"Change Requests\",\n\t\t\t\tauthorizedRoles: [PERMISSIONS.SCR_VIEW]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"User\",\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"User\" */ \"@/views/ChangeRequests/User/Index\"\n\t\t\t\t),\n\t\t\tmeta: { breadcrumb: \"User\" },\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t\tname: \"ChangeRequests.User.Request\",\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"UserList\" */ \"@/views/ChangeRequests/User/components/Request\"\n\t\t\t\t\t\t),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tauthorizedRoles: [\n\t\t\t\t\t\t\tPERMISSIONS.USER_SETUP_MODIFY_ALL_CLIENT,\n\t\t\t\t\t\t\tPERMISSIONS.USER_SETUP_MODIFY_IN_CLIENT\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"List\",\n\t\t\t\t\tname: \"ChangeRequests.User.List\",\n\t\t\t\t\tcomponent: () =>\n\t\t\t\t\t\timport(\n\t\t\t\t\t\t\t/* webpackChunkName: \"UserList\" */ \"@/views/ChangeRequests/User/components/List\"\n\t\t\t\t\t\t),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tbreadcrumb: \"List\",\n\t\t\t\t\t\tauthorizedRoles: [PERMISSIONS.USER_SETUP_MODIFY_ALL_CLIENT]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/VUHistory\",\n\tmeta: {\n\t\tbreadcrumb: \"VU History\",\n\t\tauthorizedRoles: [PERMISSIONS.RSU_VU_TEST_VIEW]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"VUHistory\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"VUHistory\" */ \"@/views/VUHistory/Index\")\n\t\t},\n\t\t{\n\t\t\tpath: \"rsu/:rsuId\",\n\t\t\tname: \"VUHistory.byRsuId\",\n\t\t\tredirect: to => {\n\t\t\t\tconst { params } = to;\n\t\t\t\treturn { path: \"/VUHistory\", query: { rsuId: params[\"rsuId\"] } };\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"TFMHistory/:rsuId/:testsetnum\",\n\t\t\tname: \"DeviceManager.TotalStation.DeviceReport.byRsuId.withTestsetnum\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\trsuId: route.params.rsuId,\n\t\t\t\t\ttestsetnum: route.params.testsetnum\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn \"Test #: \" + this.$route.params.testsetnum;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"DeviceManager.Verification.DeviceReport.byRsuId.withTestsetnum\" */ \"@/views/DeviceManager/Verification/DeviceReport/Rsu/Testsetnum\"\n\t\t\t\t)\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\nimport FvuStore from \"@/store/modules/fvu\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nconst fvuProps = route => {\n\treturn {\n\t\tfvuId: route.params.fvuId,\n\t\tdeviceIdentifier: route.params.fvuId,\n\t\tdeviceType: \"fvu\",\n\t\tdevice: route.params.device\n\t};\n};\n\nexport default {\n\tpath: \"/VUFeed\",\n\tmeta: {\n\t\tbreadcrumb: \"TFM-VU Feed\",\n\t\tauthorizedRoles: [PERMISSIONS.RSU_VU_FEED_VIEW]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/\",\n\t\t\tname: \"VUFeed\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(/* webpackChunkName: \"VUFeed\" */ \"@/views/VUFeed/Index\")\n\t\t},\n\t\t{\n\t\t\tpath: \":fvuId\",\n\t\t\tname: \"VUFeed.byFvuId\",\n\t\t\tprops: fvuProps,\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\tconst fvu = this.$store.getters[\n\t\t\t\t\t\t`${FvuStore.MODULE_NAME}/byIdentifier`\n\t\t\t\t\t](this.$route.params.fvuId);\n\t\t\t\t\treturn \"VUnit: \" + ((fvu && fvu.displayName) || \"...\");\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"VUFeed.byVUnitId\" */ \"@/views/VUFeed/ByVUnitId/Index\"\n\t\t\t\t),\n\t\t\tchildren: []\n\t\t}\n\t]\n};\n","import PageViewer from \"@/components/PageViewer\";\nimport PERMISSIONS from \"@/common/permissions-lib\";\n\nexport default {\n\tpath: \"/WorkerPresence\",\n\tmeta: {\n\t\tbreadcrumb: \"WorkerPresence\",\n\t\tauthorizedRoles: [PERMISSIONS.WP_VIEW]\n\t},\n\tcomponent: PageViewer,\n\tprops: { pageTransition: \"none\" },\n\tchildren: [\n\t\t{\n\t\t\tpath: \"/WorkerPresence\",\n\t\t\tname: \"WorkerPresence\",\n\t\t\tprops: { pageTransition: \"none\" },\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"TFlowRestriction\" */ \"@/views/WorkerPresence/WorkerPresenceMain\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \"/WorkerPresence/:projectId\",\n\t\t\tname: \"WorkerPresence.projectId\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\tprojectId: route.params.projectId\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn `WorkerPresence ProjectId:` + this.$route.params.projectId;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"MOT.motId\" */ \"@/views/WorkerPresence/WorkerPresenceMain\"\n\t\t\t\t)\n\t\t},\n\t\t{\n\t\t\tpath: \"/WorkerPresence/:contractorId\",\n\t\t\tname: \"WorkerPresence.contractorId\",\n\t\t\tprops: route => {\n\t\t\t\treturn {\n\t\t\t\t\tcontractorId: route.params.contractorId\n\t\t\t\t};\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\tbreadcrumb() {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t`WorkerPresence contractorId:` + this.$route.params.contractorId\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomponent: () =>\n\t\t\t\timport(\n\t\t\t\t\t/* webpackChunkName: \"MOT.motId\" */ \"@/views/WorkerPresence/WorkerPresenceMain\"\n\t\t\t\t)\n\t\t}\n\t]\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('map-view',{staticClass:\"flood-monitoring\"},[_c('tfm-map',{ref:\"map\",attrs:{\"center\":_vm.Detroit,\"zoom\":9,\"aggressive-position-saving\":true,\"zoomControl\":false},on:{\"map:mounted\":_vm.onMapMounted}},[[_vm._l((_vm.floodData),function(fd){return _c('LRectangle',{key:fd.floodDssId,attrs:{\"bounds\":fd.floodPolygon,\"stroke\":true,\"color\":fd.mapColor,\"weight\":5,\"fill\":true,\"fillColor\":fd.mapColor,\"fillOpacity\":.5}})}),_vm._l((_vm.floodData),function(fd){return (_vm.showGridCells)?_c('location-marker',{key:fd.weatherGridCellId,attrs:{\"lat-lng\":{lat: fd.centerLatitude, lng: fd.centerLongitude},\"icon\":_vm.getIcon(fd.weatherGridCellId)}}):_vm._e()})],[_vm._l((_vm.weatherStationData),function(wsd){return _c('location-marker',{key:wsd.siteId,attrs:{\"latLng\":[wsd.latitude, wsd.longitude],\"icon\":_vm.wxMarker}},[_c('LPopup',{attrs:{\"lat-lng\":{lat: wsd.latitude, lng: wsd.longitude},\"content\":wsd.toolTip}})],1)}),_vm._l((_vm.streamGageData),function(sgd){return _c('location-marker',{key:sgd.siteId,attrs:{\"lat-lng\":{lat: sgd.latitude, lng: sgd.longitude},\"icon\":_vm.sgMarker}},[_c('LPopup',{attrs:{\"lat-lng\":{lat: sgd.latitude, lng: sgd.longitude},\"content\":sgd.toolTip}})],1)})]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Sidebar',_vm._b({staticClass:\"breadcrumb-pad\",attrs:{\"collapsed\":!_vm.show,\"scroll-top\":_vm.sidebarScrollTop},on:{\"sidebar:collapse\":function($event){return _vm.toggleSidebar(false)},\"sidebar:uncollapse\":function($event){return _vm.toggleSidebar(true)}}},'Sidebar',_vm.$props,false),[_c('header',[_vm._v(\"booya \"),_c('div',{staticClass:\"card\"},[_vm._v(\"booya 2\")])]),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nSidebar.breadcrumb-pad(\n\t\t:collapsed=\"!show\"\n\t\tv-bind=\"$props\"\n\t\t@sidebar:collapse=\"toggleSidebar(false)\"\n\t\t@sidebar:uncollapse=\"toggleSidebar(true)\"\n\t\t:scroll-top=\"sidebarScrollTop\"\n\t\t)\n\theader booya \n\t\t.card booya 2\n\tslot\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloodDssSidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloodDssSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FloodDssSidebar.vue?vue&type=template&id=8a01f7c2&scoped=true&lang=pug&\"\nimport script from \"./FloodDssSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./FloodDssSidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FloodDssSidebar.vue?vue&type=style&index=0&id=8a01f7c2&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a01f7c2\",\n null\n \n)\n\nexport default component.exports","\r\nmap-view.flood-monitoring\r\n\ttfm-map(\r\n\t\t\tref=\"map\"\t\t\t\r\n\t\t\t:center=\"Detroit\"\r\n\t\t\t:zoom=9\r\n\t\t\t:aggressive-position-saving=\"true\"\r\n\t\t\t:zoomControl=\"false\"\r\n\t\t\t@map:mounted=\"onMapMounted\"\r\n\t\t)\r\n\t\ttemplate\r\n\t\t\tLRectangle(\r\n\t\t\t\tv-for=\"fd in floodData\" v-bind:key=\"fd.floodDssId\"\r\n\t\t\t\t:bounds=\"fd.floodPolygon\"\r\n\t\t\t\t:stroke=\"true\"\r\n\t\t\t\t:color=\"fd.mapColor\"\r\n\t\t\t\t:weight=\"5\"\r\n\t\t\t\t:fill=\"true\"\r\n\t\t\t\t:fillColor=\"fd.mapColor\"\r\n\t\t\t\t:fillOpacity=\".5\"\r\n\t\t\t)\r\n\t\t\tlocation-marker(\r\n\t\t\t\tv-if=\"showGridCells\"\r\n\t\t\t\tv-for=\"fd in floodData\" v-bind:key=\"fd.weatherGridCellId\"\r\n\t\t\t\t:lat-lng=\"{lat: fd.centerLatitude, lng: fd.centerLongitude}\"\r\n\t\t\t\t:icon=\"getIcon(fd.weatherGridCellId)\"\r\n\t\t\t)\r\n\t\ttemplate\r\n\t\t\tlocation-marker(\r\n\t\t\t\tv-for=\"wsd in weatherStationData\" v-bind:key=\"wsd.siteId\"\t\t\t\t\r\n\t\t\t\t:latLng=\"[wsd.latitude, wsd.longitude]\"\r\n\t\t\t\t:icon=\"wxMarker\"\r\n\t\t\t)\r\n\t\t\t\tLPopup(\r\n\t\t\t\t\t:lat-lng=\"{lat: wsd.latitude, lng: wsd.longitude}\"\r\n\t\t\t\t\t:content=\"wsd.toolTip\"\r\n\t\t\t\t)\r\n\t\t\t\t\t\r\n\r\n\t\t\tlocation-marker(\r\n\t\t\t\tv-for=\"sgd in streamGageData\" v-bind:key=\"sgd.siteId\"\r\n\t\t\t\t:lat-lng=\"{lat: sgd.latitude, lng: sgd.longitude}\"\r\n\t\t\t\t:icon=\"sgMarker\"\r\n\t\t\t\t)\r\n\t\t\t\tLPopup(\r\n\t\t\t\t\t:lat-lng=\"{lat: sgd.latitude, lng: sgd.longitude}\"\r\n\t\t\t\t\t:content=\"sgd.toolTip\"\r\n\t\t\t\t)\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=1fb8acbe&scoped=true&lang=pug&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&id=1fb8acbe&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fb8acbe\",\n null\n \n)\n\nexport default component.exports","import FloodDss from \"../../views/FloodDSS/Index.vue\";\n\nexport default {\n\tpath: \"/FloodStatus\",\n\tname: \"FloodDss\",\n\tmeta: {\n\t\tbreadcrumb: \"Flood Status\"\n\t},\n\tcomponent: FloodDss,\n\tprops: { pageTransition: \"none\" }\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('map-view',{staticStyle:{\"display\":\"flex\"}},[_c('LMap',{ref:\"fleetMap\",staticStyle:{\"position\":\"absolute\"},attrs:{\"zoom\":7,\"center\":[42.09105289033012, -86.3687610129183],\"minZoom\":5},on:{\"update:zoom\":_vm.updateZoom}},[_c('MapPanControl',{class:_vm.panControlNeedsBuffer ? 'fvu-buffered' : '',on:{\"pan-control-click\":_vm.handlePan}}),_c('l-control-layers',{ref:\"layerControl\"}),_vm._l((_vm.tileProviders),function(tileProvider){return _c('l-tile-layer',{key:tileProvider.name,ref:'tilelayer__' + tileProvider.name,refInFor:true,attrs:{\"name\":tileProvider.name,\"visible\":tileProvider.visible,\"url\":tileProvider.url,\"options\":_vm.mergeOptions(tileProvider.options),\"attribution\":tileProvider.attribution,\"layer-type\":\"base\",\"layerType\":\"base\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}})}),_c('l-control-scale',{attrs:{\"position\":\"bottomleft\",\"imperial\":true,\"metric\":true}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import API from \"@/api\";\r\n\r\nexport default class Service {\r\n\tactiveRequests = [];\r\n\tasync fetchVehicles() {\r\n\t\tconst requestName = \"fetchVehicles\";\r\n\r\n\t\tconst openRequest = this.activeRequests.find(\r\n\t\t\tx => x.requestName == requestName\r\n\t\t);\r\n\t\tif (openRequest) {\r\n\t\t\topenRequest.abortController.abort();\r\n\t\t\tdelete this.activeRequests[requestName];\r\n\t\t}\r\n\r\n\t\tconst abortController = new AbortController();\r\n\t\tconst signal = abortController.signal;\r\n\r\n\t\tconst promise = API.fetchJson(\r\n\t\t\tAPI.ENDPOINTS.GET_FLEET_TRACKER_VEHICLES,\r\n\t\t\t{ signal },\r\n\t\t\te => {\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\t\t).then(response => {\r\n\t\t\tdelete this.activeRequests[requestName];\r\n\t\t\treturn response;\r\n\t\t});\r\n\t\tthis.activeRequests.push({ requestName, abortController });\r\n\t\treturn promise;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=2f2df892&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import FleetTracker from \"../../views/FleetTracker/Index.vue\";\r\nimport store from \"@/store\";\r\nimport FEATURES from \"@/common/feature-lib\";\r\n//import PERMISSIONS from \"@/common/permissions-lib\";\r\n\r\nexport default {\r\n\tpath: \"/FleetTracker\",\r\n\tname: \"FleetTracker\",\r\n\tmeta: {\r\n\t\tbreadcrumb: \"FleetTracker\"\r\n\t},\r\n\tcomponent: FleetTracker,\r\n\tprops: { pageTransition: \"none\" },\r\n\tbeforeEnter: (to, from, next) => {\r\n\t\tif (!store.getters.currentUserHasFeature(FEATURES.FLEET_MANAGEMENT)) {\r\n\t\t\tnext({\r\n\t\t\t\tname: \"Unauthorized\"\r\n\t\t\t});\r\n\t\t}\r\n\t\tnext();\r\n\t}\r\n};\r\n","import Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\nimport Home from \"@/views/Home\";\r\nimport store from \"@/store\";\r\nimport ActionTypes from \"@/store/action-types\";\r\n\r\nimport Help from \"./Help\";\r\nimport MOT from \"./MOT\";\r\nimport TFlowRestriction from \"./TFlowRestriction\";\r\nimport Dashboard from \"./Dashboard\";\r\nimport DeviceManager from \"./DeviceManager\";\r\nimport ChangeRequests from \"./ChangeRequests\";\r\nimport Environment from \"@/environment\";\r\nimport VUHistory from \"./VUHistory\";\r\nimport VUFeed from \"./VUFeed\";\r\nimport WorkerPresence from \"./WorkerPresence\";\r\nimport FloodDss from \"./FloodDss\";\r\nimport FleetTracker from \"./FleetTracker\";\r\n\r\nVue.use(VueRouter);\r\n\r\nconst router = new VueRouter({\r\n\tbase: \"/Client\",\r\n\tmode: \"history\",\r\n\troutes: [\r\n\t\t{\r\n\t\t\tpath: \"/\",\r\n\t\t\tname: \"Home\",\r\n\t\t\tcomponent: Home\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/Unauthorized\",\r\n\t\t\tname: \"Unauthorized\",\r\n\t\t\tcomponent: () => import(\"@/views/Unauthorized\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tallowAnonymous: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/ResetPassword/:token?\",\r\n\t\t\tname: \"ResetPassword\",\r\n\t\t\tprops: true,\r\n\t\t\tcomponent: () =>\r\n\t\t\t\timport(\r\n\t\t\t\t\t/* webpackChunkName: \"ResetPassword\" */ \"@/views/Account/ResetPassword/Index\"\r\n\t\t\t\t),\r\n\t\t\tmeta: {\r\n\t\t\t\tallowAnonymous: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/ContactUs/\",\r\n\t\t\tname: \"ContactUs\",\r\n\t\t\tprops: true,\r\n\t\t\tcomponent: () =>\r\n\t\t\t\timport(\r\n\t\t\t\t\t/* webpackChunkName: \"ContactPage\" */ \"@/views/ContactUs/ContactPage\"\r\n\t\t\t\t),\r\n\t\t\tmeta: {\r\n\t\t\t\tallowAnonymous: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\t// redirect old reset password url\r\n\t\t\tpath: \"/Account/ResetPassword/:token?\",\r\n\t\t\tprops: true,\r\n\t\t\tredirect: \"/ResetPassword/:token?\",\r\n\t\t\tmeta: {\r\n\t\t\t\tallowAnonymous: true\r\n\t\t\t}\r\n\t\t},\r\n\t\tDashboard,\r\n\t\tDeviceManager,\r\n\t\tChangeRequests,\r\n\t\tVUHistory,\r\n\t\tVUFeed,\r\n\t\tHelp,\r\n\t\tMOT,\r\n\t\tTFlowRestriction,\r\n\t\tWorkerPresence,\r\n\t\tFloodDss,\r\n\t\tFleetTracker,\r\n\t\t//{\r\n\t\t//path: \"/about\",\r\n\t\t//name: \"about\",\r\n\t\t// // route level code-splitting\r\n\t\t// // this generates a separate chunk (about.[hash].js) for this route\r\n\t\t// // which is lazy-loaded when the route is visited.\r\n\t\t//component: () =>\r\n\t\t// // the \"webpackChunkName\" comment on the following line matters!\r\n\t\t//import(/* webpackChunkName: \"about\" */ \"./views/About.vue\")\r\n\t\t//},\r\n\t\t{\r\n\t\t\t// When a URL matches multiple routes the route defined earliest is given priority.\r\n\t\t\t// Defining the catchall route last in order to ensure it has the lowest possible priority.\r\n\t\t\tpath: \"*\",\r\n\t\t\tname: \"NotFound\",\r\n\t\t\tcomponent: () => import(\"@/views/NotFound\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tallowAnonymous: true\r\n\t\t\t}\r\n\t\t}\r\n\t]\r\n});\r\n\r\n// This promise is used in the router.beforeEach method to prevent routing occuring before\r\n// the user's information has been loaded.\r\nconst storeInit = store.dispatch(ActionTypes.INIT);\r\n\r\n// Add allowAnonymous: true to a routes meta field to allow unauthenticated users on a view\r\n// Add authorizedRoles as an array of strings to designate permitted roles on a view\r\nrouter.beforeEach((to, from, next) => {\r\n\tif (to.matched.some(record => record.meta.allowAnonymous)) {\r\n\t\tnext();\r\n\t\treturn;\r\n\t}\r\n\r\n\tstoreInit.then(() => {\r\n\t\tconst haveUsername =\r\n\t\t\tstore.state.user.username &&\r\n\t\t\ttypeof store.state.user.username === \"string\";\r\n\r\n\t\t// If we don't have a username ie the user is not logged in.\r\n\t\tif (!haveUsername) {\r\n\t\t\tif (\r\n\t\t\t\tEnvironment.getIsProductionEnvironment() ||\r\n\t\t\t\tEnvironment.getCurrentEnvironmentData() == \"TEST_ENV_KEY\"\r\n\t\t\t) {\r\n\t\t\t\twindow.location.href =\r\n\t\t\t\t\twindow.location.protocol + \"//\" + window.location.host;\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\tnext(\"/Unauthorized\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If route requires authorization\r\n\t\tlet routeRequiresRoles = to.matched.some(\r\n\t\t\trecord => record.meta.authorizedRoles\r\n\t\t);\r\n\t\tif (routeRequiresRoles) {\r\n\t\t\t// Loop through each match and check user has at least one permission required.\r\n\t\t\tlet index = 0;\r\n\t\t\tdo {\r\n\t\t\t\tif (\r\n\t\t\t\t\tto.matched[index][\"meta\"] &&\r\n\t\t\t\t\tto.matched[index][\"meta\"][\"authorizedRoles\"]\r\n\t\t\t\t) {\r\n\t\t\t\t\t// If user doesn't have at least one permission required, then\r\n\t\t\t\t\t// redirect to unauthorized page.\r\n\t\t\t\t\tconst rolesRequired = to.matched[index].meta.authorizedRoles;\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!rolesRequired.some(role => store.getters.currentUserHasRole(role))\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tnext(\"/Unauthorized\");\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tindex++;\r\n\t\t\t} while (index < to.matched.length);\r\n\t\t}\r\n\r\n\t\t// If we got here, then the user has permissions to requested route.\r\n\t\tnext();\r\n\t});\r\n});\r\n\r\nexport default router;\r\n","/* eslint-disable no-console */\n\nimport { register } from \"register-service-worker\";\n\nif (process.env.NODE_ENV === \"production\") {\n\tregister(`${process.env.BASE_URL}service-worker.js`, {\n\t\tready() {\n\t\t\tconsole.log(\n\t\t\t\t\"App is being served from cache by a service worker.\\n\" +\n\t\t\t\t\t\"For more details, visit https://goo.gl/AFskqB\"\n\t\t\t);\n\t\t},\n\t\tcached() {\n\t\t\tconsole.log(\"Content has been cached for offline use.\");\n\t\t},\n\t\tupdated() {\n\t\t\tconsole.log(\"New content is available; please refresh.\");\n\t\t},\n\t\toffline() {\n\t\t\tconsole.log(\n\t\t\t\t\"No internet connection found. App is running in offline mode.\"\n\t\t\t);\n\t\t},\n\t\terror(error) {\n\t\t\tconsole.error(\"Error during service worker registration:\", error);\n\t\t}\n\t});\n}\n","/**\n * To use this plugin, include it with Vue.use().\n * Use\n * \t\t\n * to wrap a feature component.\n * The tag cannot be the first item rendered or it will throw an error\n * saying that multiple root nodes were returned from the render function.\n *\n * To check if user has feature inside a component, you can use a statement like this:\n * \t\tif (this.$mhi.userHasFeature(this.$mhi.FEATURE1)).\n */\n\nconst UserHasFeature = {\n\tinstall: function(Vue) {\n\t\t// Install this as a global component\n\t\tVue.component(\"feature\", {\n\t\t\tfunctional: true,\n\t\t\tprops: {\n\t\t\t\tid: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\tdefault: \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\trender(h, context) {\n\t\t\t\tconst userHasFeature = context.parent.$store.getters[\n\t\t\t\t\t\"currentUserHasFeature\"\n\t\t\t\t](context.props.id);\n\n\t\t\t\tif (userHasFeature) {\n\t\t\t\t\treturn context.children;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexport default UserHasFeature;\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n\ttheme: {\n\t\tdisable: true\n\t},\n\ticons: {\n\t\ticonfont: \"fa\" || \"fa5\"\n\t}\n});\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport store from \"./store/index\";\nimport router from \"./router/index\";\nimport VueBreadcrumbs from \"vue-breadcrumbs\";\nimport \"./registerServiceWorker\";\nimport * as commonFilters from \"@/common/filters\";\nimport UserHasFeature from \"@/plugins/userHasFeature\";\nimport Features from \"@/common/feature-lib\";\nimport vuetify from \"@/plugins/vuetify\";\n\n// Import styles - order is important.\nimport \"roboto-fontface/css/roboto/roboto-fontface.css\";\nimport \"@fortawesome/fontawesome-free/css/all.css\";\nimport \"@/styles/main.styl\";\n\n// for IE 11\nimport \"./polyfills/cssvars\";\nimport \"./polyfills/CustomEvent\";\n\nVue.config.productionTip = false;\n\nVue.use(VueBreadcrumbs);\nVue.use(UserHasFeature);\n\nfor (var i in commonFilters) Vue.filter(i, commonFilters[i]);\n\nnew Vue({\n\tstore,\n\trouter,\n\tvuetify,\n\tbreadcrumbs: VueBreadcrumbs,\n\tbeforeCreate: function() {\n\t\tVue.prototype.$mhi = {\n\t\t\t...Features,\n\t\t\tuserHasFeature: featureName => {\n\t\t\t\treturn this.$store.getters[\"currentUserHasFeature\"](featureName);\n\t\t\t},\n\t\t\treplaceLabel: labelText => {\n\t\t\t\treturn this.$store.getters[\"replaceLabel\"](labelText);\n\t\t\t}\n\t\t};\n\t},\n\trender: h => h(App)\n}).$mount(\"#app\");\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toasts-container\"},[_c('transition-group',{attrs:{\"name\":\"toast-transition\"}},_vm._l((_vm.toasts),function(t,k){return _c('div',{key:(k + \"-toast\"),staticClass:\"toast\",class:t.classes || {}},[_c('div',{staticClass:\"message\"},[_vm._v(_vm._s(t.content))]),_c('button',{staticClass:\"button button--ghost toast-dismiss-button\",on:{\"click\":function($event){return _vm.dismissToast(t)}}},[_c('i',{staticClass:\"fa fa-times\"})])])}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.toasts-container\n\ttransition-group(name=\"toast-transition\")\n\t\t.toast(v-for=\"(t, k) in toasts\" :key=\"`${k}-toast`\" :class=\"t.classes || {}\")\n\t\t\t.message {{ t.content }}\n\t\t\tbutton.button.button--ghost.toast-dismiss-button(@click=\"dismissToast(t)\")\n\t\t\t\ti.fa.fa-times\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Toasts.vue?vue&type=template&id=6ddccbd2&lang=pug&\"\nimport script from \"./Toasts.vue?vue&type=script&lang=js&\"\nexport * from \"./Toasts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Toasts.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('page',{staticClass:\"page--breadcrumbs\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\npage.page--breadcrumbs: slot\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadcrumbView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadcrumbView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BreadcrumbView.vue?vue&type=template&id=124ca704&scoped=true&lang=pug&\"\nimport script from \"./BreadcrumbView.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadcrumbView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadcrumbView.vue?vue&type=style&index=0&id=124ca704&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"124ca704\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('aside',{ref:\"sidebar\",staticClass:\"sidebar\",class:_vm.sidebarClass,style:(_vm.sidebarStyle)},[_vm._t(\"default\",[_vm._v(_vm._s(_vm.sidebarScrollTop))]),_c('div',{staticClass:\"sidebar-toggle\",class:{ floating: _vm.collapsed }},[(_vm.showToggleBtn)?_c('button',{staticClass:\"button button--ghost button--icon-only\",attrs:{\"title\":\"Toggle Sidebar\"},on:{\"click\":_vm.toggleSidebar}},[(!_vm.collapsed)?_c('i',{staticClass:\"fa fa-angle-double-left\"}):_c('i',{staticClass:\"fa fa-angle-double-right\"})]):_vm._e()])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\naside.sidebar(ref=\"sidebar\" :style=\"sidebarStyle\" :class=\"sidebarClass\")\n\tslot {{ sidebarScrollTop }}\n\n\t.sidebar-toggle(:class=\"{ floating: collapsed }\")\n\t\tbutton.button.button--ghost.button--icon-only(@click=\"toggleSidebar\" v-if=\"showToggleBtn\" title=\"Toggle Sidebar\")\n\t\t\ti.fa.fa-angle-double-left(v-if=\"!collapsed\")\n\t\t\ti.fa.fa-angle-double-right(v-else)\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=5f1b22af&scoped=true&lang=pug&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=5f1b22af&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f1b22af\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeFilter.vue?vue&type=style&index=0&id=5a5d3a3a&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeFilter.vue?vue&type=style&index=0&id=5a5d3a3a&lang=stylus&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=style&index=0&id=4d078a9e&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=style&index=0&id=4d078a9e&lang=stylus&scoped=true&\"","import _ from \"lodash\";\nimport * as L from \"leaflet\";\nimport { LMarker } from \"vue2-leaflet\";\nimport \"leaflet-rotatedmarker\";\nimport \"leaflet-routing-machine\";\n\nexport default {\n\textends: LMarker,\n\tprops: {\n\t\textraClass: {\n\t\t\tcustom: true,\n\t\t\tdefault: \"normal\"\n\t\t},\n\t\toptions: {\n\t\t\tdefault: () => {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t\ticon: {\n\t\t\tdefault: () => {\n\t\t\t\treturn new L.Icon.Default();\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tsetExtraClass(extraClass) {\n\t\t\tconst classes = extraClass.split(\" \");\n\t\t\tfor (const c of classes) {\n\t\t\t\tthis.mapObject._icon.classList.add(c);\n\t\t\t}\n\t\t}\n\t},\n\tmounted() {\n\t\t// console.log(this.icon);\n\t\t// console.log(this.mapObject);\n\t\t// console.log(this.mapObject._icon);\n\t\tthis.mapObject._icon.classList.add(...this.extraClass.split(\" \"));\n\t},\n\twatch: {\n\t\toptions(val) {\n\t\t\tif (\"opacity\" in val) {\n\t\t\t\tthis.mapObject._icon.style.opacity = val.opacity;\n\t\t\t}\n\t\t},\n\t\textraClass(val, old) {\n\t\t\t/*\n\t\t\tconsole.log(\n\t\t\t\tthis,\n\t\t\t\t\"Marker Extra Class Change:\",\n\t\t\t\tval,\n\t\t\t\told,\n\t\t\t\tthis.mapObject,\n\t\t\t\tthis.mapObject._icon,\n\t\t\t\tthis.mapObject._icon.classList\n\t\t\t);\n\t\t\t*/\n\t\t\ttry {\n\t\t\t\tif (!_.isEmpty(old)) {\n\t\t\t\t\tconst classes = old.split(\" \");\n\t\t\t\t\tfor (const c of classes) {\n\t\t\t\t\t\tthis.mapObject._icon.classList.remove(c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!_.isEmpty(val)) {\n\t\t\t\t\tthis.setExtraClass(val);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(err);\n\t\t\t}\n\t\t\treturn val;\n\t\t}\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"g_fade-shrink\"}},[_c('div',{staticClass:\"modal__mask\",on:{\"keydown\":_vm.keydown}},[(true)?_c('form',{staticClass:\"modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"modal__header\"},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCloseButton),expression:\"showCloseButton\"}],staticClass:\"button--ghost button--icon-only button--modal-close\",on:{\"click\":_vm.close}},[_vm._v(\"×\")]),_vm._t(\"header\",[_c('h3',[_c('label',[_vm._v(_vm._s(_vm.title))])])])],2),_c('div',{staticClass:\"modal__content\"},[_vm._t(\"default\")],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideFooter),expression:\"!hideFooter\"}],staticClass:\"modal__footer\"},[_vm._t(\"actions\",[_c('button',{staticClass:\"button button--primary\",on:{\"click\":_vm.close}},[_vm._v(\"OK\")])])],2)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\ntransition(name=\"g_fade-shrink\")\n\t.modal__mask(@keydown=\"keydown\")\n\t\tform.modal(@submit.prevent=\"submit\" v-if=\"true\")\n\t\t\t.modal__header\n\t\t\t\tbutton.button--ghost.button--icon-only.button--modal-close(v-show=\"showCloseButton\", @click=\"close\") ×\n\t\t\t\tslot(name=\"header\")\n\t\t\t\t\th3: label {{ title }}\n\n\t\t\t.modal__content\n\t\t\t\tslot\n\n\t\t\t.modal__footer(v-show=\"!hideFooter\")\n\t\t\t\tslot.actions(name=\"actions\")\n\t\t\t\t\tbutton.button.button--primary(@click=\"close\") OK\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=317ef33a&lang=pug&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Modal.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const join = (array, separator) => array.filter(v => v).join(separator);\n\nexport const capitalize = value => {\n\tif (!value) return \"\";\n\tvalue = value.toString();\n\treturn value.charAt(0).toUpperCase() + value.slice(1);\n};\n\nexport const capitalizeEach = stringWithSpaces => {\n\treturn stringWithSpaces\n\t\t.split(\" \")\n\t\t.map(word => {\n\t\t\treturn capitalize(word);\n\t\t})\n\t\t.join(\" \");\n};\n\nexport const formatDateString = (str, exp, sub) => {\n\tvar regexp = new RegExp(exp, \"g\");\n\treturn formatOnlyDate(str)\n\t\t.toString()\n\t\t.replace(regexp, sub);\n};\n\nimport moment from \"moment\";\nimport _ from \"lodash\";\n\nexport const addTime = (value, number, typeString) => {\n\treturn moment(value).add(number, typeString);\n};\n\nexport const areDatetimesTheSame = (value, comparator) => {\n\treturn moment(value).isSame(comparator, \"day\");\n};\n\nexport const daysBetween = (from, to) => {\n\treturn moment(to).diff(moment(from), \"d\");\n};\n\nexport const subTime = (value, number, typeString) => {\n\treturn moment(value).subtract(number, typeString);\n};\n\nexport const fromNow = value => moment(value).fromNow();\n\nexport const formatDate = (v, formatString) =>\n\tmoment(v).format(formatString || \"M/D/YY h:mm A\");\n\nexport const formatOnlyDate = (v, formatString) =>\n\tmoment(v).format(formatString || \"MM/DD/YYYY\");\n\nexport const formatOnlyTime = (v, formatString) =>\n\tmoment(v).format(formatString || \"hh:mm\");\n\nexport const json = v => JSON.stringify(v, null, 2);\n\nexport const ellipsis = (str, len) => {\n\tif (typeof str === \"string\" && str.length > len) {\n\t\treturn str.substring(0, len - 3) + \"\\u2026\";\n\t}\n\treturn str;\n};\n\nexport const formatUTCtoLocal = inputDate => {\n\tlet localDateTime = null;\n\n\tconst UNSPECIFIED = \"Unspecified\";\n\tif (_.isNil(inputDate)) {\n\t\treturn UNSPECIFIED;\n\t}\n\n\t// Ensure inputDate is a string.\n\tif (typeof inputDate != \"string\") {\n\t\tinputDate = inputDate.toISOString();\n\t}\n\n\tif (isIsoFormattedString(inputDate)) {\n\t\t// If we have confirmed this is in ISO format,\n\t\t// then conform the string so that it parses correctly.\n\t\tconst conformedString = conformDateString(inputDate);\n\t\tlocalDateTime = new Date(conformedString);\n\t} else {\n\t\tlocalDateTime = new Date(inputDate);\n\t}\n\n\tif (!_.isNil(localDateTime) && localDateTime != \"Invalid Date\") {\n\t\tlet zone = localDateTime\n\t\t\t.toLocaleTimeString(\"en-us\", { timeZoneName: \"short\" })\n\t\t\t.split(\" \")[2];\n\t\tif (!zone) {\n\t\t\tvar parts = localDateTime.toTimeString().match(/\\(([^)]+)\\)/i);\n\t\t\tvar timezone = parts[1];\n\t\t\tif (timezone.search(/\\W/) >= 0) {\n\t\t\t\ttimezone = timezone\n\t\t\t\t\t.match(/\\b\\w/g) // Match first letter at each word boundary.\n\t\t\t\t\t.join(\"\")\n\t\t\t\t\t.toUpperCase();\n\t\t\t}\n\t\t\treturn moment(localDateTime).format(\"MM/DD/YYYY, h:mm a \") + timezone;\n\t\t} else return moment(localDateTime).format(\"MM/DD/YYYY, h:mm a \") + zone;\n\t} else return UNSPECIFIED;\n};\n\nexport const formatLocalToUTC = inputDate => {\n\tif (!_.isNil(inputDate)) {\n\t\treturn new Date(inputDate).toUTCString();\n\t} else return null;\n};\n\nconst isIsoFormattedString = inputDate => {\n\tif (_.isNil(inputDate)) {\n\t\treturn false;\n\t}\n\n\t// We need this to be a string\n\tif (typeof inputDate != \"string\") {\n\t\tinputDate = inputDate.toISOString();\n\t}\n\n\t// Date().toJSON() creates a 24 char string, like \"yyyy-mm-ddThh:mm:ss.000Z\".\n\tinputDate = conformDateString(inputDate);\n\n\tconst jsonFormat = new Date(inputDate).toJSON();\n\treturn inputDate == jsonFormat;\n};\n\n/**\n * conformDateString just adds zeros and Z to end of a shorter string,\n * to make the length 24 chars. This could do with some refinement,\n * but works for current scenario where API returns shorter ISO string.\n */\nconst conformDateString = inputString => {\n\tif (inputString.length > 23) {\n\t\treturn inputString;\n\t}\n\n\t// if inputString is only \"yyyy-mm-ddThh:mm:ss\", then add a period\n\t// before padding with zeros.\n\tif (inputString.length === 19) {\n\t\tinputString += \".\";\n\t}\n\n\t// Add zeros until string length = 23.\n\twhile (inputString.length < 23) {\n\t\tinputString += \"0\";\n\t}\n\n\t// Add Z at end.\n\tinputString += \"Z\";\n\treturn inputString;\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPanControl.vue?vue&type=style&index=0&id=39d3ef7e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPanControl.vue?vue&type=style&index=0&id=39d3ef7e&scoped=true&lang=css&\"","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\nimport DSRCmessage from \"@/helpers/DSRCmessage.js\";\n// import moment from \"moment\";\nimport TFMService from \"@/api/service\";\n\nconst MODULE_NAME = \"ess\";\n\nconst MUTATION_TYPES = {\n\tADD_ESS: \"ADD_ESS\",\n\tCLEAR_ESSS: \"CLEAR_ESSS\",\n\tSET_MANAGE_INFO: \"SET_MANAGE_INFO\",\n\tUPDATE_ESS_DATA: \"UPDATE_ESS_DATA\"\n};\n\nconst ACTION_TYPES = {\n\tFETCH_ESS_REPORT: \"GET_ESS_REPORT\",\n\tFETCH_ESS_METADATA: \"FETCH_METADATA\",\n\tFETCH_ESS_MANAGE_INFO: \"FETCH_MANAGE_INFO\",\n\tFETCH_ALL_DEVICES: \"FETCH_ALL_DEVICES\",\n\tFETCH_ESSS: \"FETCH_ESSS\",\n\tFETCH_HISTORICAL_DATA: \"FETCH_DIAG_HIST_DATA\",\n\tFETCH_LATEST_DATA: \"FETCH_DIAG_LATEST_DATA\"\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\n\tstate: {\n\t\tesss: {},\n\t\tdevices: {},\n\t\tmanageInfo: {}\n\t},\n\n\tmutations: {\n\t\t[MUTATION_TYPES.ADD_ESS](state, payload) {\n\t\t\tconst putDevice = r => {\n\t\t\t\t// create defaults\n\t\t\t\tconst device = Object.assign(\n\t\t\t\t\t{\n\t\t\t\t\t\t$deviceTypeId: 3,\n\t\t\t\t\t\tfirmwareVersion: null,\n\t\t\t\t\t\tlocationDescriptionId: null,\n\t\t\t\t\t\tmanageInfo: null\n\t\t\t\t\t},\n\t\t\t\t\tr\n\t\t\t\t);\n\t\t\t\treturn Vue.set(state.devices, device.deviceId, device);\n\t\t\t};\n\t\t\tif (_.isEmpty(payload)) return;\n\t\t\tif (!Array.isArray(payload)) {\n\t\t\t\tpayload = [payload];\n\t\t\t}\n\t\t\tpayload.map(putDevice);\n\t\t},\n\n\t\t[MUTATION_TYPES.SET_MANAGE_INFO](state, { id, data }) {\n\t\t\tVue.set(state.manageInfo, id, data);\n\t\t},\n\n\t\t[MUTATION_TYPES.UPDATE_ESS_DATA](state, { index, data }) {\n\t\t\tVue.set(state.devices, index, Object.assign(state.devices[index], data));\n\t\t},\n\n\t\t[MUTATION_TYPES.CLEAR_ESSS](state) {\n\t\t\tVue.set(state, \"devices\", {});\n\t\t}\n\t},\n\n\tactions: {\n\t\tasync [ACTION_TYPES.FETCH_ESS_MANAGE_INFO](context, { id }) {\n\t\t\tconst data = await TFMService.getESSManageInfo(id);\n\t\t\tcontext.commit(MUTATION_TYPES.SET_MANAGE_INFO, { id, data });\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_ESS_METADATA](context, p) {\n\t\t\tconst index = context.getters.indexByIdentifier(p.id);\n\t\t\tif (index === -1) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tried to fetch ESS metadata for ESS with device ID ${p.id} but it didn't exist in the state (yet?).`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst data = {};\n\t\t\tdata[ACTION_TYPES.FETCH_ESS_METADATA + \"_start\"] = _.now();\n\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_ESS_DATA, { index, data });\n\n\t\t\treturn await Promise.all([\n\t\t\t\tcontext\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_ESS_MANAGE_INFO, p)\n\t\t\t\t\t.catch(err => console.warn(\"Found bad manage info for ESS\", p, err))\n\t\t\t]);\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_ESSS](context) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tAPI.getJson(API.ENDPOINTS.GET_ESS_BY_USER)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tif (json) {\n\t\t\t\t\t\t\tif (json.length === 1 && json[0].retCode == -1) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\"FETCH_ESSs Error: \" +\n\t\t\t\t\t\t\t\t\t\t(json[0].retMsg || \"Invalid server response.\")\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.CLEAR_ESSS);\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.ADD_ESS, json);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_ALL_DEVICES](context) {\n\t\t\treturn context.dispatch(ACTION_TYPES.FETCH_ESSS);\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_HISTORICAL_DATA](\n\t\t\tcontext,\n\t\t\t{ paramsObj, options }\n\t\t) {\n\t\t\treturn await API.fetchJson(\n\t\t\t\tAPI.ENDPOINTS.GET_ESS_REPORT + API.buildQueryString(paramsObj),\n\t\t\t\toptions,\n\t\t\t\terr => {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_LATEST_DATA](context, { deviceId, options }) {\n\t\t\treturn await API.fetchJson(\n\t\t\t\tAPI.ENDPOINTS.GET_LATEST_ESS_READINGS + `?deviceId=${deviceId}`,\n\t\t\t\t{ options },\n\t\t\t\terr => {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t},\n\tgetters: {\n\t\tallDevices(state) {\n\t\t\treturn state.devices;\n\t\t},\n\n\t\tdevicePosition() {\n\t\t\treturn device => {\n\t\t\t\tif (device === null || device === void 0) return null;\n\t\t\t\tif (!(\"latitude\" in device) || !(\"longitude\" in device)) return null;\n\t\t\t\treturn [device.latitude, device.longitude];\n\t\t\t};\n\t\t},\n\t\tDSRCmsgID() {\n\t\t\treturn key => {\n\t\t\t\tconst m = DSRCmessage.get(key);\n\t\t\t\treturn m && m.id;\n\t\t\t};\n\t\t},\n\n\t\tindexByIdentifier(state) {\n\t\t\treturn identifier => (state.devices[identifier] ? identifier : -1);\n\t\t},\n\n\t\tbyIdentifier(state) {\n\t\t\treturn identifier => {\n\t\t\t\treturn state.devices[identifier];\n\t\t\t};\n\t\t},\n\n\t\tisManagableByID(state, getters) {\n\t\t\treturn id => {\n\t\t\t\tconst device = getters.byIdentifier(id);\n\t\t\t\tif (device && device.accessLevel)\n\t\t\t\t\treturn device.accessLevel.toLowerCase() === \"edit\";\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tisVerifiableByID(state, getters) {\n\t\t\treturn id => {\n\t\t\t\tconst device = getters.byIdentifier(id);\n\t\t\t\tif (!device) return false;\n\t\t\t\treturn (\n\t\t\t\t\tgetters.isManagableByID(id) && /^active$/i.test(device.deviceStatus)\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\n\t\tshouldHaveType(state, getters) {\n\t\t\treturn ({ essId, msgType }) => {\n\t\t\t\tvar shouldHaveType = null;\n\t\t\t\tconst ess = getters.byIdentifier(essId);\n\t\t\t\tif (!(ess && ess.dsrcFlags)) return false;\n\t\t\t\tswitch (msgType) {\n\t\t\t\t\tcase \"SSM\":\n\t\t\t\t\t\tshouldHaveType = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn shouldHaveType;\n\t\t\t};\n\t\t},\n\n\t\tmanageInfoByID(state) {\n\t\t\treturn id => state.manageInfo[id];\n\t\t}\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toggle\",class:[{ 'active': _vm.model }, _vm.size],on:{\"click\":_vm.toggleModel}},[_c('div',{staticClass:\"toggle__switch\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.toggle(:class=\"[{ 'active': model }, size]\" @click=\"toggleModel\"): .toggle__switch\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToggleSwitch.vue?vue&type=template&id=2ae7222b&scoped=true&lang=pug&\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ToggleSwitch.vue?vue&type=style&index=0&id=2ae7222b&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ae7222b\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nconst GLOBAL_EVENT_PREFIX = \"g:\";\n\nexport const EventBus = new Vue({\n\tmethods: {\n\t\tpushGlobalEvent(name, e) {\n\t\t\t// console.log(\"GLOBAL EVENT\", name, e);\n\t\t\tthis.$emit(GLOBAL_EVENT_PREFIX + name, e);\n\t\t},\n\t\tonGlobalEvent(name, e) {\n\t\t\tthis.$on(GLOBAL_EVENT_PREFIX + name, e);\n\t\t},\n\t\tonSingleGlobalEvent(name, e) {\n\t\t\tthis.$once(GLOBAL_EVENT_PREFIX + name, e);\n\t\t},\n\n\t\tonGlobalEventWithTimeout(name, e, fun, refobj, timeout = 50000) {\n\t\t\tthis.$on(GLOBAL_EVENT_PREFIX + name, e);\n\t\t\tthis.fun = fun;\n\t\t\tthis.refobj = refobj;\n\t\t\tvar that = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tthat.$off(GLOBAL_EVENT_PREFIX + name, e);\n\t\t\t\tthat.fun(that.refobj);\n\t\t\t}, timeout);\n\t\t}\n\t\t// TODO: setup a way to remove global event listeners?\n\t}\n});\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\n\nconst MODULE_NAME = \"vu_approach_location\";\n\nconst MUTATION_TYPES = {\n\tUPDATE_VU_APPROACH_LOCATION: \"UPDATE_VU_APPROACH_LOCATION\"\n};\n\nconst ACTION_TYPES = {\n\tLOAD_VU_APPROACH_LOCATION: \"LOAD_VU_APPROACH_LOCATION\"\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\tstate: {\n\t\tvuApproachLocations: {}\n\t},\n\tmutations: {\n\t\t[MUTATION_TYPES.UPDATE_VU_APPROACH_LOCATION](state, payload) {\n\t\t\tif (!(payload && _.isObject(payload))) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_VU_APPROACH_LOCATION}: Invalid or missing payload.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst data =\n\t\t\t\t(!_.isUndefined(payload.vuApproachLocation) &&\n\t\t\t\t\tpayload.vuApproachLocation) ||\n\t\t\t\t(!_.isUndefined(payload.data) && payload.data) ||\n\t\t\t\tpayload;\n\t\t\tconst vuApproachLocationId =\n\t\t\t\tdata.vuApproachLocationid ||\n\t\t\t\tdata.vuApproachLocationId ||\n\t\t\t\tdata.VUApproachLocationId ||\n\t\t\t\tpayload.vuApproachLocationId ||\n\t\t\t\tpayload.VUApproachLocationId ||\n\t\t\t\tpayload.id;\n\t\t\tif (!vuApproachLocationId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_VU_APPROACH_LOCATION}: Invalid or missing vuApproachLocation id.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tVue.set(state.vuApproachLocations, vuApproachLocationId, data);\n\t\t}\n\t},\n\tactions: {\n\t\t[ACTION_TYPES.LOAD_VU_APPROACH_LOCATION](context, payload) {\n\t\t\tconst vuApproachLocationId = parseInt(\n\t\t\t\t_.isObject(payload)\n\t\t\t\t\t? payload.vuApproachLocationid ||\n\t\t\t\t\t\t\tpayload.vuApproachLocationId ||\n\t\t\t\t\t\t\tpayload.VUApproachLocationId ||\n\t\t\t\t\t\t\tpayload.id\n\t\t\t\t\t: payload,\n\t\t\t\t10\n\t\t\t);\n\t\t\tif (!vuApproachLocationId && _.isObject(payload)) {\n\t\t\t\t// Try loading\n\t\t\t}\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (!vuApproachLocationId) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.LOAD_VU_APPROACH_LOCATION}: Invalid or missing vuApproachLocation id.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (_.isUndefined(context.getters.byIdentifier(vuApproachLocationId))) {\n\t\t\t\t\t// Hit API\n\t\t\t\t\treturn resolve(\n\t\t\t\t\t\tAPI.getWithParamsJson(\n\t\t\t\t\t\t\tAPI.ENDPOINTS\n\t\t\t\t\t\t\t\t.SELECT_VU_APPROACH_LOCATION_BY_VU_APPROACH_LOCATION_ID,\n\t\t\t\t\t\t\t{ vuApproachLocationId },\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\te => {\n\t\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn resolve(context.getters.byIdentifier(vuApproachLocationId));\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (_.isEmpty(result)) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}.${ACTION_TYPES.LOAD_VU_APPROACH_LOCATION}: Falsy server response for vuApproachLocationId \"${vuApproachLocationId}\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn { vuApproachLocationId, vuApproachLocation: null };\n\t\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (_.isArray(result)) result = result[0];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontext.commit(\n\t\t\t\t\t\t\t`${MUTATION_TYPES.UPDATE_VU_APPROACH_LOCATION}`,\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`${MODULE_NAME}.${ACTION_TYPES.LOAD_VU_APPROACH_LOCATION}`,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tvuApproachLocationId,\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn context.getters.byIdentifier(vuApproachLocationId);\n\t\t\t\t});\n\t\t}\n\t},\n\tgetters: {\n\t\tall(state) {\n\t\t\treturn state.vuApproachLocations;\n\t\t},\n\t\tbyIdentifier(state) {\n\t\t\treturn vuApproachLocationId =>\n\t\t\t\tstate.vuApproachLocations[vuApproachLocationId];\n\t\t}\n\t}\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadcrumbView.vue?vue&type=style&index=0&id=124ca704&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadcrumbView.vue?vue&type=style&index=0&id=124ca704&lang=stylus&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('page',{staticClass:\"page--map-page\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\npage.page--map-page: slot\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapView.vue?vue&type=template&id=4437e9b9&scoped=true&lang=pug&\"\nimport script from \"./MapView.vue?vue&type=script&lang=js&\"\nexport * from \"./MapView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4437e9b9\",\n null\n \n)\n\nexport default component.exports","import StoreModule from \"./store_module\";\nimport TFMService from \"@/api/service\";\nimport _ from \"lodash\";\nimport Vue from \"vue\";\nimport Features from \"@/common/feature-lib\";\n\nconst name = \"total_station\";\n\nconst mutations = {\n\tCLEAR_FILTER(state) {\n\t\tstate.filter = \"\";\n\t},\n\n\tSET_FILTER(state, filter) {\n\t\tstate.filter = filter;\n\t},\n\n\tSET_EMPTY_TS_FILTER(state, setTSEmpty) {\n\t\tstate.setTSEmpty = setTSEmpty;\n\t},\n\n\tSET_USERCLIENTACCESS(state, data) {\n\t\tstate.userClientAccess = data;\n\t},\n\n\tSET_SELECTED_DEVICE_TYPE_IDS(state, deviceTypeIds) {\n\t\tif (_.isArray(deviceTypeIds)) {\n\t\t\tstate.selectedDeviceTypeIds = deviceTypeIds;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.selectedDeviceTypeIds = [deviceTypeIds];\n\t},\n\n\tSET_EXCLUDED_DEVICE_TYPE_IDS(state, deviceTypeIds) {\n\t\tif (_.isArray(deviceTypeIds)) {\n\t\t\tstate.unselectedDeviceTypeIds = deviceTypeIds;\n\t\t\treturn;\n\t\t}\n\t\tstate.unselectedDeviceTypeIds = [deviceTypeIds];\n\t},\n\n\tSET_SELECTED_DEVICE_STATUS_IDS(state, deviceStatusIds) {\n\t\tif (_.isArray(deviceStatusIds)) {\n\t\t\tstate.selectedDeviceStatusIds = deviceStatusIds;\n\t\t\treturn;\n\t\t}\n\t\tstate.selectedDeviceStatusIds = [deviceStatusIds];\n\t},\n\tSET_SELECTED_DEVICE_OPERATOR_ID(state, Id) {\n\t\tif (_.isArray(Id)) {\n\t\t\tstate.selectedDeviceOperatorId = Id;\n\t\t\treturn;\n\t\t}\n\t\tstate.selectedDeviceOperatorId = Id;\n\t},\n\tSET_SELECTED_DEVICE_PROJECT_ID(state, Id) {\n\t\tif (_.isArray(Id)) {\n\t\t\tstate.selectedDeviceProjectId = Id;\n\t\t\treturn;\n\t\t}\n\t\tstate.selectedDeviceProjectId = Id;\n\t},\n\tSET_SELECTED_DEVICE_OWNER_ID(state, Id) {\n\t\tif (_.isArray(Id)) {\n\t\t\tstate.selectedDeviceOwnerId = Id;\n\t\t\treturn;\n\t\t}\n\t\tstate.selectedDeviceOwnerId = Id;\n\t},\n\n\tADD(state, { id, data }) {\n\t\tVue.set(state.entries, id, data);\n\t},\n\n\tADD_SET(state, payload) {\n\t\t_.each(payload, (v, k) => {\n\t\t\tVue.set(state.entries, k, v);\n\t\t});\n\t},\n\n\tSET_MANAGE_INFO(state, { id, data }) {\n\t\tVue.set(state.manageInfo, id, data);\n\t},\n\n\tDESELECT(state) {\n\t\tstate.selected = null;\n\t},\n\n\tSELECT(state, id) {\n\t\tif (id == state.selected) id = null;\n\t\tstate.selected = id;\n\t},\n\n\tCLEAR(state) {\n\t\tstate.entries = {};\n\t},\n\n\tDELETE(state, { id }) {\n\t\tVue.delete(state.entries, id);\n\t},\n\n\tUPDATE(state, { id, data }) {\n\t\tVue.set(state.entries, id, Object.assign(state.entries[id], data));\n\t}\n};\n\nconst actions = {\n\tasync FETCH_ALL(context) {\n\t\tconst ts = await TFMService.getTotalStations();\n\t\tcontext.commit(\"ADD_SET\", ts);\n\t\treturn ts;\n\t},\n\tasync FETCH_USERCLIENTACCESS(context) {\n\t\tconst data = await TFMService.fetchClientsByUser();\n\t\tcontext.commit(\"SET_USERCLIENTACCESS\", data);\n\t},\n\tasync FETCH_TOTAL_STATION_MANAGE_INFO(context, { id }) {\n\t\tconst data = await TFMService.getTotalStationManageInfo(id);\n\t\tcontext.commit(\"SET_MANAGE_INFO\", { id, data });\n\t}\n};\n\nconst getters = {\n\tselected: state =>\n\t\tstate.selected && state.entries[state.selected]\n\t\t\t? state.entries[state.selected]\n\t\t\t: null,\n\n\tallEntries: state => state.entries,\n\n\tfilteredEntries: (state, getters, globalState, globalGetters) => {\n\t\t// Filter by text search\n\t\tlet filteredTotalStations = _.filter(\n\t\t\tstate.entries,\n\t\t\tts =>\n\t\t\t\t(ts.totalStationId + \" \" + ts.description + \" \" + ts.locationDesc)\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.indexOf(state.filter.toLowerCase()) > -1\n\t\t);\n\t\tconst isProjectIdSelected = (state, ts) => {\n\t\t\treturn (\n\t\t\t\t_.filter(ts.devices, device => {\n\t\t\t\t\treturn device.projectId == state.selectedDeviceProjectId;\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t};\n\t\tconst isOperatorSelected = (state, ts) => {\n\t\t\treturn (\n\t\t\t\t_.filter(ts.devices, device => {\n\t\t\t\t\treturn device.operatorId == state.selectedDeviceOperatorId;\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t};\n\t\tconst isOwnerSelected = (state, ts) => {\n\t\t\treturn (\n\t\t\t\t_.filter(ts.devices, device => {\n\t\t\t\t\treturn device.ownerId == state.selectedDeviceOwnerId;\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t};\n\n\t\t// Filter by operator id\n\t\tif (state.selectedDeviceOperatorId != 0) {\n\t\t\tfilteredTotalStations = _.filter(\n\t\t\t\tfilteredTotalStations,\n\t\t\t\tts =>\n\t\t\t\t\tts.totalStationOperatorId == state.selectedDeviceOperatorId ||\n\t\t\t\t\tisOperatorSelected(state, ts)\n\t\t\t);\n\t\t}\n\t\t// Filter by owner id\n\t\tif (state.selectedDeviceOwnerId != 0) {\n\t\t\tfilteredTotalStations = _.filter(\n\t\t\t\tfilteredTotalStations,\n\t\t\t\tts =>\n\t\t\t\t\tts.totalStationOwnerId == state.selectedDeviceOwnerId ||\n\t\t\t\t\tisOwnerSelected(state, ts)\n\t\t\t);\n\t\t}\n\n\t\t// This is the end of the original filtering if TOTALSTATION feature\n\t\t// is not available.\n\t\tif (!globalGetters.currentUserHasFeature(Features.FEATURE_TOTALSTATION)) {\n\t\t\treturn filteredTotalStations;\n\t\t}\n\n\t\tlet selectedDevices;\n\t\tconst getFilteredDevicesForTotalStation = (state, totalStation) => {\n\t\t\tselectedDevices = _.filter(totalStation.devices, device => {\n\t\t\t\treturn isDeviceSelected(state, device);\n\t\t\t});\n\t\t\tif (selectedDevices.length > 0) return true;\n\t\t\treturn false;\n\t\t};\n\n\t\tconst isUnSelectedDeviceType = (state, totalStation) => {\n\t\t\t// Filter TS with excluded heckedc\n\t\t\tlet arr = _.filter(totalStation.devices, device => {\n\t\t\t\treturn state.unselectedDeviceTypeIds.indexOf(device.deviceTypeId) > -1;\n\t\t\t});\n\t\t\tif (arr.length > 0) {\n\t\t\t\treturn false; //Total Station consists of exluded device type\n\t\t\t} else {\n\t\t\t\t//Filter out Required device type\n\t\t\t\tif (state.selectedDeviceTypeIds.length > 0) {\n\t\t\t\t\t_.forEach(state.selectedDeviceTypeIds, function(e) {\n\t\t\t\t\t\tarr = _.filter(totalStation.devices, device => {\n\t\t\t\t\t\t\tif (device.deviceTypeId == e)\n\t\t\t\t\t\t\t\treturn isDeviceSelected(state, device);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (arr.length == 0) return false;\n\t\t\t\t\t});\n\t\t\t\t\treturn arr.length > 0 ? true : false;\n\t\t\t\t} else return true;\n\t\t\t}\n\t\t};\n\n\t\tconst isDeviceSelected = (state, device) => {\n\t\t\tconst isSelectedDeviceStatus =\n\t\t\t\tstate.selectedDeviceStatusIds.indexOf(device.deviceStatusId) > -1;\n\t\t\treturn isSelectedDeviceStatus;\n\t\t};\n\t\t// Filter further by device type & device status\n\t\tfilteredTotalStations = _.filter(filteredTotalStations, totalStation => {\n\t\t\tif (\n\t\t\t\tstate.setTSEmpty &&\n\t\t\t\t(!totalStation.devices || totalStation.deviceCount === 0)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (getFilteredDevicesForTotalStation(state, totalStation)) {\n\t\t\t\treturn isUnSelectedDeviceType(state, totalStation);\n\t\t\t} else return false;\n\t\t});\n\n\t\t// Filter by project id if inserted by user\n\t\tif (state.selectedDeviceProjectId && state.selectedDeviceProjectId.length) {\n\t\t\tfilteredTotalStations = _.filter(filteredTotalStations, totalStation => {\n\t\t\t\treturn isProjectIdSelected(state, totalStation);\n\t\t\t});\n\t\t}\n\n\t\treturn filteredTotalStations;\n\t},\n\n\tfilter: state => state.filter,\n\tsetTSEmpty: state => state.setTSEmpty,\n\n\tdevicesById: (state, getters) => id => {\n\t\tconst entry = getters.byIdentifier(id);\n\t\tif (entry && \"devices\" in entry) return entry.devices;\n\t\treturn null;\n\t},\n\n\tnumDevicesById: (state, getters) => id => {\n\t\tconst devices = getters.devicesById(id);\n\t\tif (!devices) return 0;\n\t\treturn Object.keys(devices).length;\n\t},\n\n\tnumFunctionalDevicesById: (state, getters) => id => {\n\t\tconst devices = getters.devicesById(id);\n\t\tif (!devices) return 0;\n\t\treturn _.countBy(devices, \"isDeployed\").true || 0;\n\t},\n\n\tisAllFunctionalById: (state, getters) => id => {\n\t\treturn getters.numFunctionalDevicesById(id) == getters.numDevicesById(id);\n\t},\n\n\t// functionalIcon: (state, getters) => id => {\n\t// \tconst entry = getters.byIdentifier(id);\n\t// \tif (entry && \"devices\" in entry) return entry.functionalIcon;\n\t// \treturn null;\n\t// },\n\n\tbyIdentifier: state => id => state.entries[id],\n\n\tselectedDeviceTypeIds: state => state.selectedDeviceTypeIds,\n\tunselectedDeviceTypeIds: state => state.unselectedDeviceTypeIds,\n\n\tselectedDeviceStatusIds: state => state.selectedDeviceStatusIds,\n\tselectedDeviceOwnerId: state => state.selectedDeviceOwnerId,\n\tselectedDeviceOperatorId: state => state.selectedDeviceOperatorId,\n\tselectedDeviceProjectId: state => state.selectedDeviceProjectId,\n\n\tmanageInfoByID: state => id => state.manageInfo[id],\n\n\tuserClientAccess: state => state.userClientAccess\n};\n\nconst initialState = {\n\tentries: {},\n\tfilter: \"\",\n\tsetTSEmpty: false,\n\tselected: null,\n\tcool: \"yes\",\n\tselectedDeviceTypeIds: [],\n\tunselectedDeviceTypeIds: [],\n\tselectedDeviceStatusIds: [],\n\tselectedDeviceOperatorId: [],\n\tselectedDeviceProjectId: [],\n\tselectedDeviceOwnerId: [],\n\tuserClientAccess: [],\n\tmanageInfo: {}\n};\n\nconst totalStationModule = new StoreModule(\n\tname,\n\tmutations,\n\tactions,\n\tgetters,\n\tinitialState\n);\n\nexport default totalStationModule;\n","var render, staticRenderFns\nimport script from \"./BigMap.vue?vue&type=script&lang=js&\"\nexport * from \"./BigMap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BigMap.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BigMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BigMap.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=style&index=0&id=7dbe104b&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=style&index=0&id=7dbe104b&lang=stylus&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',_vm._b({staticClass:\"page-component\"},'main',_vm.$props,false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nmain.page-component(v-bind=\"$props\"): slot\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Page.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Page.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Page.vue?vue&type=template&id=7f60d28c&scoped=true&lang=pug&\"\nimport script from \"./Page.vue?vue&type=script&lang=js&\"\nexport * from \"./Page.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Page.vue?vue&type=style&index=0&id=7f60d28c&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f60d28c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteHeader.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteHeader.vue?vue&type=style&index=0&lang=stylus&\"","export default {\n\tSET_BREADCRUMBS_OPENED: \"SET_BREADCRUMBS_OPENED\",\n\tSET_ROLES: \"SET_ROLES\",\n\tSET_FEATURES: \"SET_FEATURES\",\n\tSET_LABELMAPPINGS: \"SET_LABELMAPPINGS\",\n\tSET_PROFILE_ATTRIBUTES: \"SET_PROFILE_ATTRIBUTES\",\n\tSET_MQTT_CREDENTIALS: \"SET_MQTT_CREDENTIALS\",\n\tMQTT_SUBSCRIBE: \"MQTT_SUBSCRIBE\",\n\tMQTT_UNSUBSCRIBE: \"MQTT_UNSUBSCRIBE\",\n\tADD_TOAST: \"ADD_TOAST\",\n\tDISMISS_TOAST: \"DISMISS_TOAST\",\n\tSET_USERNAME: \"SET_USERNAME\",\n\tSET_MAP_ZOOM: \"SET_MAP_ZOOM\",\n\tSET_MAP_CENTER: \"SET_MAP_CENTER\",\n\tSET_TILE_PROVIDER_VISIBILITY: \"SET_TILE_PROVIDER_VISIBILITY\",\n\tSET_PRIMARY_CLIENT: \"SET_PRIMARY_CLIENT\"\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=style&index=0&id=2ae7222b&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=style&index=0&id=2ae7222b&lang=stylus&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Page.vue?vue&type=style&index=0&id=7f60d28c&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Page.vue?vue&type=style&index=0&id=7f60d28c&lang=stylus&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"window-manager\"},[_vm._t(\"dock\",_vm._l((_vm.minimizedWindows),function(win,index){return _c('button',{key:'min__' + index,staticClass:\"minimized-window\",attrs:{\"title\":'Restore ' + win.title + ' Window'},on:{\"click\":function($event){return _vm.toggleMinimized(index, $event)}}},[_vm._v(_vm._s(win.title)),_c('i',{staticClass:\"fa fa-window-restore\"})])})),_vm._t(\"default\",_vm._l((_vm.openWindows),function(win,index){return _c('window',_vm._b({key:index,on:{\"minimize\":function($event){return _vm.toggleMinimized(index, $event)},\"maximize\":function($event){return _vm.toggleMaximized(index, $event)},\"move\":function($event){return _vm.moveWindow(index, $event)},\"resize\":function($event){return _vm.resizeWindow(index, $event)},\"request:active\":function($event){return _vm.activateWindow(index, $event)},\"close\":function($event){return _vm.closeWindow(index, $event)}}},'window',win,false))}))],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n.window-manager\n\tslot(name=\"dock\")\n\t\tbutton.minimized-window(v-for=\"win, index in minimizedWindows\" :key=\"'min__' + index\"\n\t\t\t@click=\"toggleMinimized(index, $event)\"\n\t\t\t:title=\"'Restore ' + win.title + ' Window'\"\n\t\t\t)\n\t\t\t| {{ win.title }}\n\t\t\ti.fa.fa-window-restore\n\tslot\n\t\twindow(v-for=\"win, index in openWindows\" v-bind=\"win\" :key=\"index\"\n\t\t\t@minimize=\"toggleMinimized(index, $event)\"\n\t\t\t@maximize=\"toggleMaximized(index, $event)\"\n\t\t\t@move=\"moveWindow(index, $event)\"\n\t\t\t@resize=\"resizeWindow(index, $event)\"\n\t\t\t@request:active=\"activateWindow(index, $event)\"\n\t\t\t@close=\"closeWindow(index, $event)\"\n\t\t\t)\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WindowManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WindowManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WindowManager.vue?vue&type=template&id=2b41605a&lang=pug&\"\nimport script from \"./WindowManager.vue?vue&type=script&lang=js&\"\nexport * from \"./WindowManager.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WindowManager.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InformationTooltip.vue?vue&type=style&index=0&id=6f3e5bd0&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InformationTooltip.vue?vue&type=style&index=0&id=6f3e5bd0&lang=stylus&scoped=true&\"","import _ from \"lodash\";\nimport Api from \"@/api\";\nimport DeviceManagerStore from \"@/store/modules/device-manager\";\nimport { EventBus } from \"@/event-bus\";\nimport MutationTypes from \"@/store/mutation-types\";\nimport SpatVerificationData from \"@/models/SpatVerificationData\";\nimport StoreModule from \"./store_module\";\nimport TFMService from \"@/api/service\";\n\n// The name of this store module.\nconst name = \"spat-verification\";\n\nconst startDateTime = new Date();\nstartDateTime.setMilliseconds(0);\n\n// MQTT subscription names used in subscribing/unsubcribing from MQTT.\nconst MQTTSUBSCRIPTIONTSC = \"SPAT_VERIFICATION_TSC\";\nconst MQTTSUBSCRIPTIONRSU = \"SPAT_VERIFICATION_RSU\";\n\n// Used to stop more than one EventBus subscription for receiving MQTT messages.\nlet subscribedOnce = false;\n\n// Used to hold a timer to unsubscribe from MQTT.\nlet stopSourceTimer = 0;\n\n// Used to hold a timer to unset data received property.\nlet dataReceivedTimerTsc = 0;\nlet dataReceivedTimerRsu = 0;\n\n/**\n * The time span in minutes that the RSU for the\n * selected intersection was last heard.\n */\nconst timeSpanMinutesRsuLastHeard = 1;\n\n/**\n * Helper function to set & unset data received.\n * @param commit (object)\n */\nconst dataReceived = function(commit, deviceType) {\n\tswitch (deviceType) {\n\t\tcase \"TSC\":\n\t\t\tif (dataReceivedTimerTsc === 0) {\n\t\t\t\tcommit(\"SET_DATA_RECEIVED\", { deviceType: \"TSC\", value: true });\n\t\t\t\tdataReceivedTimerTsc = window.setTimeout(() => {\n\t\t\t\t\tcommit(\"SET_DATA_RECEIVED\", { deviceType: \"TSC\", value: false });\n\t\t\t\t\tdataReceivedTimerTsc = 0;\n\t\t\t\t}, 25);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"RSU\":\n\t\t\tif (dataReceivedTimerRsu === 0) {\n\t\t\t\tcommit(\"SET_DATA_RECEIVED\", { deviceType: \"RSU\", value: true });\n\t\t\t\tdataReceivedTimerRsu = window.setTimeout(() => {\n\t\t\t\t\tcommit(\"SET_DATA_RECEIVED\", { deviceType: \"RSU\", value: false });\n\t\t\t\t\tdataReceivedTimerRsu = 0;\n\t\t\t\t}, 25);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\nconst actions = {\n\t/**\n\t * Handles inserting new SpatVerificationData object.\n\t * @param payload (SpatVerificationData)\n\t *\n\t * @returns void\n\t */\n\tADD_DATA_ROW({ state, commit }, payload) {\n\t\tif (state.transport.waitingForData === true) {\n\t\t\tcommit(\"SET_WAITING_FOR_DATA\", false);\n\t\t}\n\t\tcommit(\"ADD_DATA_ROW\", payload);\n\t\tif (payload.windowId === \"rsu\") {\n\t\t\tcommit(\"SET_MAX_DISPLAY_FRAME_NUMBER\", payload.data.frameNumber);\n\t\t}\n\t},\n\n\t/**\n\t * Retrieves list of sources that have received SPaTs from\n\t * given txRsu device.\n\t * @param txRsu (object)\n\t */\n\tasync FETCH_SOURCES({ rootGetters, commit }, { txRsu }) {\n\t\tconsole.log(\"FETCH_SOURCES for txRSU: \", txRsu);\n\n\t\tlet radioNeighbors = await Api.getWithParamsJson(\n\t\t\tApi.ENDPOINTS.GET_RSU_RADIO_NEIGHBORS_BY_USER,\n\t\t\t{\n\t\t\t\trsuId: txRsu.deviceId,\n\t\t\t\ttimeSpanMinutes: timeSpanMinutesRsuLastHeard\n\t\t\t}\n\t\t).catch(() => {\n\t\t\treturn Promise.reject(\n\t\t\t\t\"There was a network problem while searching for verification sources.\"\n\t\t\t);\n\t\t});\n\n\t\tif (\n\t\t\t!radioNeighbors ||\n\t\t\t!radioNeighbors[\"rows\"] ||\n\t\t\t!radioNeighbors[\"rows\"].length > 0\n\t\t) {\n\t\t\treturn Promise.reject(\"No verification sources were found.\");\n\t\t}\n\n\t\t// List of all user's devices.\n\t\tconst rsuDevices = rootGetters[\n\t\t\tDeviceManagerStore.MODULE_NAME + \"/devicesOfType\"\n\t\t](txRsu.$deviceTypeId);\n\n\t\t// Filter out devices that user does not have in their device list, to\n\t\t// give available sources.\n\t\tconst availableSources = radioNeighbors[\"rows\"].filter(\n\t\t\trow => rsuDevices[row.deviceId]\n\t\t);\n\t\tconsole.log(\"available sources\", availableSources);\n\n\t\tconst availableVerification = [];\n\t\tlet promises = [];\n\t\t_.each(availableSources, source => {\n\t\t\t// TODO: This is a temporary fix to add ip address for each available source.\n\t\t\t// It only needs to be a promise because of having to reach out for IP address\n\t\t\t// separately for each available source. This will do it in parallel, but still\n\t\t\t// less than ideal.\n\t\t\t// const promise = new Promise(async resolve => {\n\t\t\tconst device = rsuDevices[source.deviceId];\n\t\t\tlet promise = TFMService.getIpAddressByDeviceId(device.deviceId).then(\n\t\t\t\tipAddressInfo => {\n\t\t\t\t\tif (device != undefined) {\n\t\t\t\t\t\tavailableVerification.push({\n\t\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\t\"#\" +\n\t\t\t\t\t\t\t\tdevice.deviceId.toString() +\n\t\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\t\tdevice.locationDescription,\n\t\t\t\t\t\t\tdeviceId: device.deviceId,\n\t\t\t\t\t\t\tipAddress: ipAddressInfo ? ipAddressInfo[\"ipAddress\"] : \"\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t// });\n\t\t\tpromises.push(promise);\n\t\t});\n\t\tawait Promise.all(promises).catch(() => {\n\t\t\treturn Promise.reject(\"Could not determine verification sources.\");\n\t\t});\n\n\t\tif (availableVerification.length === 0) {\n\t\t\treturn Promise.reject(\"No verification sources were found.\");\n\t\t}\n\t\tcommit(\"SET_AVAILABLE_SOURCES\", { availableVerification });\n\t},\n\n\t/**\n\t * Handles subscription to MQTT and EventBus and sends instruction\n\t * for parsers to push data onto MQTT topics.\n\t * @param txTsc (object)\n\t * @param txRsu (object)\n\t * @param rxRsu (object)\n\t *\n\t * @returns Promise\n\t */\n\tasync START_SOURCE(\n\t\t{ state, commit, dispatch, rootGetters },\n\t\t{ txTsc, txRsu, rxRsu }\n\t) {\n\t\tconst allRsuDevices = rootGetters[\n\t\t\tDeviceManagerStore.MODULE_NAME + \"/devicesOfType\"\n\t\t](txRsu.$deviceTypeId);\n\n\t\tconst tscDevice = txTsc;\n\t\tconst rsuDevice = allRsuDevices[rxRsu.deviceId];\n\n\t\tif (!state.sources.sourcesLoaded) {\n\t\t\treturn Promise.reject(\"Sources are not loaded.\");\n\t\t}\n\t\tcommit(\"SET_WAITING_FOR_DATA\", true);\n\t\tconsole.log(\"START_SOURCE\", tscDevice, rsuDevice);\n\n\t\tif (stopSourceTimer != 0) {\n\t\t\twindow.clearTimeout(stopSourceTimer);\n\t\t\tstopSourceTimer = 0;\n\t\t}\n\n\t\t// Publish query to MQTT for TSC data\n\t\tconst post1 = Api.postJson(\n\t\t\tApi.ENDPOINTS.MQTT_PUBLISH,\n\t\t\t{\n\t\t\t\tTopic: \"v1/spat/signalcontroller/listen/query\",\n\t\t\t\tPayload: JSON.stringify({ ControllerId: tscDevice.deviceId }),\n\t\t\t\tQualityOfService: 1,\n\t\t\t\tRetain: false\n\t\t\t},\n\t\t\t{},\n\t\t\t() => {\n\t\t\t\treturn Promise.reject(\"Failed to make TSC data connection.\");\n\t\t\t}\n\t\t);\n\n\t\t// Publish query to MQTT for RSU data\n\t\t// TODO: FIGURE OUT HOW TO GET REGION ID CORRECTLY BEFORE RELEASE TO PRODUCTION\n\t\tconst rsuIntersectionId = txRsu[\"rsuIntersectionId\"];\n\t\tconst rsuRegionId = -1;\n\t\tconst post2 = Api.postJson(\n\t\t\tApi.ENDPOINTS.MQTT_PUBLISH,\n\t\t\t{\n\t\t\t\tTopic: \"v1/spat/j2735/listen/query\",\n\t\t\t\tPayload: JSON.stringify({\n\t\t\t\t\tintersectionId: rsuIntersectionId,\n\t\t\t\t\tregionId: rsuRegionId\n\t\t\t\t}),\n\t\t\t\tQualityOfService: 1,\n\t\t\t\tRetain: false\n\t\t\t},\n\t\t\t{},\n\t\t\t() => {\n\t\t\t\treturn Promise.reject(\"Failed to make RSU data connection.\");\n\t\t\t}\n\t\t);\n\n\t\tawait Promise.all([post1, post2]).catch(content => {\n\t\t\tcommit(\"SET_WAITING_FOR_DATA\", false);\n\t\t\tcommit(\"SET_IS_PLAYING\", false);\n\t\t\treturn Promise.reject(content);\n\t\t});\n\n\t\tconsole.log(\"IP Address\", state.sources.rxIpAddress);\n\n\t\tconst tscTopic = `v1/spat/signalcontroller/listen/${tscDevice.deviceId}/data`;\n\n\t\tconst rsuTopic = `v1/spat/j2735/listen/${rsuIntersectionId}_${rsuRegionId}/data`;\n\n\t\tcommit(\n\t\t\tMutationTypes.MQTT_SUBSCRIBE,\n\t\t\t{\n\t\t\t\tname: MQTTSUBSCRIPTIONTSC,\n\t\t\t\tqos: 0,\n\t\t\t\tsubscription: tscTopic\n\t\t\t},\n\t\t\t{ root: true }\n\t\t);\n\n\t\tcommit(\n\t\t\tMutationTypes.MQTT_SUBSCRIBE,\n\t\t\t{\n\t\t\t\tname: MQTTSUBSCRIPTIONRSU,\n\t\t\t\tqos: 0,\n\t\t\t\tsubscription: rsuTopic\n\t\t\t},\n\t\t\t{ root: true }\n\t\t);\n\n\t\t// We only need to add this event callback once\n\t\tif (subscribedOnce === false) {\n\t\t\tEventBus.onGlobalEvent(\"mqtt-client:messageArrived\", message => {\n\t\t\t\tif (message[\"message\"][\"topic\"] === tscTopic) {\n\t\t\t\t\tnew Promise(() => {\n\t\t\t\t\t\tif (message[\"message\"] && message[\"message\"][\"payloadString\"]) {\n\t\t\t\t\t\t\tconst dataRow = SpatVerificationData.parseTscMessage(message);\n\t\t\t\t\t\t\tdispatch(\"ADD_DATA_ROW\", {\n\t\t\t\t\t\t\t\twindowId: \"tsc\",\n\t\t\t\t\t\t\t\tdata: dataRow\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tdataReceived(commit, \"TSC\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (message[\"message\"][\"topic\"] === rsuTopic) {\n\t\t\t\t\tnew Promise(() => {\n\t\t\t\t\t\t// Only commit messages that have Ip equal\n\t\t\t\t\t\t// to the selected verification source device Ip.\n\t\t\t\t\t\t// Parse the payloadString first, then\n\t\t\t\t\t\t// commit if IP matches.\n\t\t\t\t\t\tif (message[\"message\"] && message[\"message\"][\"payloadString\"]) {\n\t\t\t\t\t\t\tconst dataRow = SpatVerificationData.parseRsuMessage(message);\n\t\t\t\t\t\t\tif (dataRow.ipAddress === state.sources.rxIpAddress) {\n\t\t\t\t\t\t\t\tdispatch(\"ADD_DATA_ROW\", {\n\t\t\t\t\t\t\t\t\twindowId: \"rsu\",\n\t\t\t\t\t\t\t\t\tdata: dataRow\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdataReceived(commit, \"RSU\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsubscribedOnce = true;\n\t\treturn Promise.resolve();\n\t},\n\n\t/**\n\t * Stops source data after a fixed period of time\n\t */\n\tSTOP_SOURCE({ commit, dispatch }) {\n\t\tcommit(\"SET_WAITING_FOR_DATA\", false);\n\t\tstopSourceTimer = window.setTimeout(\n\t\t\t() => {\n\t\t\t\tdispatch(\"STOP_SOURCE_IMMEDIATELY\");\n\t\t\t},\n\t\t\t300000 // 5 mins = 300000\n\t\t);\n\t},\n\n\t/**\n\t * Stops source data immediately.\n\t */\n\tSTOP_SOURCE_IMMEDIATELY({ commit }) {\n\t\tconsole.log(\"STOP_SOURCE\");\n\t\tcommit(\"SET_WAITING_FOR_DATA\", false);\n\t\tcommit(MutationTypes.MQTT_UNSUBSCRIBE, MQTTSUBSCRIPTIONTSC, {\n\t\t\troot: true\n\t\t});\n\t\tcommit(MutationTypes.MQTT_UNSUBSCRIBE, MQTTSUBSCRIPTIONRSU, {\n\t\t\troot: true\n\t\t});\n\t\tstopSourceTimer = 0;\n\n\t\tcommit(\"SET_IS_PLAYING\", false);\n\t}\n};\n\nconst mutations = {\n\t// TRANSPORT\n\t// Make sure you have set max display time before trying to\n\t// set the current frame number\n\tSET_CURRENT_FRAME_NUMBER(state, payload) {\n\t\tif (\n\t\t\tpayload >= state.transport.minDisplayFrameNumber &&\n\t\t\tpayload <= state.transport.maxDisplayFrameNumber\n\t\t) {\n\t\t\tstate.transport.currentFrameNumber = payload;\n\t\t}\n\t},\n\tSET_DATA_RECEIVED(state, { deviceType, value }) {\n\t\tstate.transport.dataReceived[deviceType] = value ? true : false;\n\t},\n\tSET_MAX_DISPLAY_FRAME_NUMBER(state, payload) {\n\t\tif (payload > state.transport.maxDisplayFrameNumber) {\n\t\t\tstate.transport.maxDisplayFrameNumber = payload;\n\t\t}\n\t},\n\tSET_MIN_DISPLAY_FRAME_NUMBER(state, payload) {\n\t\tif (payload <= state.transport.maxDisplayFrameNumber) {\n\t\t\tstate.transport.minDisplayFrameNumber = payload;\n\t\t}\n\t},\n\tSET_IS_PLAYING(state, payload) {\n\t\tstate.transport.isPlaying = payload ? true : false;\n\t},\n\tSET_TRANSPORT_SPEED(state, payload) {\n\t\t// Just don't let payload equal 0.\n\t\tif (payload === 0) {\n\t\t\tpayload = +1;\n\t\t}\n\t\tstate.transport.transportSpeed = payload;\n\t},\n\tSET_WAITING_FOR_DATA(state, payload) {\n\t\tstate.transport.waitingForData = payload;\n\t},\n\t// SOURCES\n\tSET_AVAILABLE_SOURCES(state, payload) {\n\t\t// console.log(\"SET_SOURCES\", payload);\n\t\t// TODO: Add check here that sources are well formed?\n\t\tif (payload[\"currentTsc\"]) {\n\t\t\tstate.sources.currentTsc = payload[\"currentTsc\"];\n\t\t}\n\t\tif (payload[\"availableVerification\"]) {\n\t\t\tstate.sources.availableVerification = payload[\"availableVerification\"];\n\t\t}\n\t\tif (\n\t\t\tstate.sources.currentTsc[\"label\"] &&\n\t\t\tstate.sources.availableVerification.length > 0\n\t\t) {\n\t\t\tstate.sources.sourcesLoaded = true;\n\t\t} else {\n\t\t\tstate.sources.sourcesLoaded = false;\n\t\t}\n\t},\n\tSET_VERIFICATION_SOURCE(state, payload) {\n\t\tstate.sources.selectedVerification = payload;\n\t},\n\tSET_RX_IP_ADDRESS(state, payload) {\n\t\tif (typeof payload === \"string\") {\n\t\t\tstate.sources.rxIpAddress = payload;\n\t\t}\n\t},\n\t// OFFSET\n\tSET_OFFSET_TIME(state, payload) {\n\t\tif (payload < 0 || payload.toString().length === 0) {\n\t\t\tpayload = 0;\n\t\t}\n\t\tif (payload > 2000) {\n\t\t\tpayload = 2000;\n\t\t}\n\t\tstate.offset.offsetTime = payload;\n\t},\n\tSET_IS_LINKED(state, payload) {\n\t\tstate.offset.isLinked = payload ? true : false;\n\t},\n\tSET_IS_AUTO(state, payload) {\n\t\tstate.offset.isAuto = payload ? true : false;\n\t},\n\tADD_PHASE_CHANGE_FRAME(state, payload) {\n\t\tstate.offset.phaseChangeFrameNumbers.push(payload);\n\t},\n\t// DATAWINDOWS\n\tADD_DATA_ROW(state, payload) {\n\t\tlet data = {};\n\t\tif (payload[\"data\"] instanceof SpatVerificationData) {\n\t\t\tdata = payload[\"data\"];\n\t\t} else if (typeof payload[\"data\"] === \"object\") {\n\t\t\tdata = new SpatVerificationData(payload[\"data\"]);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tconst frameNumber = data.frameNumber;\n\t\tconst windowId = payload[\"windowId\"];\n\n\t\t// Add an entry in the frames object for the frame and index of the data\n\t\t// row just added. Only add one SpatVerificationData per frame per windowId.\n\t\tif (!state.dataWindows[windowId].frames[frameNumber]) {\n\t\t\tstate.dataWindows[windowId].frames[frameNumber] = data;\n\t\t}\n\n\t\t// Add latest data row\n\t\tstate.dataWindows[windowId].latestDataRow = data;\n\t},\n\tSET_PHASE_NUMBER_TSC(state, payload) {\n\t\tif (payload > 0 && payload < 17) {\n\t\t\tstate.dataWindows.tsc.phaseNumber = payload;\n\t\t}\n\t},\n\tSET_PHASE_NUMBER_RSU(state, payload) {\n\t\tif (payload > 0 && payload < 17) {\n\t\t\tstate.dataWindows.rsu.phaseNumber = payload;\n\t\t}\n\t},\n\tCLEAR_DATA_WINDOWS(state) {\n\t\tstate.dataWindows.tsc.dataRows = [];\n\t\tstate.dataWindows.tsc.frames = {};\n\t\tstate.dataWindows.rsu.dataRows = [];\n\t\tstate.dataWindows.rsu.frames = {};\n\t\tstate.offset.phaseChangeFrameNumbers = [];\n\t\tconsole.log(\"CLEAR_DATA_WINDOWS\", state);\n\t},\n\t// MAP VISUALIZERS\n\tSET_CENTER_LAT_LONG(state, { latitude, longitude }) {\n\t\tstate.mapVisualizer.center.latitude = latitude;\n\t\tstate.mapVisualizer.center.longitude = longitude;\n\t},\n\tSET_INTERSECTION(state, intersection) {\n\t\tstate.mapVisualizer.intersection = intersection;\n\t},\n\t// RESET\n\tRESET(state) {\n\t\tObject.assign(state, initialState);\n\t}\n};\n\nconst getters = {\n\tdataWindows(state) {\n\t\treturn state.dataWindows;\n\t},\n\tgetDataRowForFrameRsu: state => frameNumber => {\n\t\tlet dataRow = null;\n\t\tconst dataRowRetrieved = state.dataWindows.rsu.frames[frameNumber];\n\t\tif (dataRowRetrieved) {\n\t\t\tdataRow = dataRowRetrieved;\n\t\t}\n\t\treturn dataRow;\n\t},\n\tgetDataRowForFrameTsc: state => frameNumber => {\n\t\tlet dataRow = null;\n\t\tconst dataRowRetrieved = state.dataWindows.tsc.frames[frameNumber];\n\t\tif (dataRowRetrieved) {\n\t\t\tdataRow = dataRowRetrieved;\n\t\t}\n\t\treturn dataRow;\n\t},\n\tmapVisualizer(state) {\n\t\treturn state.mapVisualizer;\n\t},\n\toffset(state) {\n\t\treturn state.offset;\n\t},\n\tsources(state) {\n\t\treturn state.sources;\n\t},\n\ttransport(state) {\n\t\treturn {\n\t\t\t...state.transport,\n\t\t\ttimecode: SpatVerificationData.dateToTimecode(\n\t\t\t\tnew Date(state.transport.currentFrameNumber)\n\t\t\t)\n\t\t};\n\t}\n};\n\n// Use this to set currentFrameNumber to all zeros.\nconst localMidnight = (function() {\n\tlet now = new Date();\n\tnow.setHours(0);\n\tnow.setMinutes(0);\n\tnow.setSeconds(0);\n\tnow.setMilliseconds(0);\n\treturn now.getTime();\n})();\n\nconst initialState = {\n\tdataWindows: {\n\t\ttsc: {\n\t\t\tlatestDataRow: null,\n\t\t\tframes: {},\n\t\t\tphaseNumber: 2\n\t\t},\n\t\trsu: {\n\t\t\tlatestDataRow: null,\n\t\t\tframes: {},\n\t\t\tphaseNumber: 2\n\t\t}\n\t},\n\tmapVisualizer: {\n\t\tcenter: {\n\t\t\tlatitude: null,\n\t\t\tlongitude: null\n\t\t},\n\t\tintersection: {}\n\t},\n\toffset: {\n\t\toffsetTime: 0,\n\t\tisLinked: true,\n\t\tisAuto: true,\n\t\tphaseChangeFrameNumbers: []\n\t},\n\tsources: {\n\t\tcurrentTsc: {},\n\t\tselectedVerification: 0,\n\t\tavailableVerification: [],\n\t\tsourcesLoaded: false,\n\t\trxIpAddress: \"\"\n\t},\n\ttransport: {\n\t\tdataReceived: { TSC: false, RSU: false },\n\t\tisPlaying: false,\n\t\tcurrentFrameNumber: localMidnight,\n\t\tmaxDisplayFrameNumber: 0,\n\t\tminDisplayFrameNumber: 0,\n\t\ttransportSpeed: 1,\n\t\twaitingForData: false\n\t},\n\tsubscriptions: {}\n};\n\n/**\n * Create the new module.\n * Clone initialState object so that we maintain a \"clean\" baseline.\n */\nconst SpatVerificationModule = new StoreModule(\n\tname,\n\tmutations,\n\tactions,\n\tgetters,\n\t_.cloneDeep(initialState)\n);\n\nexport default SpatVerificationModule;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wUNDS0Ho6AP6AAABMFJREFUWMOtln1MlWUUwH/3A1qAGphNFGGJZWpeueMtbQqVm04sc202W19arbb+aEMX5aZhmnMw550MtzY3N1abo0lLvlFmjslQd+91wVUcilikiWEmCdzLvfd9Tn8Aycd9772A5+78cZ/nnPf3nHOe95zXpO2pJVrZV/n1AmDG0N+2XRu+7XXmr4voZ9L21Bhu7q3MTwK2AuuANbGxsVjV4J5PBVFKdQEVwLEcp7PBGPLNeMjeqnwLkAfszHG5EiKd9NKiRfwRH18HfJnjdHpCQKrHAHYnAaU5LtcaJii1muYFPshxOstGrptFhGHdU5mfJCJNkwEA5Lhcjz97797xGk37bBRkRAQW4Ph6t3shU5D0jg6A4hpNW/0QIgIiKMhb73av5hHIerfboqC0StOSBtOFsLtqd5KI7OQRyutu9ywRyQOwIgC8s+HixbC36EZ6Oq2JicSlptLf2ckMq5VV589HYn1amZm5y4oIwOZwlpWaxjMff8ja97cQEx8PwK36euoKC1l3+rShX4LVmtQbDL5Eud2eUG63BwcrM17Prlghv504IaHkwe+dUr1ypRj5Cki53b7PrCA1JibGYnSagZQU0jZuHLcuIsTPSyF10ybDSG6mP42CxWYRSTKZTIaGiUuXhgQAKKVItNs5o2mh28mg7Qwz4B92CiXK7zcEiAi610vcwEBI37nXbwB4zQpuBXTdENLtdKKCwXGgYcifjY0s93iMDwm3zCLS5Q8Ge0MZ+KYlsKylmcvFxeOiALh97hz3T50Ke4dFpNNydWuxZLeffWHxnTuLxhpY/X765iTT73Zx7eo14pKTeWzmTHo6OugoK8NTWMgbLpchoCIzE12pz61DzfFwtaa9+VoIh9lX25kN0HaNqqYmfMEgMRYLWR3Xsd3vCRvFQCBQ/1Zzcyu2vFJseaWU2mxN4e77RLXyxUwptdlWiQhmEAaVA7XLtUfWu/p8gV82Nzc3AliHiykiFT39A+3Agqk8/N+nnuRsWiriCxSMa/X71+7QFTjOZGZMKYLpf92lxxdwv93SUj9iMj5MpEmkpGsg2D0VSI1mxyRSMHoyjqDsX7PDqywcaZ83d9KQfwKBNmXhZ8MZP6RF5xOf8E4GUJuZgYgUvPurRx8z44dv16AWrP6qG50fJgP52xfoROfY2HVzqFuuLDi+ty3RJwI4uTwDZcHx3qVL/nGQEOmi8JW8NhH5/4MsYDEb6rB09fu7ReRoqAOYDd9ZcPy07HkAYnRlqAAnNRvA4S0tl0M22pCRiAiFL3/R8EDXz0WTqtu+QK+IFBntjyv8SFU6RRW2JWEBp7SlKJ3vtnpae4wh4dqchbK7SrWHg9z0Bf1YcISzMUyXiHAge7suIkVV9tDRXHhuPiJS8pGntSssJFy6hlJWcturh2w1LcTqSqcgUs3MkQbDwVe395rMcqQuY/TgbE+ehcksP35y5cqNiJBoRpCCw51+NeoluzBrJorIUUSVLhAc2du6gBJP2hwAvLEx9AWl2pG9zRMdJDJjaHBS1Dx9GgDlC+cDFCDRtRyzEN3vYFZua19QKu5Ni6MnKA0Hs3IbJUqKeSKfBwocJ9NSBmvxsP1EU5Po5VBWbsN9naOHsnLrJuL3H4L7cJwH5MBxAAAAAElFTkSuQmCC\"","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport StoreModule from \"./store_module\";\nimport TFMService from \"@/api/service\";\n\nconst name = \"device-manager\";\n\nconst mutations = {\n\tLOAD_DEVICE_TYPES: (state, payload) => {\n\t\tconst deviceTypes = _.reduce(\n\t\t\tpayload,\n\t\t\t(acc, v, k) => {\n\t\t\t\treturn Object.assign(acc, {\n\t\t\t\t\t[k]: Object.assign({}, v, {\n\t\t\t\t\t\tid: k,\n\t\t\t\t\t\texpanded: false, // in sidebar\n\t\t\t\t\t\tfilterDeviceType: \"Optional\", // Radio buttons for device type default optional\n\t\t\t\t\t\tfilter: null,\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\tVue.set(state, \"deviceTypes\", deviceTypes);\n\t},\n\n\tSET_FILTER: (state, payload) => (state.filter = payload),\n\n\tCLEAR_FILTER: state => (state.filter = \"\"),\n\n\tTOGGLE_EXPAND_DEVICE_TYPE: (state, deviceTypeId) =>\n\t\t(state.deviceTypes[deviceTypeId].expanded = !state.deviceTypes[deviceTypeId]\n\t\t\t.expanded),\n\n\tSET_EXPAND_DEVICE_TYPE: (state, { deviceTypeId, expanded }) =>\n\t\t(state.deviceTypes[deviceTypeId].expanded = expanded),\n\n\tSET_DEVICE_TYPE_LOADING: (state, { deviceTypeId, isLoading }) =>\n\t\t(state.deviceTypes[deviceTypeId].loading = isLoading),\n\n\tSET_SHOW_DEVICE_TYPE: (state, { deviceTypeId, filter }) => {\n\t\tstate.deviceTypes[deviceTypeId].filterDeviceType = filter;\n\t},\n\n\tCLEAR_ACTIVE_DEVICE: state => {\n\t\tstate.activeDeviceId = null;\n\t\tstate.activeDeviceTypeId = null;\n\t},\n\n\tSET_ACTIVE_DEVICE: (state, { deviceId, $deviceTypeId }) => {\n\t\tif (deviceId === state.activeDeviceId) {\n\t\t\t// deselect if the same device is selected again\n\t\t\tdeviceId = null;\n\t\t\t$deviceTypeId = null;\n\t\t}\n\t\tstate.activeDeviceId = deviceId;\n\t\tstate.activeDeviceTypeId = $deviceTypeId;\n\t},\n\n\tSET_CONTEXT_MENU_LAT_LNG: (state, payload) =>\n\t\t(state.contextMenuLatLng = payload)\n};\n\nconst actions = {\n\tasync fetchDeviceTypes(context) {\n\t\tconst deviceTypes = await TFMService.getDeviceTypes();\n\t\tcontext.commit(\"LOAD_DEVICE_TYPES\", deviceTypes);\n\t},\n\n\tasync fetchDefaultDevices(context) {\n\t\tconst ddts = context.getters[\"defaultDeviceTypesToLoad\"];\n\t\tlet promises = [];\n\t\tfor (const id in ddts) {\n\t\t\tif (ddts[id]) {\n\t\t\t\tpromises.push(context.dispatch(\"fetchDevicesOfType\", id));\n\t\t\t}\n\t\t}\n\t\treturn Promise.all(promises);\n\t},\n\n\tasync fetchDeviceMetadata(context, { deviceId, $deviceTypeId }) {\n\t\treturn await context.dispatch(\n\t\t\tcontext.getters.deviceTypeModuleName($deviceTypeId) + \"/FETCH_METADATA\",\n\t\t\t{ id: deviceId },\n\t\t\t{ root: true }\n\t\t);\n\t},\n\n\tasync fetchDevicesOfType(context, type) {\n\t\tif (!context.getters.doesDeviceTypeHaveModule(type)) return null;\n\t\tcontext.commit(\"SET_DEVICE_TYPE_LOADING\", {\n\t\t\tdeviceTypeId: type,\n\t\t\tisLoading: true\n\t\t});\n\t\tawait context.dispatch(\n\t\t\tcontext.getters.deviceTypeModuleName(type) + \"/FETCH_ALL_DEVICES\",\n\t\t\t{},\n\t\t\t{ root: true }\n\t\t);\n\t\tcontext.commit(\"SET_DEVICE_TYPE_LOADING\", {\n\t\t\tdeviceTypeId: type,\n\t\t\tisLoading: false\n\t\t});\n\t}\n};\n\nconst getters = {\n\t// TODO: current filtering algo is slow due to rebuilding entire device list\n\t// upon any change to the filter (and therefore redrawing a lot of leaflet\n\t// markers)\n\tfilteredDevices: (state, getters) => {\n\t\tif (_.isEmpty(state.filter)) return null;\n\t\tconst devices = _.chain(getters.allDevicesByType)\n\t\t\t// .filter((devices, typeKey) => getters.deviceTypes[typeKey].showOnMap)\n\t\t\t.reduce((acc, devices) => Object.assign(acc, devices), {})\n\t\t\t.filter(\n\t\t\t\tdevice =>\n\t\t\t\t\t(device.deviceId + \" \" + device.deviceName)\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.indexOf(state.filter.toLowerCase()) > -1\n\t\t\t)\n\t\t\t.value();\n\t\treturn devices;\n\t},\n\n\tdeviceTypeIconURLByTypeID: (state, getters) => id => {\n\t\tconst deviceType = getters.deviceTypeById(id);\n\t\tif (deviceType && \"iconURL\" in deviceType) return deviceType.iconURL;\n\t\treturn null;\n\t},\n\n\tallDevicesByType: (state, getters, rootState, rootGetters) => {\n\t\tif (!getters.deviceTypes) return null;\n\t\tconst devices = _.chain(getters.deviceTypes)\n\t\t\t.pickBy((dt, id) => getters.doesDeviceTypeHaveModule(id) && !dt.disabled)\n\t\t\t.mapValues(\n\t\t\t\tdt => rootGetters[getters.deviceTypeModuleName(dt.id) + \"/allDevices\"]\n\t\t\t)\n\t\t\t.pickBy(e => !!e)\n\t\t\t.value();\n\t\treturn devices;\n\t},\n\n\tdevicesOfType: (state, getters, rootState, rootGetters) => type => {\n\t\tconst mn = getters.deviceTypeModuleName(type);\n\t\tif (!mn) return [];\n\t\treturn rootGetters[mn + \"/allDevices\"];\n\t},\n\n\t/**\n\t * Determines which device types to load\n\t * @returns object - ID with value true\n\t */\n\tdefaultDeviceTypesToLoad: (state, getters) => {\n\t\tlet result = {};\n\t\tconst allDeviceTypes = getters[\"deviceTypes\"];\n\t\tfor (let index in allDeviceTypes) {\n\t\t\tconst deviceType = allDeviceTypes[index];\n\t\t\tresult[parseInt(deviceType[\"id\"])] = true;\n\t\t}\n\t\treturn result;\n\t},\n\n\tdeviceByTypeAndId: (state, getters, rootState, rootGetters) => ({\n\t\tdeviceId,\n\t\t$deviceTypeId\n\t}) => {\n\t\tif (!deviceId || !$deviceTypeId) return null;\n\t\tif (!getters.doesDeviceTypeHaveModule($deviceTypeId)) return null;\n\t\tconst moduleName = getters.deviceTypeModuleName($deviceTypeId);\n\t\tconst result = rootGetters[moduleName + \"/byIdentifier\"](deviceId);\n\t\treturn result;\n\t},\n\n\tdeviceStatusMetadata: (state, getters, rootState, rootGetters) => ({\n\t\tdeviceId,\n\t\t$deviceTypeId\n\t}) => {\n\t\tif (!deviceId || !$deviceTypeId) return null;\n\t\tif (!getters.doesDeviceTypeHaveModule($deviceTypeId)) return null;\n\t\tconst moduleName = getters.deviceTypeModuleName($deviceTypeId);\n\t\tconst result = rootGetters[moduleName + \"/statusMetadata\"](deviceId);\n\t\treturn result;\n\t},\n\n\tdeviceTypeById: state => deviceTypeId => {\n\t\tif (!state.deviceTypes) return null;\n\t\treturn state.deviceTypes[deviceTypeId];\n\t},\n\n\tdeviceTypeModuleName: (state, getters) => deviceTypeId => {\n\t\tconst dt = getters.deviceTypeById(deviceTypeId);\n\t\tif (dt) return dt.moduleName || dt.shortName.toLowerCase();\n\t\telse return false;\n\t},\n\n\tdoesDeviceTypeHaveModule: (state, getters) => deviceTypeId =>\n\t\t!!getters.deviceTypeModuleName(deviceTypeId) &&\n\t\t!getters.deviceTypes[deviceTypeId].disabled,\n\n\t// deviceTypeModule: (state, getters) => deviceTypeId => getters.deviceTypeById(deviceTypeId),\n\n\tdeviceTypes: state => state.deviceTypes,\n\n\tfilter: state => state.filter,\n\n\tcontextMenuLatLng: state => state.contextMenuLatLng,\n\n\tactiveDevice: (state, getters, rootState, rootGetters) => {\n\t\tif (!state.deviceTypes) return null;\n\t\tif (!getters.doesDeviceTypeHaveModule(state.activeDeviceTypeId))\n\t\t\treturn null;\n\t\treturn rootGetters[\n\t\t\tgetters.deviceTypeModuleName(state.activeDeviceTypeId) + \"/byIdentifier\"\n\t\t](state.activeDeviceId);\n\t},\n\n\tisDeviceTypeExpanded: (state, getters) => deviceTypeId =>\n\t\tgetters.deviceTypes[deviceTypeId].expanded,\n\n\t/**\n\t * Checks to see if user has role claim for type of device passed in\n\t * @param device (object)\n\t * @returns bool\n\t */\n\thasDeviceViewPermission: (\n\t\tstate,\n\t\tgetters,\n\t\trootState,\n\t\trootGetters\n\t) => device => {\n\t\tconst deviceShortName = getters.deviceTypeById(device.$deviceTypeId)\n\t\t\t.shortName;\n\t\tconst deviceViewRoleClaim = deviceShortName.toUpperCase() + \"view\";\n\t\tconst hasPermission = rootGetters.currentUserHasRole(deviceViewRoleClaim);\n\t\treturn hasPermission;\n\t}\n};\n\nconst initialState = {\n\tfilter: \"\",\n\tcontextMenuLatLng: null,\n\tactiveDeviceId: null,\n\tactiveDeviceTypeId: null,\n\tdeviceTypes: null\n};\n\nconst deviceManagerModule = new StoreModule(\n\tname,\n\tmutations,\n\tactions,\n\tgetters,\n\tinitialState\n);\n\nexport default deviceManagerModule;\n","import _ from \"lodash\";\n\nclass StoreModule {\n\tconstructor(\n\t\tname,\n\t\tmutations,\n\t\tactions,\n\t\tgetters,\n\t\tinitial_state = {},\n\t\tadditional_mutation_names = {},\n\t\tadditional_action_names = {}\n\t) {\n\t\tthis.MODULE_NAME = name;\n\t\tthis.MUTATION_TYPES = Object.assign(\n\t\t\t_.mapValues(mutations, (m, k) => k),\n\t\t\tadditional_mutation_names\n\t\t);\n\t\tthis.ACTION_TYPES = Object.assign(\n\t\t\t_.mapValues(actions, (m, k) => k),\n\t\t\tadditional_action_names\n\t\t);\n\n\t\tthis.namespaced = true;\n\n\t\tthis.state = initial_state;\n\t\tthis.mutations = mutations;\n\t\tthis.actions = actions;\n\t\tthis.getters = getters;\n\t}\n}\n\nexport default StoreModule;\n","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\nimport DSRCmessage from \"@/helpers/DSRCmessage.js\";\nimport moment from \"moment\";\nimport TFMService from \"@/api/service\";\n\nconst MODULE_NAME = \"rsu\";\n\nconst MUTATION_TYPES = {\n\tADD_RSU: \"ADD_RSU\",\n\tCLEAR_RSUS: \"CLEAR_RSUS\",\n\tSET_MANAGE_INFO: \"SET_MANAGE_INFO\",\n\tUPDATE_RSU_DATA: \"UPDATE_RSU_DATA\",\n\tCLEAR_TESTED_RSUS: \"CLEAR_RSUS_TESTS_LIST\",\n\tADD_TO_RSU_TEST_LIST: \"ADD_TO_RSU_TEST_LIST\",\n\tSET_RSU_TESTS: \"SET_RSU_TESTS\",\n\tGET_TESTED_RSU_DEVICE_ID: \"GET_TESTED_RSU_DEVICE_ID\"\n};\n\nconst ACTION_TYPES = {\n\tFETCH_RSU_METADATA: \"FETCH_METADATA\",\n\tFETCH_RSU_MANAGE_INFO: \"FETCH_MANAGE_INFO\",\n\tFETCH_RSU_BROADCASTING_MESSAGES: \"FETCH_BROADCASTING_MESSAGES\",\n\tFETCH_RSU_TIMS: \"FETCH_TIMS\",\n\tFETCH_RSU_MAP_STATUS: \"FETCH_MAP_STATUS\",\n\tFETCH_RSU_RADIO_NEIGHBORS: \"FETCH_RSU_RADIO_NEIGHBORS\",\n\tFETCH_ALL_DEVICES: \"FETCH_ALL_DEVICES\",\n\tFETCH_ALL_DSRC_FLAGS: \"FETCH_ALL_DSRC_FLAGS\",\n\tFETCH_RSUS: \"FETCH_RSUS\",\n\tGET_RSU_LIST_WITH_COMPLETE_TEST: \"GET_RSU_LIST_WITH_COMPLETE_TEST\",\n\tGET_TEST_LIST_BY_RSU: \"GET_TEST_LIST_BY_RSU\"\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\n\tstate: {\n\t\trsus: {},\n\t\tdevices: {},\n\t\tmanageInfo: {},\n\t\ttestedRSUDeviceIds: [],\n\t\ttests: {}\n\t},\n\n\tmutations: {\n\t\t[MUTATION_TYPES.ADD_RSU](state, payload) {\n\t\t\tconst putDevice = r => {\n\t\t\t\t// create defaults\n\t\t\t\tconst device = Object.assign(\n\t\t\t\t\t{\n\t\t\t\t\t\t$deviceTypeId: 1,\n\t\t\t\t\t\ttims: null,\n\t\t\t\t\t\tmapStatus: null,\n\t\t\t\t\t\tfirmwareVersion: null,\n\t\t\t\t\t\tlocationTypeDescription: null,\n\t\t\t\t\t\tlocationDescriptionId: null,\n\t\t\t\t\t\tmanufacturerName: null,\n\t\t\t\t\t\tserialNumber: null,\n\t\t\t\t\t\tmanageInfo: null\n\t\t\t\t\t},\n\t\t\t\t\tr\n\t\t\t\t);\n\t\t\t\treturn Vue.set(state.devices, device.deviceId, device);\n\t\t\t};\n\t\t\tif (_.isEmpty(payload)) return;\n\t\t\tif (!Array.isArray(payload)) {\n\t\t\t\tpayload = [payload];\n\t\t\t}\n\t\t\tpayload.map(putDevice);\n\t\t},\n\n\t\t[MUTATION_TYPES.SET_MANAGE_INFO](state, { id, data }) {\n\t\t\tVue.set(state.manageInfo, id, data);\n\t\t\t// Vue.set(state.devices[id], \"manageInfo\", data);\n\t\t},\n\n\t\t[MUTATION_TYPES.UPDATE_RSU_DATA](state, { index, data }) {\n\t\t\tif (state.devices[index]) {\n\t\t\t\tVue.set(\n\t\t\t\t\tstate.devices,\n\t\t\t\t\tindex,\n\t\t\t\t\tObject.assign(state.devices[index], data)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\t[MUTATION_TYPES.CLEAR_RSUS](state) {\n\t\t\tVue.set(state, \"devices\", {});\n\t\t},\n\n\t\t//Array of tests by rsuId\n\t\t[MUTATION_TYPES.SET_RSU_TESTS](state, { deviceId, rows }) {\n\t\t\tVue.set(state.tests, deviceId, rows);\n\t\t},\n\n\t\t//Array of tested RSUs\n\t\t[MUTATION_TYPES.ADD_TO_RSU_TEST_LIST](state, payload) {\n\t\t\tif (_.isEmpty(payload)) return;\n\t\t\tconst putRSU = rsu => {\n\t\t\t\treturn rsu.deviceId\n\t\t\t\t\t? Vue.set(state.rsus, rsu.deviceId, rsu)\n\t\t\t\t\t: console.error(\n\t\t\t\t\t\t\tnew Error(\"ADD_TO_RSU_TEST_LIST: Invalid rsu object.\")\n\t\t\t\t\t );\n\t\t\t};\n\t\t\tVue.set(\n\t\t\t\tstate,\n\t\t\t\t\"testedRSUDeviceIds\",\n\t\t\t\tpayload.map(rsu => rsu.deviceId)\n\t\t\t);\n\t\t\tpayload.map(putRSU);\n\t\t}\n\t},\n\n\tactions: {\n\t\t[ACTION_TYPES.FETCH_RSU_TIMS](context, { id }) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst index = context.getters.indexByIdentifier(id);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\t`Tried to fetch RSU TIMs for RSU with device ID ${id} but it didn't exist in the state (yet?).`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tAPI.getWithParamsJson(\n\t\t\t\t\tAPI.ENDPOINTS.GET_ALL_TIMS_AND_METADATA_BY_DEVICE_ID,\n\t\t\t\t\t{\n\t\t\t\t\t\tdeviceId: id\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tconst tims = _.filter(json, row => {\n\t\t\t\t\t\t\treturn row.tim.deviceId == id && row.tim.isActive;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, {\n\t\t\t\t\t\t\tindex: context.getters.indexByIdentifier(id),\n\t\t\t\t\t\t\tdata: { tims }\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresolve(tims);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_RSU_MANAGE_INFO](context, { id }) {\n\t\t\tconst data = await TFMService.getRSUManageInfo(id);\n\t\t\tcontext.commit(MUTATION_TYPES.SET_MANAGE_INFO, { id, data });\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_RSU_MAP_STATUS](context, { id }) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst index = context.getters.indexByIdentifier(id);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\t`Tried to fetch RSU MAP status for RSU with device ID ${id} but it didn't exist in the state (yet?).`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst data = { mapStatus: false };\n\t\t\t\tconst intersectionId = context.state.devices[index].intersectionId;\n\t\t\t\tif (!intersectionId) {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, { index, data });\n\t\t\t\t\treturn reject(data);\n\t\t\t\t}\n\t\t\t\tconst error = err => {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, { index, data });\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\treject(err);\n\t\t\t\t};\n\t\t\t\tAPI.getWithParamsJson(\n\t\t\t\t\tAPI.ENDPOINTS.GET_MAP_MESSAGE_BY_INTERSECTION_ID, //GET_MAP_ACTIVE_STATUS_BY_INTERSECTION_ID,\n\t\t\t\t\t{\n\t\t\t\t\t\tintersectionId\n\t\t\t\t\t},\n\t\t\t\t\t{},\n\t\t\t\t\terror\n\t\t\t\t)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, {\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tdata: { mapStatus: json }\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresolve(json);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error);\n\t\t\t});\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_RSU_BROADCASTING_MESSAGES](context, { id }) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconsole.warn(\"RSU Broadcasting Messages has been deprecated.\");\n\t\t\t\tconst index = context.getters.indexByIdentifier(id);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\t`Tried to fetch RSU broadcasting messages for RSU with device ID ${id} but it didn't exist in the state (yet?).`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst data = { messages: [] };\n\t\t\t\tconst error = err => {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, { index, data });\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\treject(err);\n\t\t\t\t};\n\t\t\t\tAPI.getWithParamsJson(\n\t\t\t\t\tAPI.ENDPOINTS.GET_MESSAGES_BROADCAST_BY_DEVICE,\n\t\t\t\t\t{\n\t\t\t\t\t\tdeviceId: id\n\t\t\t\t\t},\n\t\t\t\t\t{},\n\t\t\t\t\terror\n\t\t\t\t)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, {\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tdata: { messages: json }\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresolve(json);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error);\n\t\t\t});\n\t\t},\n\n\t\tasync [ACTION_TYPES.FETCH_RSU_METADATA](context, p) {\n\t\t\tconst index = context.getters.indexByIdentifier(p.id);\n\t\t\tif (index === -1) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tried to fetch RSU metadata for RSU with device ID ${p.id} but it didn't exist in the state (yet?).`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst data = {};\n\t\t\tdata[ACTION_TYPES.FETCH_RSU_METADATA + \"_start\"] = _.now();\n\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, { index, data });\n\n\t\t\treturn await Promise.all([\n\t\t\t\tcontext\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_RSU_MAP_STATUS, p)\n\t\t\t\t\t.catch(err => console.warn(\"Found no MAP status for RSU:\", p, err)),\n\t\t\t\tcontext\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_RSU_TIMS, p)\n\t\t\t\t\t.catch(err => console.warn(\"Found bad TIMs data for RSU\", p, err)),\n\t\t\t\t/*context\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_RSU_BROADCASTING_MESSAGES, p)\n\t\t\t\t\t.catch(err =>\n\t\t\t\t\t\tconsole.warn(\"Found bad broadcasting messages for RSU\", p, err)\n\t\t\t\t\t), */\n\t\t\t\tcontext\n\t\t\t\t\t.dispatch(ACTION_TYPES.FETCH_RSU_MANAGE_INFO, p)\n\t\t\t\t\t.catch(err => console.warn(\"Found bad manage info for RSU\", p, err))\n\t\t\t]);\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_ALL_DSRC_FLAGS](context) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tAPI.getJson(API.ENDPOINTS.GET_RSU_DSRC_BY_USER)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tif (json.length === 1 && json[0].retCode == -1) {\n\t\t\t\t\t\t\treturn reject(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\t\t\tACTION_TYPES.FETCH_ALL_DSRC_FLAGS +\n\t\t\t\t\t\t\t\t\t\t\" Error: \" +\n\t\t\t\t\t\t\t\t\t\t(json[0].retMsg || \"Invalid server response.\")\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!json.length) {\n\t\t\t\t\t\t\treturn reject(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\t\t\tACTION_TYPES.FETCH_ALL_DSRC_FLAGS +\n\t\t\t\t\t\t\t\t\t\t\" Error: Empty Response\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_.each(json, rec => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst index = rec.deviceId;\n\t\t\t\t\t\t\t\tconst dsrcFlags = { ...rec };\n\t\t\t\t\t\t\t\tdelete dsrcFlags.deviceId;\n\t\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, {\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\tdata: { dsrcFlags }\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t\tMODULE_NAME +\n\t\t\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\t\t\tACTION_TYPES.FETCH_ALL_DSRC_FLAGS +\n\t\t\t\t\t\t\t\t\t\t\" Error: \" +\n\t\t\t\t\t\t\t\t\t\te.message +\n\t\t\t\t\t\t\t\t\t\t\" record: \" +\n\t\t\t\t\t\t\t\t\t\tJSON.stringify(rec)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_RSUS](context) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tAPI.getJson(API.ENDPOINTS.GET_RSU_BY_USER)\n\t\t\t\t\t.then(json => {\n\t\t\t\t\t\tif (json) {\n\t\t\t\t\t\t\tif (json.length === 1 && json[0].retCode == -1) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\"FETCH_RSUs Error: \" +\n\t\t\t\t\t\t\t\t\t\t(json[0].retMsg || \"Invalid server response.\")\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.CLEAR_RSUS);\n\t\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.ADD_RSU, json);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\t[ACTION_TYPES.FETCH_RSU_RADIO_NEIGHBORS](context, { rsuId, deviceId }) {\n\t\t\trsuId = rsuId || deviceId;\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_RSU_RADIO_NEIGHBORS_BY_USER,\n\t\t\t\t{ rsuId },\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\treturn { rows: [] };\n\t\t\t\t})\n\t\t\t\t.then(({ rows }) => {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.UPDATE_RSU_DATA, {\n\t\t\t\t\t\tindex: rsuId,\n\t\t\t\t\t\tdata: { radioNeighborIds: rows.map(r => r.deviceId) }\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\n\t\t[ACTION_TYPES.FETCH_ALL_DEVICES](context) {\n\t\t\treturn context.dispatch(ACTION_TYPES.FETCH_RSUS);\n\t\t},\n\n\t\t[ACTION_TYPES.GET_TEST_LIST_BY_RSU](\n\t\t\tcontext,\n\t\t\t{ deviceId, startDate, endDate, testResult, ownerId, operatorId }\n\t\t) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_TEST_LIST_BY_RSU,\n\t\t\t\t{\n\t\t\t\t\tdeviceId,\n\t\t\t\t\tstartDate,\n\t\t\t\t\tendDate,\n\t\t\t\t\ttestResult,\n\t\t\t\t\townerId,\n\t\t\t\t\toperatorId\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.then(rows => {\n\t\t\t\t\t// If we searched by deviceId, then the only results we got back\n\t\t\t\t\t// are for that device, so just assign all rows.\n\t\t\t\t\tif (deviceId) {\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.SET_RSU_TESTS, { deviceId, rows });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// In case no deviceId is set we need to expect\n\t\t\t\t\t// results from any and all tested devices.\n\t\t\t\t\t_.each(context.state.testedRSUDeviceIds, id => {\n\t\t\t\t\t\tconst results = rows.filter(row => row.deviceId == id);\n\t\t\t\t\t\tcontext.commit(MUTATION_TYPES.SET_RSU_TESTS, {\n\t\t\t\t\t\t\tdeviceId: id,\n\t\t\t\t\t\t\trows: results\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\n\t\t//List of RSUs with completed tests\n\t\t[ACTION_TYPES.GET_RSU_LIST_WITH_COMPLETE_TEST](context) {\n\t\t\treturn API.getWithParamsJson(\n\t\t\t\tAPI.ENDPOINTS.GET_RSU_LIST_WITH_COMPLETE_TEST,\n\t\t\t\t{},\n\t\t\t\t{},\n\t\t\t\te => {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t)\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.then(payload => {\n\t\t\t\t\tcontext.commit(MUTATION_TYPES.ADD_TO_RSU_TEST_LIST, payload);\n\t\t\t\t\t// payload.map(row =>\n\t\t\t\t\t// \tcontext.dispatch(ACTION_TYPES.GET_TEST_LIST_BY_RSU, row)\n\t\t\t\t\t// );\n\t\t\t\t});\n\t\t}\n\t},\n\n\tgetters: {\n\t\tlistOfTestsByRsu(state) {\n\t\t\treturn state.tests;\n\t\t},\n\n\t\ttestedRSUDeviceIds(state) {\n\t\t\treturn state.testedRSUDeviceIds;\n\t\t},\n\n\t\ttestedRSUs(state) {\n\t\t\treturn state.testedRSUDeviceIds.map(deviceId => state.rsus[deviceId]);\n\t\t},\n\n\t\tallDevices(state) {\n\t\t\treturn state.devices;\n\t\t},\n\n\t\tdevicePosition() {\n\t\t\treturn device => {\n\t\t\t\tif (device === null || device === void 0) return null;\n\t\t\t\tif (!(\"latitude\" in device) || !(\"longitude\" in device)) return null;\n\t\t\t\treturn [device.latitude, device.longitude];\n\t\t\t};\n\t\t},\n\t\tDSRCmsgID() {\n\t\t\treturn key => {\n\t\t\t\tconst m = DSRCmessage.get(key);\n\t\t\t\treturn m && m.id;\n\t\t\t};\n\t\t},\n\n\t\tindexByIdentifier(state) {\n\t\t\treturn identifier => (state.devices[identifier] ? identifier : -1);\n\t\t},\n\n\t\tbyIdentifier(state) {\n\t\t\treturn identifier => {\n\t\t\t\treturn state.devices[identifier];\n\t\t\t};\n\t\t},\n\n\t\tisManagableByID(state, getters) {\n\t\t\treturn id => {\n\t\t\t\tconst device = getters.byIdentifier(id);\n\t\t\t\tif (device && device.accessLevel)\n\t\t\t\t\treturn device.accessLevel.toLowerCase() === \"edit\";\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tisVerifiableByID(state, getters) {\n\t\t\treturn id => {\n\t\t\t\tconst device = getters.byIdentifier(id);\n\t\t\t\tif (!device) return false;\n\t\t\t\treturn (\n\t\t\t\t\tgetters.isManagableByID(id) &&\n\t\t\t\t\t(device.deviceStatus == \"Active\" || device.deviceStatus == \"Inactive\")\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\n\t\tshouldHaveType(state, getters) {\n\t\t\treturn ({ rsuId, msgType }) => {\n\t\t\t\tvar shouldHaveType = null;\n\t\t\t\tconst rsu = getters.byIdentifier(rsuId);\n\t\t\t\tif (!(rsu && rsu.dsrcFlags)) return false;\n\t\t\t\tswitch (msgType) {\n\t\t\t\t\tcase \"MAP\":\n\t\t\t\t\t\tshouldHaveType = !!rsu.dsrcFlags.hasMAP;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"SPAT\":\n\t\t\t\t\t\tshouldHaveType = !!rsu.dsrcFlags.hasSPAT || !!rsu.dsrcFlags.hasMAP; // For now, assume the presence of a MAP implies there should be a SPaT\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"TIM\":\n\t\t\t\t\t\tshouldHaveType = !!rsu.dsrcFlags.hasTIM;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"SSM\":\n\t\t\t\t\t\tshouldHaveType = null; // This is an on-demand type, so the question of whether it \"should\" be present is not meaningful.\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// console.log(\n\t\t\t\t// \t\"shouldHaveType: RSU %d should have %o: %o\",\n\t\t\t\t// \trsuId,\n\t\t\t\t// \tmsgType,\n\t\t\t\t// \tshouldHaveType\n\t\t\t\t// );\n\t\t\t\treturn shouldHaveType;\n\t\t\t};\n\t\t},\n\n\t\tmanageInfoByID(state) {\n\t\t\treturn id => state.manageInfo[id];\n\t\t\t// return id => getters.byIdentifier(id).manageInfo;\n\t\t},\n\n\t\tradioNeighborIds(state) {\n\t\t\treturn deviceId =>\n\t\t\t\tstate.devices[deviceId] && state.devices[deviceId].radioNeighborIds;\n\t\t},\n\n\t\tstatusMetadata(state, getters) {\n\t\t\treturn identifier => {\n\t\t\t\tconst rsu = getters.byIdentifier(identifier);\n\n\t\t\t\tconst spatMessageEntry = _.find(rsu.messages, { messageType: \"SPaT\" });\n\t\t\t\tconst mapMessageEntry = _.find(rsu.messages, { messageType: \"MAP\" });\n\t\t\t\tconst timMessageEntry = _.find(rsu.messages, { messageType: \"TIM\" });\n\n\t\t\t\tconst statusClass = f =>\n\t\t\t\t\tf === null ? {} : f ? { \"is-success\": true } : { \"is-error\": true };\n\t\t\t\tconst statusTitle = f =>\n\t\t\t\t\tf ? \"Connected and Transmitting\" : \"Connected but not Transmitting\";\n\t\t\t\tconst spatStatusText = f =>\n\t\t\t\t\tf === null ? \"Loading...\" : f ? \"Online\" : \"Unknown\";\n\t\t\t\tconst mapStatusText = f =>\n\t\t\t\t\tf === null ? \"Loading...\" : f ? \"Online\" : \"Unknown\";\n\t\t\t\tconst timStatusText = f =>\n\t\t\t\t\tf === null\n\t\t\t\t\t\t? \"Loading...\"\n\t\t\t\t\t\t: Array.isArray(f)\n\t\t\t\t\t\t? `${f.length} Message(s)`\n\t\t\t\t\t\t: \"Offline\";\n\n\t\t\t\tconst mapIsActive =\n\t\t\t\t\trsu.mapStatus === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: rsu.mapStatus\n\t\t\t\t\t\t? rsu.mapStatus.isActive\n\t\t\t\t\t\t: false;\n\t\t\t\tconst tims = rsu.tims === null ? null : rsu.tims;\n\n\t\t\t\treturn {\n\t\t\t\t\tspat: {\n\t\t\t\t\t\tclass: statusClass(mapIsActive),\n\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\tstatusTitle(mapIsActive) +\n\t\t\t\t\t\t\t` (${\n\t\t\t\t\t\t\t\tspatMessageEntry\n\t\t\t\t\t\t\t\t\t? moment(spatMessageEntry.msgTimestamp).fromNow()\n\t\t\t\t\t\t\t\t\t: \"UNKNOWN\"\n\t\t\t\t\t\t\t})`,\n\t\t\t\t\t\tdisplayText: spatStatusText(mapIsActive)\n\t\t\t\t\t},\n\t\t\t\t\tmap: {\n\t\t\t\t\t\tclass: statusClass(mapIsActive),\n\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\tstatusTitle(mapIsActive) +\n\t\t\t\t\t\t\t` (${\n\t\t\t\t\t\t\t\tmapMessageEntry\n\t\t\t\t\t\t\t\t\t? moment(mapMessageEntry.msgTimestamp).fromNow()\n\t\t\t\t\t\t\t\t\t: \"UNKNOWN\"\n\t\t\t\t\t\t\t})`,\n\t\t\t\t\t\tdisplayText: mapStatusText(mapIsActive)\n\t\t\t\t\t},\n\t\t\t\t\ttim: {\n\t\t\t\t\t\tclass: statusClass(tims),\n\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\tstatusTitle(tims) +\n\t\t\t\t\t\t\t` (${\n\t\t\t\t\t\t\t\ttimMessageEntry\n\t\t\t\t\t\t\t\t\t? moment(timMessageEntry.msgTimestamp).fromNow()\n\t\t\t\t\t\t\t\t\t: \"UNKNOWN\"\n\t\t\t\t\t\t\t})`,\n\t\t\t\t\t\tdisplayText: timStatusText(tims)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"device-types-filter\"},[(_vm.deviceTypes)?_c('div',[_c('ul',[_c('li',{staticClass:\"heading center\",attrs:{\"id\":\"deviceTypeHeading\"}},[_vm._v(\"DEVICE SELECTION\"),_c('information-tooltip',{staticClass:\"tooltip\",attrs:{\"text\":\"Total stations can be filtered by device types. The filtered list will include only Total Stations based on:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tOptional: The filtered list will include Total Stations whether they include a device of this type or not.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tRequired: Total Station must have at least 1 device of this type before to be displayed.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tExclude: Total Stations with these devices will not be displayed.\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tExample: Checking RSU = Optional, TSC = Required, and ESS = Excluded will create a list of Total Stations that must have a TSC, may or may not have an RSU, and do not have ESSs.\"}},[_c('i',{staticClass:\"fas fa-question-circle\"})])],1),_c('table',[_vm._m(0),_vm._l((_vm.sortedDeviceTypes),function(dt){return _c('tr',{key:dt.id},[_c('td',[_c('img',{attrs:{\"src\":_vm.deviceTypeImageUrlByID(dt.id)}})]),_c('td',{staticClass:\"deviceTypeName\"},[_c('span',{attrs:{\"title\":(\"#\" + (dt.id) + \": \" + (dt.shortName))}},[_c('label',[_vm._v(_vm._s(dt.fullName)+\" (\"+_vm._s(dt.shortName)+\") \"+_vm._s(_vm.deviceTypeRadio[dt.shortName]))])])]),_c('td',{staticClass:\"radiodiv\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(dt.filterDeviceType),expression:\"dt.filterDeviceType\"}],attrs:{\"type\":\"radio\",\"id\":dt.id + dt.shortName,\"value\":\"Optional\"},domProps:{\"checked\":_vm._q(dt.filterDeviceType,\"Optional\")},on:{\"click\":function($event){return _vm.setShowDeviceType({ deviceTypeId: dt.id, filter:'Optional'})},\"change\":function($event){return _vm.$set(dt, \"filterDeviceType\", \"Optional\")}}})]),_c('td',{staticClass:\"radiodiv\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(dt.filterDeviceType),expression:\"dt.filterDeviceType\"}],attrs:{\"type\":\"radio\",\"id\":dt.id + dt.shortName,\"value\":\"Required\"},domProps:{\"checked\":_vm._q(dt.filterDeviceType,\"Required\")},on:{\"click\":function($event){return _vm.setShowDeviceType({ deviceTypeId: dt.id, filter:'Required'})},\"change\":function($event){return _vm.$set(dt, \"filterDeviceType\", \"Required\")}}})]),_c('td',{staticClass:\"radiodiv\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(dt.filterDeviceType),expression:\"dt.filterDeviceType\"}],attrs:{\"type\":\"radio\",\"id\":dt.id + dt.shortName,\"value\":\"Exclude\"},domProps:{\"checked\":_vm._q(dt.filterDeviceType,\"Exclude\")},on:{\"click\":function($event){return _vm.setShowDeviceType({ deviceTypeId: dt.id, filter:'Exclude'})},\"change\":function($event){return _vm.$set(dt, \"filterDeviceType\", \"Exclude\")}}})])])})],2),_c('div',{staticClass:\"flex space-between align-center\"},[_c('label',[_vm._v(\"Show Empty Total Stations\")]),_c('toggle-switch',{attrs:{\"size\":\"sm\"},on:{\"input\":function($event){return _vm.ShowEmptyTS(_vm.isEmptyTSVisible)}},model:{value:(_vm.isEmptyTSVisible),callback:function ($$v) {_vm.isEmptyTSVisible=$$v},expression:\"isEmptyTSVisible\"}})],1),_c('li',{staticClass:\"heading center\"},[_vm._v(\"DEVICE STATUS\"),_c('information-tooltip',{staticClass:\"tooltip\",attrs:{\"text\":\"If one or more device types are specified as Required, then the Total Stations displayed will be filtered by the device status selected. Example: RSU is “Required” and status is marked “deployed,” then all Total Stations with deployed RSU will be displayed. If no device types are required, then the status of all device types will be compared against the selected status values.\"}},[_c('i',{staticClass:\"fas fa-question-circle\"})])],1),_c('div',{staticClass:\"statusDiv\"},_vm._l((_vm.deviceStatusLib),function(option,key){return _c('div',{staticClass:\"tdwidth\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(option.selected),expression:\"option.selected\"}],staticClass:\"chkbox\",attrs:{\"type\":\"checkbox\",\"id\":key,\"disabled\":_vm.isNoDeviceSelected},domProps:{\"value\":option.selected,\"checked\":Array.isArray(option.selected)?_vm._i(option.selected,option.selected)>-1:(option.selected)},on:{\"change\":[function($event){var $$a=option.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=option.selected,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(option, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(option, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(option, \"selected\", $$c)}},_vm.toggleDeviceStatus]}}),_c('select',{staticClass:\"formattedText\",style:('appearance:none;width:15px;height:15px;margin:5px;background-color:'+ option.color)}),_c('span',[_c('label',[_vm._v(_vm._s(option.formattedText))])])])}),0),_c('br'),_c('li',{staticClass:\"heading\"},[_vm._v(\"INFRASTRUCTURE OWNER\"),_c('information-tooltip',{attrs:{\"text\":\"All filters work in conjunction with each other. Specifying an Infrastructure Owner will filter the list of Total Stations having devices with the selected owner.\"}},[_c('i',{staticClass:\"fas fa-question-circle\"})]),_c('select',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.infrastructureOwnerId),expression:\"infrastructureOwnerId\",modifiers:{\"number\":true}}],staticClass:\"input\",style:('width:135px; margin-left:15px;'),attrs:{\"id\":\"clientowner\",\"name\":\"clientowner\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return _vm._n(val)}); _vm.infrastructureOwnerId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"disabled\":_vm.isNoDeviceSelected}},[_vm._v(\"All Owners\")]),_vm._l((_vm.clients),function(option){return _c('option',{domProps:{\"value\":option.clientid}},[_vm._v(_vm._s(option.clientname))])})],2)],1),_c('br'),_c('li',{staticClass:\"heading\"},[_vm._v(\"INFRASTRUCTURE OPERATOR\"),_c('information-tooltip',{attrs:{\"text\":\"All filters work in conjunction with each other. Specifying an Infrastructure Operator will filter the list of Total Stations having devices with the selected operator.\"}},[_c('i',{staticClass:\"fas fa-question-circle\"})]),_c('select',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.infrastructureOperatorId),expression:\"infrastructureOperatorId\",modifiers:{\"number\":true}}],staticClass:\"input\",style:('width:135px; '),attrs:{\"id\":\"clientoperator\",\"name\":\"clientoperator\",\"options\":_vm.clients},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return _vm._n(val)}); _vm.infrastructureOperatorId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"disabled\":_vm.isNoDeviceSelected}},[_vm._v(\"All Operators\")]),_vm._l((_vm.clients),function(option){return _c('option',{domProps:{\"value\":option.clientid}},[_vm._v(_vm._s(option.clientname))])})],2)],1),_c('br'),_c('li',{staticClass:\"heading\"},[_vm._v(\"PROJECT NUMBER\"),_c('information-tooltip',{attrs:{\"text\":\"List of Total Stations which includes devices with the added project number.\"}},[_c('i',{staticClass:\"fas fa-question-circle\"})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.projectId),expression:\"projectId\"}],staticClass:\"input\",style:('width:135px; margin-left:70px'),attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.projectId)},on:{\"change\":_vm.setProjectId,\"input\":function($event){if($event.target.composing){ return; }_vm.projectId=$event.target.value}}})],1)])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"trheader\"},[_c('th'),_c('th',[_vm._v(\"DEVICE TYPES\")]),_c('th',[_vm._v(\"OPTIONAL\")]),_c('th',[_vm._v(\"REQUIRED\")]),_c('th',[_vm._v(\"EXCLUDE\")])])}]\n\nexport { render, staticRenderFns }","\n\t.device-types-filter\n\t\tdiv(v-if=\"deviceTypes\")\n\t\t\tul\n\t\t\t\tli.heading.center(id=\"deviceTypeHeading\") DEVICE SELECTION\n\t\t\t\t\tinformation-tooltip.tooltip(\n\t\t\t\t\t\t\t\t\t\t\ttext=`Total stations can be filtered by device types. The filtered list will include only Total Stations based on:\n\t\t\t\t\t\t\t\t\t\t\t\tOptional: The filtered list will include Total Stations whether they include a device of this type or not.\n\t\t\t\t\t\t\t\t\t\t\t\tRequired: Total Station must have at least 1 device of this type before to be displayed.\n\t\t\t\t\t\t\t\t\t\t\t\tExclude: Total Stations with these devices will not be displayed.\n\n\t\t\t\t\t\t\t\t\t\t\t\tExample: Checking RSU = Optional, TSC = Required, and ESS = Excluded will create a list of Total Stations that must have a TSC, may or may not have an RSU, and do not have ESSs.`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\ti.fas.fa-question-circle\n\n\t\t\t\ttable\n\t\t\t\t\ttr.trheader\n\t\t\t\t\t\tth\n\t\t\t\t\t\t\t|\n\t\t\t\t\t\tth\n\t\t\t\t\t\t\t| DEVICE TYPES\n\t\t\t\t\t\tth\n\t\t\t\t\t\t\t| OPTIONAL\n\t\t\t\t\t\tth\n\t\t\t\t\t\t\t| REQUIRED\n\t\t\t\t\t\tth\n\t\t\t\t\t\t\t| EXCLUDE\n\t\t\t\t\ttr(v-for=\"dt in sortedDeviceTypes\" :key=\"dt.id\" )\n\t\t\t\t\t\ttd\n\t\t\t\t\t\t\timg(:src=\"deviceTypeImageUrlByID(dt.id)\")\n\t\t\t\t\t\ttd.deviceTypeName\n\t\t\t\t\t\t\tspan(:title=\"`#${dt.id}: ${dt.shortName}`\")\n\t\t\t\t\t\t\t\tlabel {{ dt.fullName }} ({{dt.shortName}}) {{deviceTypeRadio[dt.shortName]}}\n\t\t\t\t\t\ttd.radiodiv\n\t\t\t\t\t\t\tinput(type=\"radio\" :id=\"dt.id + dt.shortName\" v-model=\"dt.filterDeviceType\" value=\"Optional\" @click=\"setShowDeviceType({ deviceTypeId: dt.id, filter:'Optional'})\")\n\t\t\t\t\t\ttd.radiodiv\n\t\t\t\t\t\t\tinput(type=\"radio\" :id=\"dt.id + dt.shortName\" v-model=\"dt.filterDeviceType\" value=\"Required\"\n\t\t\t\t\t\t\t@click=\"setShowDeviceType({ deviceTypeId: dt.id, filter:'Required'})\")\n\t\t\t\t\t\ttd.radiodiv\n\t\t\t\t\t\t\tinput(type=\"radio\" :id=\"dt.id + dt.shortName\" v-model=\"dt.filterDeviceType\" value=\"Exclude\"\n\t\t\t\t\t\t\t@click=\"setShowDeviceType({ deviceTypeId: dt.id, filter:'Exclude'})\")\n\n\t\t\t\t.flex.space-between.align-center\n\t\t\t\t\tlabel Show Empty Total Stations\n\t\t\t\t\ttoggle-switch(size=\"sm\" v-model=\"isEmptyTSVisible\" @input=\"ShowEmptyTS(isEmptyTSVisible)\")\n\n\t\t\t\tli.heading.center DEVICE STATUS\n\t\t\t\t\tinformation-tooltip.tooltip( text=`If one or more device types are specified as Required, then the Total Stations displayed will be filtered by the device status selected. Example: RSU is “Required” and status is marked “deployed,” then all Total Stations with deployed RSU will be displayed. If no device types are required, then the status of all device types will be compared against the selected status values.` )\n\t\t\t\t\t\ti.fas.fa-question-circle\n\n\t\t\t\t.statusDiv\n\t\t\t\t\t.tdwidth(v-for=\"(option, key) in deviceStatusLib\")\n\t\t\t\t\t\tinput.chkbox(type=\"checkbox\" :id=\"key\" :disabled=\"isNoDeviceSelected\" :value=\"option.selected\" v-model=\"option.selected\" @change=\"toggleDeviceStatus\")\n\t\t\t\t\t\tselect.formattedText(:style=\"'appearance:none;width:15px;height:15px;margin:5px;background-color:'+ option.color\")\n\t\t\t\t\t\tspan\n\t\t\t\t\t\t\tlabel {{option.formattedText}}\n\n\t\t\t\tbr\n\t\t\t\tli.heading INFRASTRUCTURE OWNER\n\t\t\t\t\tinformation-tooltip( text=`All filters work in conjunction with each other. Specifying an Infrastructure Owner will filter the list of Total Stations having devices with the selected owner.` )\n\t\t\t\t\t\t\ti.fas.fa-question-circle\n\n\t\t\t\t\tselect.input(\tid=\"clientowner\" :style=\"'width:135px; margin-left:15px;'\"\n\t\t\t\t\t\t\t\tname=\"clientowner\"\n\t\t\t\t\t\t\t\tv-model.number=\"infrastructureOwnerId\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\toption(value=\"0\" :disabled=\"isNoDeviceSelected\") All Owners\n\t\t\t\t\t\toption(v-for=\"option in clients\" :value=\"option.clientid\") {{ option.clientname }}\n\t\t\t\tbr\n\t\t\t\tli.heading INFRASTRUCTURE OPERATOR\n\t\t\t\t\tinformation-tooltip( text=`All filters work in conjunction with each other. Specifying an Infrastructure Operator will filter the list of Total Stations having devices with the selected operator.` )\n\t\t\t\t\t\t\ti.fas.fa-question-circle\n\t\t\t\t\tselect.input(\tid=\"clientoperator\" :style=\"'width:135px; '\"\n\t\t\t\t\t\t\tname=\"clientoperator\"\n\t\t\t\t\t\t\tv-model.number=\"infrastructureOperatorId\"\n\t\t\t\t\t\t\t:options=\"clients\")\n\t\t\t\t\t\toption(value=\"0\" :disabled=\"isNoDeviceSelected\") All Operators\n\t\t\t\t\t\toption(v-for=\"option in clients\" :value=\"option.clientid\") {{ option.clientname }}\n\n\t\t\t\tbr\n\t\t\t\tli.heading PROJECT NUMBER\n\t\t\t\t\tinformation-tooltip( text=`List of Total Stations which includes devices with the added project number.` )\n\t\t\t\t\t\t\ti.fas.fa-question-circle\n\t\t\t\t\tinput.input(type=\"text\" v-model=\"projectId\" @change=\"setProjectId\" :style=\"'width:135px; margin-left:70px'\")\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeFilter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeviceTypeFilter.vue?vue&type=template&id=5a5d3a3a&scoped=true&lang=pug&\"\nimport script from \"./DeviceTypeFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./DeviceTypeFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DeviceTypeFilter.vue?vue&type=style&index=0&id=5a5d3a3a&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a5d3a3a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=style&index=0&id=3d19847d&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=style&index=0&id=3d19847d&lang=stylus&scoped=true&\"","(function() {\n\tif (typeof window.CustomEvent === \"function\") return false;\n\n\tfunction CustomEvent(event, params) {\n\t\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\n\t\tvar evt = document.createEvent(\"CustomEvent\");\n\t\tevt.initCustomEvent(\n\t\t\tevent,\n\t\t\tparams.bubbles,\n\t\t\tparams.cancelable,\n\t\t\tparams.detail\n\t\t);\n\t\treturn evt;\n\t}\n\n\tCustomEvent.prototype = window.Event.prototype;\n\n\twindow.CustomEvent = CustomEvent;\n})();\n","module.exports = \"data:image/png;base64,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\"","import Vue from \"vue\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\n\nconst MODULE_NAME = \"tim\";\n\nconst MUTATION_TYPES = {\n\tSET_CONTENT_TYPES: \"SET_CONTENT_TYPES\",\n\tSET_FRAME_TYPES: \"SET_FRAME_TYPES\",\n\tSET_AREA_TYPES: \"SET_AREA_TYPES\",\n\tSET_ITIS_CODES: \"SET_ITIS_CODES\",\n\tSET_ROAD_SURFACE_DESCRIPTIONS: \"SET_ROAD_SURFACE_DESCRIPTIONS\",\n\tADD_CONTENT_TYPES: \"ADD_CONTENT_TYPES\",\n\tADD_FRAME_TYPES: \"ADD_FRAME_TYPES\",\n\tADD_AREA_TYPES: \"ADD_AREA_TYPES\",\n\tCLEAR_CONTENT_TYPES: \"CLEAR_CONTENT_TYPES\",\n\tCLEAR_FRAME_TYPES: \"CLEAR_FRAME_TYPES\",\n\tCLEAR_AREA_TYPES: \"CLEAR_AREA_TYPES\"\n};\n\nconst ACTION_TYPES = {\n\tFETCH_CONTENT_TYPES: \"FETCH_CONTENT_TYPES\",\n\tFETCH_FRAME_TYPES: \"FETCH_FRAME_TYPES\",\n\tFETCH_AREA_TYPES: \"FETCH_AREA_TYPES\",\n\tFETCH_ITIS_CODES: \"FETCH_ITIS_CODES\",\n\tFETCH_ROAD_SURFACE_DESCRIPTIONS: \"FETCH_ROAD_SURFACE_DESCRIPTIONS\"\n};\n\nconst appendToArrayUnlessEmpty = (arr, o) => {\n\tif (_.isEmpty(o)) return;\n\tif (!Array.isArray(o)) o = [o];\n\treturn _.map(o, r => arr.push(r));\n};\n\n// DRY helper\nconst replaceArrayAtKeyGenerator = key => {\n\treturn (state, payload) => {\n\t\tVue.set(state, key, payload);\n\t};\n};\n\n// DRY helper\nconst appendToArrayAtKeyGenerator = key => {\n\treturn (state, payload) => {\n\t\tappendToArrayUnlessEmpty(state[key], payload);\n\t};\n};\n\n// DRY helper\nconst clearArrayAtKeyGenerator = key => {\n\treturn state => {\n\t\tVue.set(state, key, []);\n\t};\n};\n\nconst fetchAndMutateResult = (mutation, endpoint) => {\n\treturn context => {\n\t\treturn API.getJson(endpoint)\n\t\t\t.then(json => {\n\t\t\t\tcontext.commit(mutation, json);\n\t\t\t})\n\t\t\t.catch(err => console.error(err));\n\t};\n};\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\tstate: {\n\t\tcontentTypes: [],\n\t\tframeTypes: [],\n\t\tareaTypes: [],\n\t\titisCodes: [],\n\t\troadSurfaceDescriptions: []\n\t},\n\tmutations: {\n\t\t[MUTATION_TYPES.SET_CONTENT_TYPES]: replaceArrayAtKeyGenerator(\n\t\t\t\"contentTypes\"\n\t\t),\n\t\t[MUTATION_TYPES.SET_FRAME_TYPES]: replaceArrayAtKeyGenerator(\"frameTypes\"),\n\t\t[MUTATION_TYPES.SET_AREA_TYPES]: replaceArrayAtKeyGenerator(\"areaTypes\"),\n\t\t[MUTATION_TYPES.SET_ITIS_CODES]: replaceArrayAtKeyGenerator(\"itisCodes\"),\n\t\t[MUTATION_TYPES.ADD_CONTENT_TYPES]: appendToArrayAtKeyGenerator(\n\t\t\t\"contentTypes\"\n\t\t),\n\t\t[MUTATION_TYPES.ADD_FRAME_TYPES]: appendToArrayAtKeyGenerator(\"frameTypes\"),\n\t\t[MUTATION_TYPES.ADD_AREA_TYPES]: appendToArrayAtKeyGenerator(\"areaTypes\"),\n\t\t[MUTATION_TYPES.CLEAR_CONTENT_TYPES]: clearArrayAtKeyGenerator(\n\t\t\t\"contentTypes\"\n\t\t),\n\t\t[MUTATION_TYPES.CLEAR_FRAME_TYPES]: clearArrayAtKeyGenerator(\"frameTypes\"),\n\t\t[MUTATION_TYPES.CLEAR_AREA_TYPES]: clearArrayAtKeyGenerator(\"areaTypes\"),\n\t\t[MUTATION_TYPES.SET_ROAD_SURFACE_DESCRIPTIONS]: replaceArrayAtKeyGenerator(\n\t\t\t\"roadSurfaceDescriptions\"\n\t\t)\n\t},\n\tactions: {\n\t\t[ACTION_TYPES.FETCH_CONTENT_TYPES]: fetchAndMutateResult(\n\t\t\tMUTATION_TYPES.SET_CONTENT_TYPES,\n\t\t\tAPI.ENDPOINTS.GET_TIM_CONTENT_TYPE_LIST\n\t\t),\n\t\t[ACTION_TYPES.FETCH_FRAME_TYPES]: fetchAndMutateResult(\n\t\t\tMUTATION_TYPES.SET_FRAME_TYPES,\n\t\t\tAPI.ENDPOINTS.GET_TIM_FRAME_TYPE_LIST\n\t\t),\n\t\t[ACTION_TYPES.FETCH_AREA_TYPES]: fetchAndMutateResult(\n\t\t\tMUTATION_TYPES.SET_AREA_TYPES,\n\t\t\tAPI.ENDPOINTS.GET_TIM_AREA_TYPE_LIST\n\t\t),\n\t\t[ACTION_TYPES.FETCH_ITIS_CODES]: fetchAndMutateResult(\n\t\t\tMUTATION_TYPES.SET_ITIS_CODES,\n\t\t\tAPI.ENDPOINTS.GET_ITIS_CODE_LIST\n\t\t),\n\t\t[ACTION_TYPES.FETCH_ROAD_SURFACE_DESCRIPTIONS]: fetchAndMutateResult(\n\t\t\tMUTATION_TYPES.SET_ROAD_SURFACE_DESCRIPTIONS,\n\t\t\tAPI.ENDPOINTS.GET_ROAD_SURFACE_DESCRIPTIONS\n\t\t)\n\t},\n\tgetters: {\n\t\tcontentTypes: state => state.contentTypes,\n\t\tframeTypes: state => state.frameTypes,\n\t\tareaTypes: state => state.areaTypes,\n\t\titisCodes: state => state.itisCodes,\n\t\troadSurfaceDescriptions: state => state.roadSurfaceDescriptions\n\t}\n};\n","const svgs = {\n\tstraight: {\n\t\td: \"M 3 25 V 7 H 0 L 5.5 0 L 11 7 H 8 V 25 H 3\",\n\t\theight: 25,\n\t\twidth: 11,\n\t\ttransform: 0\n\t},\n\tleft: {\n\t\td:\n\t\t\t\"M 15 25 V 9 Q 15 3, 9 3 H 7 V 0 L 0 5 L 8 11 V 8 H 9 Q 10 8, 10 9 V 25 H 15\",\n\t\theight: 25,\n\t\twidth: 16,\n\t\ttransform: -4\n\t},\n\tright: {\n\t\td:\n\t\t\t\"M 0 25 V 9 Q 0 3, 6 3 H 8 V 0 L 15 5 L 8 11 V 8 H 6 Q 5 8, 5 9 V 25 H 0\",\n\t\theight: 25,\n\t\twidth: 16,\n\t\ttransform: 4\n\t}\n};\n\nexport default class Maneuver {\n\tleftTurnIds = [1, 4];\n\trightTurnIds = [2, 4];\n\tstraightThruIds = [0];\n\n\tmaneuverId;\n\n\tconstructor(maneuverId) {\n\t\tthis.maneuverId = maneuverId;\n\t}\n\n\t/**\n\t * Returns the svg for the maneuverId.\n\t */\n\tget svg() {\n\t\tswitch (this.maneuverType) {\n\t\t\tcase \"left\":\n\t\t\t\treturn svgs.left;\n\t\t\tcase \"right\":\n\t\t\t\treturn svgs.right;\n\t\t\tcase \"thru\":\n\t\t\t\treturn svgs.straight;\n\t\t\tdefault:\n\t\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tget maneuverType() {\n\t\tswitch (true) {\n\t\t\tcase this.leftTurnIds.indexOf(this.maneuverId) > -1:\n\t\t\t\treturn \"left\";\n\t\t\tcase this.rightTurnIds.indexOf(this.maneuverId) > -1:\n\t\t\t\treturn \"right\";\n\t\t\tcase this.straightThruIds.indexOf(this.maneuverId) > -1:\n\t\t\t\treturn \"thru\";\n\t\t\tdefault:\n\t\t\t\treturn \"\";\n\t\t}\n\t}\n\n\t/**\n\t * Essentially this an index that you can sort by, going from\n\t * smallest to largest, will place the maneuver in left, thru or right\n\t * positions.\n\t */\n\tget placement() {\n\t\tswitch (this.maneuverType) {\n\t\t\tcase \"left\":\n\t\t\t\treturn 0;\n\t\t\tcase \"right\":\n\t\t\t\treturn 1;\n\t\t\tcase \"thru\":\n\t\t\t\treturn 2;\n\t\t\tdefault:\n\t\t\t\treturn -1;\n\t\t}\n\t}\n}\n","import _ from \"lodash\";\nimport * as L from \"leaflet\";\nimport Maneuver from \"@/models/Maneuver\";\n\nexport default class Lane {\n\tconnectTos = [];\n\tisEnabled = true;\n\tlaneDirectionDesc = \"\";\n\tlaneId = -1;\n\tlaneNumber = -1;\n\tlaneSharingIds = [];\n\tlaneTypeAttributeIds = [];\n\tlaneTypeId = -1;\n\tmaneuvers = [];\n\tnodes = [];\n\troadName = \"\";\n\tsignalGroups = [];\n\n\tconstructor(args) {\n\t\tif (typeof args[\"connectTos\"] === \"object\") {\n\t\t\tthis.connectTos = _.map(\n\t\t\t\targs[\"connectTos\"],\n\t\t\t\tconnectTo => new ConnectTo(connectTo)\n\t\t\t);\n\t\t}\n\n\t\tif (args[\"isEnabled\"] && args[\"isEnabled\"] === false) {\n\t\t\tthis.isEnabled = false;\n\t\t}\n\n\t\tif (args[\"laneDirectionDesc\"]) {\n\t\t\tthis.laneDirectionDesc = args[\"laneDirectionDesc\"].toString();\n\t\t}\n\n\t\tif (typeof args[\"laneId\"] === \"number\") {\n\t\t\tthis.laneId = args[\"laneId\"];\n\t\t}\n\n\t\tif (typeof args[\"laneNumber\"] === \"number\") {\n\t\t\tthis.laneNumber = args[\"laneNumber\"];\n\t\t}\n\n\t\tif (typeof args[\"laneSharingIds\"] === \"object\") {\n\t\t\tthis.laneSharingIds = args[\"laneSharingIds\"];\n\t\t}\n\n\t\tif (typeof args[\"laneTypeAtrributeIds\"] === \"object\") {\n\t\t\tthis.laneTypeAttributeIds = args[\"laneTypeAttributeIds\"];\n\t\t}\n\n\t\tif (typeof args[\"laneTypeId\"] === \"number\") {\n\t\t\tthis.laneTypeId = args[\"laneTypeId\"];\n\t\t}\n\n\t\tif (typeof args[\"maneuverIds\"] === \"object\") {\n\t\t\tthis.maneuvers = _.map(args[\"maneuverIds\"], id => new Maneuver(id));\n\t\t\tthis.maneuvers = this.maneuvers.sort(this.sortManeuvers);\n\t\t}\n\n\t\tif (typeof args[\"nodes\"] === \"object\") {\n\t\t\tlet enabledNodes = _.filter(args[\"nodes\"], node => node.isEnabled);\n\t\t\tthis.nodes = _.map(enabledNodes, node => {\n\t\t\t\treturn new L.LatLng(node[\"latitude\"], node[\"longitude\"]);\n\t\t\t});\n\t\t}\n\n\t\tif (args[\"roadName\"]) {\n\t\t\tthis.roadName = args[\"roadName\"].toString();\n\t\t}\n\n\t\t// TODO: Check this is correct\n\t\tif (this.connectTos.length > 0) {\n\t\t\t_.each(this.connectTos, connectTo => {\n\t\t\t\tconst signalGroupId = connectTo.signalGroupId;\n\t\t\t\tconst maneuverId = connectTo.maneuverId;\n\n\t\t\t\tconst indexInArray = _.map(\n\t\t\t\t\tthis.signalGroups,\n\t\t\t\t\tgroup => group.signalGroupId\n\t\t\t\t).indexOf(signalGroupId);\n\n\t\t\t\tif (indexInArray === -1) {\n\t\t\t\t\tthis.signalGroups.push(new SignalGroup(signalGroupId, [maneuverId]));\n\t\t\t\t} else {\n\t\t\t\t\tthis.signalGroups[indexInArray].addManeuverId(maneuverId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tsortManeuvers(a, b) {\n\t\treturn a.placement - b.placement;\n\t}\n}\n\nclass ConnectTo {\n\tgeoJSON = \"\";\n\tlaneId = -1;\n\tmaneuverId = -1;\n\tsignalGroupId = -1;\n\n\tconstructor(args) {\n\t\tif (args[\"connectToGeoJSON\"]) {\n\t\t\tthis.geoJSON = args[\"connectToGeoJSON\"];\n\t\t}\n\n\t\tif (typeof args[\"connectToLaneId\"] === \"number\") {\n\t\t\tthis.laneId = args[\"connectToLaneId\"];\n\t\t}\n\n\t\tif (typeof args[\"connectToManeuverId\"] === \"number\") {\n\t\t\tthis.maneuverId = args[\"connectToManeuverId\"];\n\t\t}\n\n\t\tif (typeof args[\"connectToSignalGroupId\"] === \"number\") {\n\t\t\tthis.signalGroupId = args[\"connectToSignalGroupId\"];\n\t\t}\n\t}\n}\n\nclass SignalGroup {\n\tsignalGroupId = -1;\n\tmaneuverIds = [];\n\n\tconstructor(signalGroupId, maneuverIds) {\n\t\tthis.signalGroupId = signalGroupId;\n\t\tthis.maneuverIds = maneuverIds;\n\t}\n\n\taddManeuverId(id) {\n\t\tthis.maneuverIds.push(id);\n\t}\n}\n","import Vue from \"vue\";\n// import * as L from \"leaflet\";\nimport _ from \"lodash\";\nimport API from \"@/api/index\";\nimport Lane from \"@/models/Lane\";\n\nconst MODULE_NAME = \"intersection\";\n\nconst MUTATION_TYPES = {\n\tUPDATE_INTERSECTION: \"UPDATE_INTERSECTION\",\n\tUPDATE_LANES: \"UPDATE_LANES\"\n};\n\nconst ACTION_TYPES = {\n\tLOAD_INTERSECTION: \"LOAD_INTERSECTION\",\n\tLOAD_LANES: \"LOAD_LANES\"\n};\n\nlet retryCount = 0;\n\nexport default {\n\tMODULE_NAME,\n\tMUTATION_TYPES,\n\tACTION_TYPES,\n\tnamespaced: true,\n\tstate: {\n\t\tintersections: {}\n\t},\n\tmutations: {\n\t\t[MUTATION_TYPES.UPDATE_INTERSECTION](state, payload) {\n\t\t\tif (!(payload && _.isObject(payload))) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_INTERSECTION}: Invalid or missing payload.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst data =\n\t\t\t\t(!_.isUndefined(payload.intersection) && payload.intersection) ||\n\t\t\t\t(!_.isUndefined(payload.data) && payload.data) ||\n\t\t\t\tpayload;\n\t\t\tconst intersectionId =\n\t\t\t\tdata.intersectionid ||\n\t\t\t\tdata.intersectionId ||\n\t\t\t\tdata.IntersectionId ||\n\t\t\t\tpayload.intersectionId ||\n\t\t\t\tpayload.IntersectionId ||\n\t\t\t\tpayload.id;\n\t\t\tif (!intersectionId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_INTERSECTION}: Invalid or missing intersection id.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tVue.set(state.intersections, intersectionId, data);\n\t\t},\n\t\t[MUTATION_TYPES.UPDATE_LANES](state, payload) {\n\t\t\tif (!(payload && _.isObject(payload))) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${MODULE_NAME}/${MUTATION_TYPES.UPDATE_INTERSECTION}: Invalid or missing payload.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst intersectionId = payload[\"intersectionId\"];\n\t\t\tconst lanes = _.map(payload[\"lanes\"], lane => new Lane(lane));\n\t\t\tVue.set(state.intersections, intersectionId, {\n\t\t\t\t...state.intersections[intersectionId],\n\t\t\t\tlanes\n\t\t\t});\n\t\t}\n\t},\n\tactions: {\n\t\t[ACTION_TYPES.LOAD_INTERSECTION](context, payload) {\n\t\t\tconst intersectionId = parseInt(\n\t\t\t\t_.isObject(payload)\n\t\t\t\t\t? payload.intersectionid ||\n\t\t\t\t\t\t\tpayload.intersectionId ||\n\t\t\t\t\t\t\tpayload.IntersectionId ||\n\t\t\t\t\t\t\tpayload.id\n\t\t\t\t\t: payload,\n\t\t\t\t10\n\t\t\t);\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (!intersectionId) {\n\t\t\t\t\treturn reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}/${ACTION_TYPES.LOAD_INTERSECTION}: Invalid or missing intersection id.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (_.isUndefined(context.getters.byIdentifier(intersectionId))) {\n\t\t\t\t\t// Hit API\n\t\t\t\t\treturn resolve(\n\t\t\t\t\t\tAPI.getWithParamsJson(\n\t\t\t\t\t\t\tAPI.ENDPOINTS.SELECT_INTERSECTION_BY_INTERSECTION_ID,\n\t\t\t\t\t\t\t{ intersectionId },\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\te => {\n\t\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn resolve(context.getters.byIdentifier(intersectionId));\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (_.isEmpty(result)) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${MODULE_NAME}.${ACTION_TYPES.LOAD_INTERSECTION}: Falsy server response for intersectionId \"${intersectionId}\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.warn(e);\n\t\t\t\t\treturn { intersectionId, intersection: null };\n\t\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (_.isArray(result)) result = result[0];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontext.commit(`${MUTATION_TYPES.UPDATE_INTERSECTION}`, result);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(\"LOAD_INTERSECTION\", e, intersectionId, result);\n\t\t\t\t\t}\n\t\t\t\t\treturn context.getters.byIdentifier(intersectionId);\n\t\t\t\t});\n\t\t},\n\t\t// Payload is intersection id as int.\n\t\tasync [ACTION_TYPES.LOAD_LANES](context, intersectionId) {\n\t\t\tif (typeof intersectionId != \"number\" || intersectionId < 0) {\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\"Invalid payload. Payload must be intersection id as an integer.\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If intersection hass not previously been loaded\n\t\t\t// then first load intersection requested.\n\t\t\tif (!context.state.intersections[intersectionId]) {\n\t\t\t\tawait context.actions.ACTION_TYPES.LOAD_INTERSECTION(intersectionId);\n\t\t\t}\n\n\t\t\tconst maxRetries = 5;\n\t\t\tconst retryInterval = 1000;\n\t\t\ttry {\n\t\t\t\treturn API.getWithParamsJson(\n\t\t\t\t\tAPI.ENDPOINTS.GET_LANES_BY_INTERSECTION_ID,\n\t\t\t\t\t{ intersectionId },\n\t\t\t\t\t{},\n\t\t\t\t\terror => Promise.reject(error)\n\t\t\t\t)\n\t\t\t\t\t.then(data => {\n\t\t\t\t\t\tretryCount = 0;\n\t\t\t\t\t\tcontext.commit(`${MUTATION_TYPES.UPDATE_LANES}`, {\n\t\t\t\t\t\t\tintersectionId,\n\t\t\t\t\t\t\tlanes: data\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => console.error(error));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(e);\n\t\t\t\tif (retryCount < maxRetries) {\n\t\t\t\t\tretryCount++;\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t() => context.actions(`${ACTION_TYPES.LOAD_LANES}`, intersectionId),\n\t\t\t\t\t\tretryInterval\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetters: {\n\t\tall(state) {\n\t\t\treturn state.intersections;\n\t\t},\n\t\tbyIdentifier(state) {\n\t\t\treturn intersectionId => state.intersections[intersectionId];\n\t\t}\n\t}\n};\n","import _ from \"lodash\";\nimport store from \"@/store\";\n\n// TODO: someday, this will probably need to be retrieved from the database\n\nconst TS_DEVICE_TYPE = 0;\nconst RSU_DEVICE_TYPE = 1;\nconst TSC_DEVICE_TYPE = 2;\nconst ESS_DEVICE_TYPE = 3;\n\nconsole.warn(\n\t\"The `device-types` module has been deprecated and is no longer reliable or guaranteed to have correct data. If you need access to the same data, please see the `device-manager` Vuex store module.\"\n);\n\nconst initialDeviceTypes = {\n\t3: {\n\t\tshortName: \"ESS\",\n\t\tname: \"Environmental Sensor Station\",\n\t\ticon: \"fa-cloud\",\n\t\tdisabled: false\n\t},\n\t4: {\n\t\tshortName: \"NWS\",\n\t\tname: \"National Weather Station\",\n\t\ticon: \"fa-cloud\",\n\t\tdisabled: true\n\t},\n\t5: {\n\t\tshortName: \"SPL\",\n\t\tname: \"Snowplows\",\n\t\ticon: \"fa-snowflake\",\n\t\tdisabled: true\n\t},\n\t6: {\n\t\tshortName: \"NEC\",\n\t\tname: \"Network Edge Computing\",\n\t\ticon: \"fa-microchip\",\n\t\tdisabled: true\n\t},\n\t// 7: {\n\t// \tshortName: \"ESS\",\n\t// \tname: \"Environmental Sensor Station\",\n\t// \ticon: \"fa-sun\",\n\t// \tdisabled: false\n\t// },\n\t8: {\n\t\tshortName: \"DMS\",\n\t\tname: \"Dynamic Message Sign\",\n\t\ticon: \"fa-sign\",\n\t\tdisabled: true\n\t},\n\t9: {\n\t\tshortName: \"CCTV\",\n\t\tname: \"Closed-Circuit TV\",\n\t\ticon: \"fa-video\",\n\t\tdisabled: true\n\t},\n\t10: {\n\t\tshortName: \"VDS\",\n\t\tname: \"Vehicle Detection Station\",\n\t\ticon: \"fa-car\",\n\t\tdisabled: true\n\t},\n\t11: {\n\t\tshortName: \"WIM\",\n\t\tname: \"Weigh in Motion\",\n\t\ticon: \"fa-weight\",\n\t\tdisabled: true\n\t},\n\t12: {\n\t\tshortName: \"OBU\",\n\t\tname: \"On-Board Unit\",\n\t\ticon: \"fa-assistive-listening-systems\",\n\t\tdisabled: true\n\t},\n\t13: {\n\t\tshortName: \"FVU\",\n\t\tname: \"Field Verification Unit\",\n\t\ticon: \"fa-clipboard-check\"\n\t},\n\t14: {\n\t\tshortName: \"RWIS\",\n\t\tname: \"Road Weather Information Service?\",\n\t\tdisabled: true,\n\t\ticon: \"fa-cloud\"\n\t},\n\t15: {\n\t\tshortName: \"TFMP\",\n\t\tname: \"TFM Mobile Platform\",\n\t\ticon: \"fa-upload\",\n\t\tdisabled: true\n\t}\n};\n\n// initialDeviceTypes[TS_DEVICE_TYPE] = {\n// \tshortName: \"TS\",\n// \tname: \"Total Station\",\n// \ticon: \"fa-wifi\",\n// \tisAddable: false,\n// \tmoduleName: \"ts\"\n// };\n\ninitialDeviceTypes[RSU_DEVICE_TYPE] = {\n\tshortName: \"RSU\",\n\tname: \"Roadside Unit\",\n\ticon: \"fa-broadcast-tower\",\n\tisAddable: true,\n\tmoduleName: \"rsu\"\n};\n\ninitialDeviceTypes[TSC_DEVICE_TYPE] = {\n\tshortName: \"TSC\",\n\tname: \"Traffic Signal Controller\",\n\ticon: \"fa-traffic-light\",\n\tisAddable: true,\n\tmoduleName: \"tsc\"\n};\n\ninitialDeviceTypes[ESS_DEVICE_TYPE] = {\n\tshortName: \"ESS\",\n\tname: \"Environmental Sensor Station\",\n\ticon: \"fa-cloud\",\n\tisAddable: true,\n\tmoduleName: \"ess\"\n};\n\nconst deviceTypes = _.mapValues(initialDeviceTypes, dt =>\n\tObject.assign({}, dt, {\n\t\tmoduleName: dt.moduleName || dt.shortName.toLowerCase()\n\t})\n);\n\nfunction deviceTypeModuleName(deviceTypeId) {\n\tconst d = deviceTypes[deviceTypeId];\n\tif (!d) return false;\n\treturn d.moduleName || d.shortName.toLowerCase();\n}\n\nfunction deviceTypeModule(deviceTypeId) {\n\tconst d = deviceTypes[deviceTypeId];\n\tif (!d) return false;\n\treturn store._modules.root._children[deviceTypeModuleName(deviceTypeId)];\n}\n\nfunction doesDeviceHaveModule(deviceTypeId) {\n\treturn !!deviceTypeModule(deviceTypeId);\n}\n\nexport {\n\tTS_DEVICE_TYPE,\n\tRSU_DEVICE_TYPE,\n\tTSC_DEVICE_TYPE,\n\tESS_DEVICE_TYPE,\n\tdeviceTypeModuleName,\n\tdeviceTypeModule,\n\tdoesDeviceHaveModule,\n\tdeviceTypes\n};\nexport default deviceTypes;\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TfmMap.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TfmMap.vue?vue&type=style&index=0&lang=stylus&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=style&index=0&lang=stylus&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[(_vm.label)?_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.label))]):_vm._e(),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model),expression:\"model\"}],staticClass:\"input\",class:{ 'border-error': _vm.error },attrs:{\"id\":_vm.id,\"name\":_vm.name,\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.model=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"disabled\":_vm.defaultDisabled},domProps:{\"value\":_vm.defaultValue}},[_vm._v(_vm._s(_vm.defaultLabel || _vm.defaultValue))]),_vm._l((_vm.options),function(option){return _c('option',{domProps:{\"value\":option[_vm.optionValueKey]}},[_vm._v(_vm._s(option[_vm.optionLabelKey]))])})],2),(_vm.error)?_c('span',{staticClass:\"is-error\"},[_vm._v(_vm._s(_vm.error))]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t.field\n\t\tlabel(v-if=\"label\" :for=\"id\") {{ label }}\n\t\tselect.input(\n\t\t\t:id=\"id\"\n\t\t\t:name=\"name\"\n\t\t\tv-model=\"model\"\n\t\t\t:class=\"{ 'border-error': error }\"\n\t\t\t:disabled=\"disabled\"\n\t\t)\n\t\t\toption(:value=\"defaultValue\" :disabled=\"defaultDisabled\") {{ defaultLabel || defaultValue }}\n\t\t\toption(v-for=\"option in options\" :value=\"option[optionValueKey]\") {{ option[optionLabelKey] }}\n\t\tspan.is-error(v-if=\"error\") {{ error }}\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InputSelect.vue?vue&type=template&id=b4e06216&lang=pug&\"\nimport script from \"./InputSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./InputSelect.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import StoreModule from \"./store_module\";\nimport _ from \"lodash\";\nimport Vue from \"vue\";\n\n// The name of this store module.\nconst name = \"mot\";\n\nconst actions = {\n\tSET_MOT_VARIABLE: ({ commit }, { name, payload }) =>\n\t\tcommit(\"SET_MOT_VARIABLE\", { name, payload }),\n\tSET_MOT_VM: ({ commit }, { name, payload }) =>\n\t\tcommit(\"SET_MOT_VM\", { name, payload }),\n\tSET_SITEBAR_LIST: ({ commit }, payload) => commit(\"SET_SITEBAR_LIST\", payload)\n};\nconst mutations = {\n\tSET_TITLE(state, payload) {\n\t\tstate.MOTtitle = payload;\n\t},\n\tSET_MOT_ViewModal(state, payload) {\n\t\tstate.MOTViewModal = payload;\n\t},\n\tSET_MOT_ID(state, payload) {\n\t\tstate.MOTId = payload;\n\t},\n\tSET_PROJECT_ID(state, payload) {\n\t\tstate.ProjectId = payload;\n\t},\n\tSET_PROJECT_NUM(state, payload) {\n\t\tstate.ProjectNum = payload;\n\t},\n\tSET_MOT_STATUS(state, payload) {\n\t\tstate.MOTStatus = payload;\n\t},\n\tSET_MOT_START_YEAR(state, payload) {\n\t\tlet startyear = payload;\n\t\tstartyear = new Date(parseInt(startyear), 0, 1);\n\t\tstate.MOTConstructionStartYear = startyear;\n\t},\n\tSET_MOT_END_YEAR(state, payload) {\n\t\tlet endyear = payload;\n\t\tendyear = new Date(parseInt(endyear), 11, 31);\n\t\tstate.MOTConstructionEndYear = endyear;\n\t},\n\tSET_MOT_DATA(state, payload) {\n\t\tstate.MOTData = payload;\n\t},\n\n\tSET_COMPONENT(state, payload) {\n\t\tVue.set(state, \"MOTcomponent\", payload);\n\t},\n\tSET_ISAPPROVED_FLAG(state, payload) {\n\t\tstate.MOTIsApprovedFlag = payload;\n\t},\n\tSET_TEXT_TITLE(state, payload) {\n\t\tstate.MOTtextTitle = payload;\n\t},\n\tSET_NAVIGATION_ID(state, payload) {\n\t\tstate.MOTnavigationId = payload;\n\t},\n\tSET_MOT_INFO_UPDATING_FLAG(state, payload) {\n\t\tstate.MOTInfoUpdatingFlag = payload;\n\t},\n\tSET_SITEBAR_LIST(state, payload) {\n\t\tstate.MOTsidebarList = payload;\n\t},\n\tSET_SECTION_VAR(state, payload) {\n\t\tstate.MOTSectionVariable = payload;\n\t},\n\tSET_MOT_TABLE_DATA(state, { name, payload }) {\n\t\tVue.set(state.MOTViewModal, name, payload);\n\t},\n\n\tSET_MOT_VM(state, { name, payload }) {\n\t\tVue.set(state.MOTViewModal, name, payload);\n\t}\n};\nconst getters = {\n\tMOTId: state => state.MOTId,\n\tProjectId: state => state.ProjectId,\n\tProjectNum: state => state.ProjectNum,\n\tMOTStatus: state => state.MOTStatus,\n\tMOTConstructionStartYear: state => state.MOTConstructionStartYear,\n\tMOTConstructionEndYear: state => state.MOTConstructionEndYear,\n\tMOTtitle: state => state.MOTtitle,\n\tMOTsidebarList: state => state.MOTsidebarList,\n\tMOTcomponent: state => state.MOTcomponent,\n\tMOTData: state => state.MOTData,\n\tMOTInfoUpdatingFlag: state => state.MOTInfoUpdatingFlag,\n\tMOTSectionVariable: state => state.MOTSectionVariable,\n\tMOTIsApprovedFlag: state => state.MOTIsApprovedFlag,\n\tMOTtextTitle: state => state.MOTtextTitle,\n\tMOTnavigationId: state => state.MOTnavigationId,\n\tMOTViewModal: state => state.MOTViewModal\n};\nconst initialState = {\n\tMOTtitle: null,\n\tMOTsidebarList: {},\n\tMOTData: null,\n\tMOTSectionVariable: null,\n\tMOTIsApprovedFlag: null,\n\tMOTtextTitle: null,\n\tMOTnavigationId: null,\n\tMOTId: 0,\n\tProjectId: 0,\n\tProjectNum: null,\n\tMOTStatus: null,\n\tMOTConstructionStartYear: null,\n\tMOTConstructionEndYear: null,\n\tMOTViewModal: {},\n\tMOTInfoUpdatingFlag: false\n};\n\nconst Mot = new StoreModule(\n\tname,\n\tmutations,\n\tactions,\n\tgetters,\n\t_.cloneDeep(initialState)\n);\n\nexport default Mot;\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WindowManager.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WindowManager.vue?vue&type=style&index=0&lang=stylus&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=5f1b22af&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=5f1b22af&lang=stylus&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&lang=stylus&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&lang=stylus&\"","const deviceStatusLib = {\n\tProposed: {\n\t\tId: 1,\n\t\tcolor: \"#ccc\",\n\t\tstatus: \"Proposed\",\n\t\tformattedText: \"Proposed\"\n\t},\n\tTFMApproval: {\n\t\tId: 2,\n\t\tcolor: \"#fade44\",\n\t\tstatus: \"TFMApproval\",\n\t\tformattedText: \"TFM Approval\"\n\t},\n\tDeployed: {\n\t\tId: 3,\n\t\tcolor: \"#0c3\",\n\t\tstatus: \"Deployed\",\n\t\tformattedText: \"Deployed\"\n\t},\n\tMaintenance: {\n\t\tId: 4,\n\t\tcolor: \"#4cf\",\n\t\tstatus: \"Maintenance\",\n\t\tformattedText: \"In Maintenance\"\n\t},\n\tRemoved: {\n\t\tId: 5,\n\t\tcolor: \"\",\n\t\tstatus: \"Removed\",\n\t\tformattedText: \"Removed\"\n\t}\n};\n\nexport default deviceStatusLib;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('l-control',{staticClass:\"leaflet-control-pan\",attrs:{\"position\":_vm.position}},[_c('div',{attrs:{\"id\":\"matrix-container\"}},_vm._l((3),function(i){return _c('div',{staticClass:\"matrix matrix-row\"},_vm._l((3),function(j){return _c('div',{staticClass:\"matrix matrix-col\"},[(_vm.isValidButtonPlacement(i, j))?_c('button',{staticClass:\"leaflet-control-pan-up\",attrs:{\"direction-index\":_vm.directionIndexFromIndices(i, j)},on:{\"click\":function($event){return _vm.handleClick($event)}}},[_c('i',{class:_vm.iconClass(_vm.directionIndexFromIndices(i, j))})]):_vm._e()])}),0)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nl-control(:position=\"position\" class=\"leaflet-control-pan\")\n\t//- 3x3 div matrix\n\tdiv(id=\"matrix-container\")\n\t\tdiv(v-for=\"i in 3\" class=\"matrix matrix-row\")\n\t\t\tdiv(v-for=\"j in 3\" class=\"matrix matrix-col\")\n\t\t\t\tbutton(v-if=\"isValidButtonPlacement(i, j)\"\n\t\t\t\t\tclass=\"leaflet-control-pan-up\"\n\t\t\t\t\t:direction-index=\"directionIndexFromIndices(i, j)\"\n\t\t\t\t\t@click=\"handleClick($event)\")\n\t\t\t\t\ti(:class=\"iconClass(directionIndexFromIndices(i, j))\")\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPanControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPanControl.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapPanControl.vue?vue&type=template&id=39d3ef7e&scoped=true&lang=pug&\"\nimport script from \"./MapPanControl.vue?vue&type=script&lang=js&\"\nexport * from \"./MapPanControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapPanControl.vue?vue&type=style&index=0&id=39d3ef7e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39d3ef7e\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}