{"version":3,"sources":["./src/app/aoi-tool/aoi-tool.component.html","./src/app/app.component.html","./src/app/home/home.component.html","./src/app/nav-menu/nav-menu.component.html","./src/$_lazy_route_resource lazy namespace object","./src/app/aoi-tool/aoi-tool.component.css","./src/app/aoi-tool/aoi-tool.component.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/home/home.component.css","./src/app/home/home.component.ts","./src/app/nav-menu/nav-menu.component.css","./src/app/nav-menu/nav-menu.component.ts","./src/main.ts","fs (ignored)","crypto (ignored)","stream (ignored)"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Loading...
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n \\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Select a segment at Lat/Long {{lat}}/{{long}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
RMS KeyDirectionDistance
{{ crs.stateRouteNumber }} ({{ crs.routeName }}), Segment: {{ crs.segmentNumber }}NorthEastSouthWestBoth{{ crs.distance.toFixed(2) }} ft.
\\r\\n
\\r\\n
\\r\\n Intersecting Local Roads: \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Intersecting StreetIntersection Type
{{localinx.streetNameIXN}}{{localinx.intersectionType}} Intersection
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
No Segment Data is Available for this Location.
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Segment Data - {{segmentTitle}}
\\r\\n Offset\\r\\n \\r\\n Survey Date\\r\\n \\r\\n Latitude\\r\\n \\r\\n Longitude\\r\\n
{{segment.offset}}{{segment.date}}{{segment.latSig}}{{segment.longSig}}
\\r\\n
\\r\\n
\\r\\n
No admin data is available for this segment.
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Admin Data
Segment Length (ft){{adminData.segLen}}
Interstate Network{{adminData.networkInd}}
Municipality{{adminData.municName}}
Street Name{{adminData.streetName}}
Direction{{adminData.dirText}}
One or Two Way{{adminData.oneTwoWayInd}}
Urban or Rural Area{{adminData.urbanRuralDesc}}
Divisor Type{{adminData.divsrTypeDesc}}
Divisor Average Width (ft){{adminData.divisorWidth}}
Milepost{{adminData.milepost}}
Average Annual Daily Traffic{{adminData.avgAnnualDailyTraffic}}
Percentage of Trucks{{adminData.percentageTrucks}}
Speed Limit{{adminData.speedLimit}}
Number of Lanes{{adminData.lanesCount}}
Total Pavement Width (ft){{adminData.totalPavementWidth}}
Pavement Width (ft) of Right Shoulder{{adminData.rightShoulderPavementWidth}}
Total Width (ft) of Right Shoulder{{adminData.rightShoulderTotalWidth}}
Pavement Width (ft) of Left Shoulder{{adminData.leftShoulderPavementWidth}}
Total Width (ft) of Left Shoulder{{adminData.leftShoulderTotalWidth}}
\\r\\n
\\r\\n
\\r\\n
No pavement condition data is available for this segment.
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Pavement Conditions
Pavement TypeBituminous
Survey Date{{pavementData.bitSurveyDate}}
Rough Average & Rutting (ft)
Rough Average (IRI){{pavementData.bitRoughAvg}}
Right Low{{pavementData.bitRuttingRightLow}}
Right Medium{{pavementData.bitRuttingRightMedium}}
Right High{{pavementData.bitRuttingRightHigh}}
Left Low{{pavementData.bitRuttingLeftLow}}
Left Medium{{pavementData.bitRuttingLeftMedium}}
Left High{{pavementData.bitRuttingLeftHigh}}
Fatigue Cracking (ft)
Low{{pavementData.bitFatigueCrackingLow}}
Medium{{pavementData.bitFatigueCrackingMedium}}
High{{pavementData.bitFatigueCrackingHigh}}
Transverse Cracking
Low Count{{pavementData.bitTCLowCount}}
Low (ft){{pavementData.bitTCLow}}
Medium Count{{pavementData.bitTCMediumCount}}
Medium (ft){{pavementData.bitTCMedium}}
High Count{{pavementData.bitTCHighCount}}
High (ft){{pavementData.bitTCHigh}}
Miscellaneous Cracking (ft)
Low{{pavementData.bitMiscCrackingLow}}
Medium{{pavementData.bitMiscCrackingMedium}}
High{{pavementData.bitMiscCrackingHigh}}
Edge Deterioration (ft)
Low{{pavementData.bitEdgeDeteriorationLow}}
Medium{{pavementData.bitEdgeDeteriorationMedium}}
High{{pavementData.bitEdgeDeteriorationHigh}}
Bituminous Patching
Count{{pavementData.bitPatchCount}}
Area Sq Ft{{pavementData.bitPatchArea}}
Raveling/Weathering (ft)
Medium{{pavementData.bitWeatherMedium}}
High{{pavementData.bitWeatherHigh}}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Pavement Conditions
Pavement TypeConcrete
Survey Date{{pavementData.concSurveyDate}}
Rough Average & Rutting (ft)
Rough Average (IRI){{pavementData.concRoughAvg}}
Right Low{{pavementData.concRuttingRightLow}}
Right Medium{{pavementData.concRuttingRightMedium}}
Right High{{pavementData.concRuttingRightHigh}}
Left Low{{pavementData.concRuttingLeftLow}}
Left Medium{{pavementData.concRuttingLeftMedium}}
Left High{{pavementData.concRuttingLeftHigh}}
Faulted Joints Count
Medium{{pavementData.concFaultJointMedium}}
High{{pavementData.concFaultJointHigh}}
Broken Slab Count
Low{{pavementData.concBrokenSlabLow}}
Medium{{pavementData.concBrokenSlabMedium}}
High{{pavementData.concBrokenSlabHigh}}
Longitudinal Cracking Count
Low{{pavementData.concLngCrackingLow}}
Medium{{pavementData.concLngCrackingMedium}}
High{{pavementData.concLngCrackingHigh}}
Transverse Cracking Count
Low{{pavementData.concTCLow}}
Medium{{pavementData.concTCMedium}}
High{{pavementData.concTCHigh}}
Transverse Joint Spall Count
Low{{pavementData.concTJointSpallLow}}
Medium{{pavementData.concTJoinSpalltMedium}}
High{{pavementData.concTJointSpallHigh}}
Longitudinal Joint Spall (ft.)
Medium{{pavementData.concLongSpallMedium}}
High{{pavementData.concLongSpallHigh}}
PCC Patching
Count{{pavementData.concPccPatchCount}}
Area Sq Ft{{pavementData.concPccPatchArea}}
Bituminous Patching
Count{{pavementData.concBitPatchCount}}
Area Sq Ft{{pavementData.concBitPatchArea}}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Pavement Conditions
Pavement TypeReinforced
Survey Date{{pavementData.crcSurveyDate}}
Rough Average
Rough Average (IRI){{pavementData.crcRoughAvg}}
Rutting{{pavementData.crcRutting}}
Bridge Approach{{pavementData.crcBridgeApproach}}
Damage Terminal Joint{{pavementData.crcDamageTerminalJoint}}
Longitudinal Joint Spall{{pavementData.crcLongJointSpall}}
Punchout{{pavementData.crcPunchout}}
Transverse Cracking{{pavementData.crcTransverseCracking}}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Pavement Conditions
Pavement TypeUnpaved
Survey Date{{pavementData.upSurveyDate}}
Corrugation{{pavementData.upCorrugation}}
Loss of aggregate surface{{pavementData.upLossofAggSurface}}
Poor Drainage{{pavementData.upPoorDrainage}}
Soft Area{{pavementData.upSoftArea}}
\\r\\n
\\r\\n
\\r\\n
No shoulder condition data is available for this segment.
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Shoulder Conditions
Survey Date{{shoulderData.condDate}}
Right Shoulder
Type{{shoulderData.rsShldTypeDesc}}
Lane/Shoulder Separation{{shoulderData.rsLaneSepr}}
Deterioration{{shoulderData.rsShldDetr}}
Deficient Slope{{shoulderData.rsShldSlope}}
Build-up{{shoulderData.rsShldBldup}}
Drop-off{{shoulderData.rsShldDropOff}}
Left Shoulder
Type{{shoulderData.lsShldTypeDesc}}
Lane/Shoulder Separation{{shoulderData.lsLaneSepr}}
Deterioration{{shoulderData.lsShldDetr}}
Deficient Slope{{shoulderData.lsShldSlope}}
Build-up{{shoulderData.lsShldBldup}}
Drop-off{{shoulderData.lsShldDropOff}}
\\r\\n
\\r\\n
\\r\\n
No guiderail condition data is available for this segment.
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Guiderail Conditions
\\r\\n Begin Offset\\r\\n \\r\\n End Offset\\r\\n \\r\\n Survey Date\\r\\n \\r\\n Side\\r\\n \\r\\n System Type\\r\\n \\r\\n End Treatement Type (Begin)\\r\\n \\r\\n End Treatement Type (End)\\r\\n \\r\\n Function (Begin)\\r\\n \\r\\n Function (End)\\r\\n \\r\\n Cable Sag\\r\\n \\r\\n Post Deflection\\r\\n \\r\\n Deterioration\\r\\n \\r\\n Hardware\\r\\n \\r\\n Deficient Height Code\\r\\n \\r\\n Candidate for Removal\\r\\n \\r\\n Side Dozing Required\\r\\n
{{GDRail.bgnOffset}}{{GDRail.endOffset}}{{GDRail.gdrailSrvyDate}}{{GDRail.gdrailSideInd}}{{GDRail.gdrailSysType}}{{GDRail.gdrailTypeBgn}}{{GDRail.gdrailTypeEnd}}{{GDRail.gdrailFuncBgn}}{{GDRail.gdrailFuncEnd}}{{GDRail.gdrailCblSagCd}}{{GDRail.gdrailPostDeflc}}{{GDRail.gdrailDetrCond}}{{GDRail.gdrailHwareCond}}{{GDRail.gdrailHgtCode}}{{GDRail.gdrailRmvlInd}}{{GDRail.gdrailSideDoze}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Loading...
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Would you like to continue to the next segment?\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n You are at the end of the route in this county. Would you like to continue to the next county?\\r\\n
\\r\\n
\\r\\n Note: There may be some overlap of images between counties.\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Would you like to continue to the previous segment?\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n You are at the beginning of the route in this county. Would you like to continue to the previous county?\\r\\n
\\r\\n
\\r\\n Note: There may be some overlap of images between counties.\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n The most recent survey data available for this report is from {{historicRptYear}}.\\r\\n The report is showing the most recent survey data.\\r\\n
\\r\\n Data outside of the most recent survey year is unavailable. \\r\\n
\\r\\n
\\r\\n We apologize for any inconvenience.\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n You have selected a route that does not have images for your currently selected historical year.\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

\\r\\n This web site is for informational purposes only and may be viewed by anyone.\\r\\n The VideoLog information is provided \\\"as is\\\" without warranty of any kind, either expressed or implied.\\r\\n Information could include technical inaccuracies or errors of omission.\\r\\n Likewise PennDOT makes no warranty with respect to the traffic information, including its quality, merchantability, or fitness for a particular purpose.\\r\\n The traffic information is provided \\\"as is\\\" and the user assumes the entire risk as to its quality and performance.\\r\\n Changes may be periodically made to the information herein.\\r\\n

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

PennDOT Videolog Application

\\r\\n Version {{config.about.version}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{config.about.aboutText}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Please feel free to contact a representative with any questions, comments or issues at any of the following:

\\r\\n
\\r\\n
\\r\\n Email: {{config.contact.email}}\\r\\n
\\r\\n
\\r\\n Paper Mail:\\r\\n
\\r\\n

{{config.contact.paperMailAddress}}

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

\\r\\n Getting Started:
\\r\\n Use the Area of Interest (AOI) button, to use one of several search methods to select a specific location or Area of Interest.\\r\\n

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

\\r\\n Map Panel:
\\r\\n Use the four provided buttons to zoom in, zoom out, zoom to default statewide extent, or zoom to selected AOI extent. You can\\r\\n also incrementally zoom in and out using the center wheel on your mouse and use the Switch Basemap button to choose alternative\\r\\n map or imagery displays. On the map, click on a State Route to activate the Video Log image for that route location.\\r\\n

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

\\r\\n Video Panel:
\\r\\n Once a route has been selected and a Video Image is displayed, navigate through the Video Log images in the upper left panel\\r\\n using the provided buttons. Hover over each button to get a description of its function. The menu button in the top left corner allows you to\\r\\n change player options by toggling between thumbnails and full size images, turning auto run on or off and selecting a video\\r\\n play display rate. Use the arrow buttons to navigate through route segment images. The button adjacent to the menu button allows you to change\\r\\n directions on divided highway segments.\\r\\n

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

\\r\\n Helpful tips - When an intersection of SR options is reached, an intersection choice popup is presented over the video.\\r\\n If you drag this popup to another, less intrusive, area of the screen, subsequent intersection choice popups will\\r\\n display in that location. If needed, toggle off Full-Size Images to improve performance.\\r\\n

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

\\r\\n Data Panel:
\\r\\n View Basic Info and access to Admin Data, Pavement, Shoulder, and Guiderail Conditions reports are displayed in the upper right panel.\\r\\n

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

\\r\\n The Video Log Banner:
\\r\\n The AOI button offers several search methods to select a specific location.
\\r\\n The Tools button offers a means for measuring map area and distances, determining Latitude and Longitude coordinate values, and sending output to a printer.
\\r\\n A tool is provided for accessing other resources such as PA One Map, TIRe, Straight Line Diagram PDF, and Pavement History.
\\r\\n A tool is provided to Help in getting started with, learning About or to Contact Us regarding the application.
\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Skip To Content\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n VideoLog\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FvaS10b29sL2FvaS10b29sLmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, ViewChild, ElementRef, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-aoi-tool',\r\n templateUrl: './aoi-tool.component.html',\r\n styleUrls: ['./aoi-tool.component.css']\r\n})\r\nexport class AoiToolComponent implements AfterViewInit {\r\n @ViewChild('stateTab', { static: false }) private readonly stateTab: ElementRef;\r\n @ViewChild('regionTab', { static: false }) private readonly regionTab: ElementRef;\r\n @ViewChild('routeTab', { static: false }) private readonly routeTab: ElementRef;\r\n @ViewChild('assetIdTab', { static: false }) private readonly assetIdTab: ElementRef;\r\n @ViewChild('addressTab', { static: false }) private readonly addressTab: ElementRef;\r\n @ViewChild('latLongTab', { static: false }) private readonly latLongTab: ElementRef;\r\n @ViewChild('intersectionTab', { static: false }) private readonly intersectionTab: ElementRef;\r\n\r\n @Output('done') done: EventEmitter = new EventEmitter();\r\n\r\n @Output('newAoi') newAoi: EventEmitter = new EventEmitter();\r\n\r\n isLoading: boolean;\r\n\r\n aoiTabs = [\r\n { name: \"State\" },\r\n { name: \"Region\", active: true },\r\n { name: \"Route\" },\r\n { name: \"Asset Id\" },\r\n { name: \"Address\" },\r\n { name: \"Lat/Long\"},\r\n { name: \"Intersection\" }\r\n ];\r\n\r\n activeTab: any;\r\n aoiService: any;\r\n layerService: any;\r\n mapService: any;\r\n\r\n assetIdConfig = [\r\n {\r\n columnName: 'HPMS_SAMP_SECT_NO',\r\n displayName: 'HPMS Sample IDs',\r\n idType: '$stringIds',\r\n propName: 'samples',\r\n fieldName: 'sampleId',\r\n layerId: 2000\r\n },\r\n {\r\n columnName: 'BRKEY',\r\n displayName: 'Bridge Keys',\r\n idType: '$stringIds',\r\n propName: 'bridges',\r\n fieldName: 'brKey',\r\n layerId: 1592\r\n },\r\n {\r\n columnName: 'PERMIT_NUM',\r\n displayName: 'Permit Numbers',\r\n idType: '$stringIds',\r\n propName: 'permitNums',\r\n fieldName: 'permitNum',\r\n layerId: 9144\r\n },\r\n {\r\n columnName: 'APPLICATION_ID',\r\n displayName: 'Permit Applications',\r\n idType: '$stringIds',\r\n propName: 'permitApps',\r\n fieldName: 'permitApp',\r\n layerId: 9144\r\n },\r\n {\r\n columnName: 'PROJECT_ID',\r\n displayName: 'MPMS Projects',\r\n idType: '$stringIds',\r\n propName: 'mpmsprojects',\r\n fieldName: 'id',\r\n layerId: 2751\r\n },\r\n {\r\n columnName: 'TMS_SITE_NO',\r\n displayName: 'TMS Site Numbers',\r\n idType: '$stringIds',\r\n propName: 'tmsSite',\r\n fieldName: 'tmsSiteNo',\r\n layerId: 2611\r\n },\r\n {\r\n columnName: 'SIGN_APPL_ID',\r\n displayName: 'Billboard IDs',\r\n idType: \"$stringIds\",\r\n propName: 'billboards',\r\n fieldName: 'bilboardId',\r\n layerId: 6763\r\n }\r\n ];\r\n\r\n assetIdProperties = 'samples,bridges,permitNums,permitApps,mpmsprojects,tmsSite,billboards'\r\n constructor() { }\r\n ngAfterViewInit() {\r\n this.aoiService = this.stateTab.nativeElement.AoiService;\r\n this.activeTab = this.regionTab;\r\n this.assetIdTab.nativeElement.config = this.assetIdConfig;\r\n this.assetIdTab.nativeElement.properties = this.assetIdProperties;\r\n }\r\n\r\n activateTab() {\r\n this.activeTab.nativeElement.activate();\r\n }\r\n\r\n onTabChange(event) {\r\n switch (event.detail.name) {\r\n case 'State':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.stateTab;\r\n this.activateTab();\r\n break;\r\n\r\n case 'Region':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.regionTab;\r\n this.activateTab();\r\n break;\r\n\r\n case 'Route':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.routeTab;\r\n this.activateTab();\r\n break;\r\n\r\n case 'Asset Id':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.assetIdTab;\r\n this.activateTab();\r\n break;\r\n\r\n case 'Address':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.addressTab;\r\n this.activateTab();\r\n break;\r\n\r\n case 'Lat/Long':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.latLongTab;\r\n this.activateTab();\r\n this.latLongTab.nativeElement.activate(); //loads latLong map\r\n break;\r\n\r\n case 'Intersection':\r\n this.aoiService.clearSearchCriterias();\r\n this.activeTab = this.intersectionTab;\r\n this.activateTab();\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n public async go() {\r\n try {\r\n this.isLoading = true;\r\n this.activeTab.nativeElement.addResultToMap();\r\n await this.aoiService.showBySearchCriterias();\r\n this.newAoi.emit();\r\n\r\n } catch (error) {\r\n console.error(error);\r\n this.log('Error moving to Area of Interest.', 5, false);\r\n } finally {\r\n this.isLoading = false;\r\n this.closeAoiTool();\r\n this.log('Showing Area of Interest.', 3, false);\r\n }\r\n }\r\n\r\n closeAoiTool() {\r\n this.done.emit(true);\r\n }\r\n\r\n\r\n log(message: string, level: number, isPrivate: boolean) {\r\n if (level > 6) {\r\n let applicationMessage = new CustomEvent('applicationMessage', { detail: { message: 'Something very bad happened, please refresh!', level: level, isPrivate: isPrivate ? isPrivate : false }, composed: true });\r\n window.dispatchEvent(applicationMessage);\r\n } else {\r\n let applicationMessage = new CustomEvent('applicationMessage', { detail: { message: message, level: level, isPrivate: isPrivate ? isPrivate : false }, composed: true });\r\n window.dispatchEvent(applicationMessage);\r\n }\r\n };\r\n}\r\n\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html'\r\n})\r\nexport class AppComponent {\r\n title = 'app';\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { LayoutModule } from '@progress/kendo-angular-layout';\r\nimport { IconsModule } from '@progress/kendo-angular-icons';\r\nimport { AppComponent } from './app.component';\r\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { AoiToolComponent } from './aoi-tool/aoi-tool.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n NavMenuComponent,\r\n HomeComponent,\r\n AoiToolComponent,\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n FormsModule,\r\n LayoutModule,\r\n IconsModule,\r\n RouterModule.forRoot([\r\n { path: '', component: HomeComponent, pathMatch: 'full' }\r\n ])\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent],\r\n schemas: [ CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA ]\r\n})\r\nexport class AppModule { }\r\n","export default \".video-log-viewer-container {\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.table-header {\\r\\n color: #ffffff;\\r\\n background-color: #005e95;\\r\\n font-weight:bold;\\r\\n}\\r\\n\\r\\n.segment-data:hover {\\r\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\r\\n}\\r\\n\\r\\n.mile-marker-btn {\\r\\n height: 32px;\\r\\n width: 32px;\\r\\n margin-left: 0;\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\n.mile-marker-nav {\\r\\n margin-top: 3px;\\r\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9ob21lLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxZQUFZO0lBQ1osZ0JBQWdCO0FBQ3BCOztBQUVBO0VBQ0UsY0FBYztFQUNkLHlCQUF5QjtFQUN6QixnQkFBZ0I7QUFDbEI7O0FBR0E7RUFDRSw0RUFBNEU7QUFDOUU7O0FBRUE7RUFDRSxZQUFZO0VBQ1osV0FBVztFQUNYLGNBQWM7RUFDZCxVQUFVO0FBQ1o7O0FBRUE7RUFDRSxlQUFlO0VBQ2Ysd0NBQXdDO0FBQzFDIiwiZmlsZSI6InNyYy9hcHAvaG9tZS9ob21lLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudmlkZW8tbG9nLXZpZXdlci1jb250YWluZXIge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLnRhYmxlLWhlYWRlciB7XHJcbiAgY29sb3I6ICNmZmZmZmY7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNWU5NTtcclxuICBmb250LXdlaWdodDpib2xkO1xyXG59XHJcblxyXG5cclxuLnNlZ21lbnQtZGF0YTpob3ZlciB7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcclxufVxyXG5cclxuLm1pbGUtbWFya2VyLWJ0biB7XHJcbiAgaGVpZ2h0OiAzMnB4O1xyXG4gIHdpZHRoOiAzMnB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi5taWxlLW1hcmtlci1uYXYge1xyXG4gIG1hcmdpbi10b3A6IDNweDtcclxuICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG59XHJcbiJdfQ== */\"","import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Subject } from 'rxjs';\r\nimport { Config } from '../Config';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent implements AfterViewInit {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n @ViewChild('map', { static: false }) private readonly mapRef: ElementRef;\r\n @ViewChild('extent', { static: false }) private readonly extentRef: ElementRef\r\n @ViewChild('basemapSwitcher', { static: false }) private readonly basemapSwitcherRef: ElementRef\r\n @ViewChild('videoLogViewer', { static: false }) private readonly videoLogViewer: ElementRef;\r\n @ViewChild('videoLogController', { static: false }) private readonly videoLogController: ElementRef;\r\n @ViewChild('routeSelectorWindow', { static: false }) private readonly routeSelectorWindow: ElementRef;\r\n @ViewChild('videoLogInfo', { static: false }) private readonly videoLogInfo: ElementRef;\r\n @ViewChild('endSegmentWarningWindow', { static: false }) private readonly endSegmentWarningWindow: ElementRef;\r\n @ViewChild('endCountyWarningWindow', { static: false }) private readonly endCountyWarningWindow: ElementRef;\r\n @ViewChild('beginSegmentWarningWindow', { static: false }) private readonly beginSegmentWarningWindow: ElementRef;\r\n @ViewChild('beginCountyWarningWindow', { static: false }) private readonly beginCountyWarningWindow: ElementRef;\r\n @ViewChild('historicReportNoticeWindow', { static: false }) private readonly historicReportNoticeWindow: ElementRef;\r\n @ViewChild('yearWarningWindow', { static: false }) private readonly yearWarningWindow: ElementRef;\r\n\r\n\r\n public config = (window as any).config as Config;\r\n\r\n basemapList = 'streets,satellite,hybrid,topo,national-geographic,gray-vector,osm';\r\n defaultBasemap = {\r\n \"tileUrl\": \"https://gis.penndot.gov/gis/rest/services/basemaps/penndotbasemap/MapServer/tile\",\r\n \"thumbnailTile\": \"/7/48/36\",\r\n \"tileTemplate\": \"/{level}/{row}/{col}\",\r\n \"title\": \"PennDOT\"\r\n };\r\n basemapConfigs: any[] = [\r\n {\r\n \"tileUrl\": \"https://services.arcgisonline.com/ArcGIS/rest/services/Elevation/World_Hillshade/MapServer/tile\",\r\n \"thumbnailTile\": \"/15/12358/9365\",\r\n \"tileTemplate\": \"/{level}/{row}/{col}\",\r\n \"title\": \"Elevation\"\r\n },\r\n this.defaultBasemap,\r\n {\r\n \"tileUrl\": \"https://services.arcgisonline.com/arcgis/rest/services/USA_Topo_Maps/MapServer/tile\",\r\n \"thumbnailTile\": \"/7/48/36\",\r\n \"tileTemplate\": \"/{level}/{row}/{col}\",\r\n \"title\": \"Topographic DRG\"\r\n },\r\n {\r\n \"tileUrl\": \"https://stamen-tiles.a.ssl.fastly.net/terrain\",\r\n \"thumbnailTile\": \"/10/177/409.png\",\r\n \"tileTemplate\": \"/{level}/{col}/{row}.png\",\r\n \"title\": \"Terrain\"\r\n }\r\n ];\r\n\r\n extentConfigs: any[] = [\r\n {\r\n toolTip: \"Statewide\",\r\n icon: \"m28.531 12.656-.187-.531-1.156-.344-.344-.562-.187-1.437-.719-.312-.094-.344-.375-.312h-20.219v-1.625l-1.656.844 .219-.312-.656.5-1.375.594-.406 13.906 20.719.094h1.719l.313-.531.5-.25.781 .156 1.375-.562.094-.437 1.75-1.312-1.187-1.437h-.25l-.25-.875-.531-.062-.031-.75v-.375l.406-.25.188-.469-.375-.75.844-.844.719-1.25z\",\r\n color: \"white\",\r\n extent: {\r\n center: [-77.6362661695295, 40.92039887644528],\r\n zoom: 8\r\n },\r\n extentType: \"static\",\r\n label: \"Statewide Extent\"\r\n },\r\n {\r\n toolTip: \"Current Area of Interest\",\r\n icon: \"icon-ui-locate\",\r\n color: \"white\",\r\n extent: async () => await this.getAoi(),\r\n extentType: \"async-func\",\r\n label: \"AOI\"\r\n }\r\n ];\r\n\r\n tabs: any[] = [\r\n { \"name\": \"Basic Info\", \"active\": true },\r\n { \"name\": \"Segment Data\" },\r\n { \"name\": \"Admin Data\" }, \r\n { \"name\": \"Pavement Conditions\" },\r\n { \"name\": \"Shoulder Conditions\" },\r\n { \"name\": \"Guiderail Conditions\" }\r\n ];\r\n\r\n jurisMap = {\r\n 1: 'State',\r\n 2: 'Turnpike',\r\n 3: 'Agency Owned',\r\n 5: 'Non-State Federal Aid Roads',\r\n 6: 'Toll Bridges',\r\n 8: 'Local Roads'\r\n };\r\n\r\n segmentTitle: string = \"\";\r\n lat: number;\r\n long: number;\r\n crsList: { countyCode: string, direction: string, distance: number, latLong:{latitude:number, longitude:number}, offset:string, routeName:string, segmentNumber:string, stateRouteNumber:string }[];\r\n localCRSList: { countyCode: string, countyIXN: string, intersectionType: string, stateRouteIXN: string, stateRouteNumber: string, streetName: string, streetNameIXN: string }[];\r\n showCRS: boolean = false;\r\n showLocalINX: boolean = false;\r\n\r\n userClosed: boolean = false;\r\n isShowingImage: boolean = false;\r\n isPopUp: boolean = false;\r\n isInternal: boolean = false;\r\n isLoading: boolean;\r\n adminData: any;\r\n segmentData: any[];\r\n pavementData: any;\r\n pavementType: \"Bituminous\" | \"Concrete\" | \"Reinforced\" | \"Unpaved\" = 'Bituminous';\r\n shoulderData: any;\r\n guiderailData: any;\r\n curTab: number = 0;\r\n curSegment: string;\r\n lastAOIName: string = \"\";\r\n aoiIndex: number = 0;\r\n isStartup: boolean = true;\r\n showMileMarkers: boolean = false;\r\n historicRptYear: number = 0;\r\n showHistoricRptWarningYear: boolean = false;\r\n\r\n closeAoiWindow: Subject = new Subject();\r\n openStreetViewWindow: Subject<{ lat: number; long: number; }> = new Subject<{ lat: number; long: number; }>();\r\n\r\n rptType: string = \"basicRpt\";\r\n\r\n updateRMSLinkParams: { cn: string, rt: string, seg: string } = { cn: '', rt: '', seg: '' };\r\n layerService: any;\r\n\r\n userAgent: string = navigator.userAgent;\r\n verOffset: number = this.userAgent.indexOf(\"MSIE\");\r\n isIE: boolean = this.verOffset > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./);\r\n\r\n async ngAfterViewInit() {\r\n this.setBasemap();\r\n this.setupBasemapSwitcher();\r\n this.constructExtent();\r\n\r\n this.videoLogViewer.nativeElement.active = true;\r\n this.videoLogViewer.nativeElement.directionalMarker = true;\r\n this.videoLogViewer.nativeElement.toolTipText = 'Double-Click to view a bigger image.';\r\n\r\n // set player defaults if defined\r\n if (this.config.playerSetting) {\r\n if (this.config.playerSetting.minSpeed) {\r\n this.videoLogController.nativeElement.VideoLogService.playerSetting.minSpeed = this.config.playerSetting.minSpeed;\r\n }\r\n if (this.config.playerSetting.maxSpeed) {\r\n this.videoLogController.nativeElement.VideoLogService.playerSetting.maxSpeed = this.config.playerSetting.maxSpeed;\r\n }\r\n if (this.config.playerSetting.playerSpeed) {\r\n this.videoLogController.nativeElement.VideoLogService.playerSpeed = this.config.playerSetting.playerSpeed;\r\n }\r\n if (this.config.playerSetting.step) {\r\n this.videoLogController.nativeElement.VideoLogService.playerSetting.step = this.config.playerSetting.step;\r\n }\r\n if (this.config.playerSetting.fullsizeImages !== undefined) {\r\n this.videoLogController.nativeElement.VideoLogService.toggleFullsizeImages(this.config.playerSetting.fullsizeImages);\r\n }\r\n }\r\n\r\n if (window.location.href.includes(\"isPopUp=true\")) {\r\n //for pop-up window, hide nav-bar, info & map components\r\n this.isPopUp = true;\r\n this.videoLogViewer.nativeElement.enablePopUpWindow = false; //prevent more popup windows\r\n this.videoLogViewer.nativeElement.toolTipText = \"\"; //hide tooltip\r\n var url = new URL(window.location.href);\r\n var CRS: { countyCode: string, stateRouteNumber: string, segmentNumber: string, offset: string } = { countyCode: '', stateRouteNumber: '', segmentNumber: '', offset: '' };\r\n CRS.countyCode = url.searchParams.get(\"cn\");\r\n CRS.stateRouteNumber = url.searchParams.get(\"rt\");\r\n CRS.segmentNumber = url.searchParams.get(\"sg\");\r\n CRS.offset = url.searchParams.get(\"offset\");\r\n\r\n await this.videoLogViewer.nativeElement.setCrs(CRS);\r\n this.videoLogController.nativeElement.VideoLogService.toggleFullsizeImages(true);\r\n\r\n if (url.searchParams.get('pos')) {\r\n this.videoLogViewer.nativeElement.swapPanels(true);\r\n }\r\n\r\n this.videoLogController.nativeElement.toggleButtonsForPopup();\r\n\r\n if (this.videoLogController.nativeElement.VideoLogService.yearRange) {\r\n var yearRangeMax: number = this.videoLogController.nativeElement.VideoLogService.yearRange.years[this.videoLogController.nativeElement.VideoLogService.yearRange.yearIndexMax];\r\n var year: number = +(this.getParameterByName('year'));\r\n\r\n if (year !== yearRangeMax) {\r\n this.videoLogController.nativeElement.VideoLogService.toggleHistoricVideoLog();\r\n await this.sleep(250);\r\n this.videoLogController.nativeElement.VideoLogService.currentYear = year;\r\n }\r\n }\r\n }\r\n\r\n const paramArray = window.location.search.substring(1).split(\"&\");\r\n \r\n if (paramArray.length == 1 && (window.location.href.includes(\"streetView=true\") || window.location.href.includes(\"streetview=true\") || window.location.href.includes(\"sv=true\"))) {\r\n let startLat = this.lat ? this.lat : 40.263001;\r\n let startLong = this.long ? this.long : -76.884089;\r\n this.openStreetViewWindow.next({ lat: startLat, long: startLong });\r\n this.isStartup = false;\r\n }\r\n \r\n this.videoLogViewer.nativeElement.addEventListener('positionChange', data => {\r\n this.lat = data.detail.lat;\r\n this.long = data.detail.long;\r\n this.crsList = data.detail.crsList;\r\n this.localCRSList = data.detail.localCRSList;\r\n this.userClosed = false;\r\n if (this.crsList) {\r\n this.setRouteSelectorVisibility();\r\n }\r\n\r\n if ((window.location.href.includes(\"streetView=true\") || window.location.href.includes(\"streetview=true\") || window.location.href.includes(\"sv=true\")) && this.isStartup) {\r\n let startLat = this.lat ? this.lat : 40.263001;\r\n let startLong = this.long ? this.long : -76.884089;\r\n this.openStreetViewWindow.next({ lat: startLat, long: startLong });\r\n this.isStartup = false;\r\n }\r\n \r\n const cn = this.videoLogController.nativeElement.VideoLogService.videoLog.countyCode ? this.videoLogController.nativeElement.VideoLogService.videoLog.countyCode : null;\r\n const route = this.videoLogController.nativeElement.VideoLogService.videoLog.stateRouteNumber ? this.videoLogController.nativeElement.VideoLogService.videoLog.stateRouteNumber : null;\r\n const seg = this.videoLogController.nativeElement.VideoLogService.videoLog.segmentNumber ? this.videoLogController.nativeElement.VideoLogService.videoLog.segmentNumber : null;\r\n \r\n this.aoiIndex = 0;\r\n var count = 0;\r\n if (this.lastAOIName && this.lastAOIName !== \"\") {\r\n const lastAOIArr = this.lastAOIName.split('|');\r\n const cty = lastAOIArr[0] ? lastAOIArr[0] : \"\";\r\n const rt = lastAOIArr[1] ? lastAOIArr[1] : \"\";\r\n const segStart = lastAOIArr[2] ? lastAOIArr[2] : \"\";\r\n\r\n for (const crs of this.crsList) {\r\n if (crs.countyCode === cty) {\r\n if (rt === \"\") {\r\n this.aoiIndex = count;\r\n break;\r\n } else if (crs.stateRouteNumber === rt) {\r\n if (segStart === \"\") {\r\n this.aoiIndex = count;\r\n break;\r\n } else if (crs.segmentNumber === segStart) {\r\n this.aoiIndex = count;\r\n break;\r\n }\r\n }\r\n }\r\n count++;\r\n }\r\n } else if (cn && route && seg) {\r\n for (const crs of this.crsList) {\r\n if (crs.countyCode === cn && crs.stateRouteNumber === route && crs.segmentNumber === seg) {\r\n this.aoiIndex = count;\r\n break;\r\n }\r\n count++;\r\n }\r\n }\r\n\r\n\r\n //on each position change, if the new segment is different from the past one, update reports\r\n if (this.curSegment !== undefined && this.curSegment !== this.crsList[this.aoiIndex].segmentNumber) {\r\n\r\n this.log('New Segment Selected', 3, false);\r\n\r\n this.updateReports();\r\n\r\n this.curSegment = this.crsList[this.aoiIndex].segmentNumber;\r\n\r\n } else if (this.curSegment === undefined) {\r\n this.curSegment = this.crsList[this.aoiIndex].segmentNumber;\r\n }\r\n\r\n\r\n //update nav-bar with link params\r\n if (this.crsList != null) {\r\n this.updateRMSLinkParams = { cn: this.crsList[this.aoiIndex].countyCode, rt: this.crsList[this.aoiIndex].stateRouteNumber, seg: this.crsList[this.aoiIndex].segmentNumber };\r\n }\r\n\r\n this.lastAOIName = \"\";\r\n this.isShowingImage = true;\r\n });\r\n\r\n this.videoLogViewer.nativeElement.addEventListener('loadHistoricReport', () => {\r\n this.updateReports();\r\n });\r\n\r\n this.videoLogController.nativeElement.addEventListener('loadHistoricReport', () => {\r\n this.updateReports();\r\n });\r\n\r\n this.videoLogViewer.nativeElement.addEventListener('openPopUp', data => {\r\n //open pop up window based on current location\r\n let vlLink = `${window.location.origin}${window.location.pathname}?isPopUp=true`;\r\n vlLink += this.crsList[this.aoiIndex].countyCode ? '&cn=' + this.crsList[this.aoiIndex].countyCode : '';\r\n vlLink += this.crsList[this.aoiIndex].stateRouteNumber ? '&rt=' + this.crsList[this.aoiIndex].stateRouteNumber : '';\r\n vlLink += this.crsList[this.aoiIndex].segmentNumber ? '&sg=' + this.crsList[this.aoiIndex].segmentNumber : '';\r\n vlLink += this.crsList[this.aoiIndex].offset ? '&offset=' + this.videoLogController.nativeElement.VideoLogService.image.offset : '';\r\n vlLink += data.detail ? '&pos=' + data.detail : '';\r\n\r\n const yr = this.videoLogController.nativeElement.VideoLogService.currentYear;\r\n vlLink += yr ? '&year=' + yr : '';\r\n window.open(vlLink, '', 'width=1000,height=550');\r\n });\r\n\r\n this.routeSelectorWindow.nativeElement.addEventListener('openChange', open => {\r\n if(!open.detail) {\r\n this.userClosed = true;\r\n } \r\n })\r\n\r\n this.videoLogController.nativeElement.addEventListener('promptSegmentEnd', () => {\r\n //display end of segment dialogue\r\n this.endSegmentWarningWindow.nativeElement.open();\r\n });\r\n this.videoLogController.nativeElement.addEventListener('promptCountyEnd', () => {\r\n //display end of county dialogue\r\n this.endCountyWarningWindow.nativeElement.open();\r\n });\r\n this.videoLogController.nativeElement.addEventListener('promptSegmentBegin', () => {\r\n //display start of segment dialogue\r\n this.beginSegmentWarningWindow.nativeElement.open();\r\n });\r\n this.videoLogController.nativeElement.addEventListener('promptCountyBegin', () => {\r\n //display start of county dialogue\r\n this.beginCountyWarningWindow.nativeElement.open();\r\n });\r\n\r\n this.videoLogViewer.nativeElement.addEventListener(\"swapPanelEvent\", () => {\r\n //swap map and image panels\r\n this.swapPanels();\r\n });\r\n\r\n this.mapRef.nativeElement.DeepLinkService.parameters = {\r\n\r\n counties: ['counties', 'countyNumbers'],\r\n countyNumber: ['ct', 'cn', 'cty', 'cty-code', 'county', 'countyNumber'],\r\n routeNumber: ['rt', 'route', 'st-rt-no', 'routeNumber'],\r\n segmentNumber: ['sg', 'seg', 'segment', 'segmentNumber'],\r\n offset: ['offset'],\r\n latitude: ['lat', 'latitude'],\r\n longitude: ['long', 'longitude'],\r\n query: ['query'],\r\n segmentNumberBegin: ['sg', 'segmentBegin', 'segmentNumberBegin', 'beginSegment', 'beginSegmentNumber', 'segment', 'segmentNumber'],\r\n segmentNumberEnd: ['sgend', 'segmentEnd', 'segmentNumberEnd', 'endSegment', 'endSegmentNumber'],\r\n };\r\n\r\n await this.mapRef.nativeElement.ready;\r\n \r\n this.mapRef.nativeElement.mapView.watch('zoom', (currentZoom) => {\r\n if (currentZoom >= 15) {\r\n this.videoLogViewer.nativeElement.buffer = 40;\r\n } else {\r\n this.videoLogViewer.nativeElement.buffer = currentZoom * 150;\r\n }\r\n });\r\n\r\n this.layerService = this.mapRef.nativeElement.LayerService;\r\n\r\n if (this.mapRef.nativeElement.DeepLinkService.deepLinkParamIsPresent()) {\r\n\r\n var handler = this.mapRef.nativeElement.map.layers.on('after-add', (e) => {\r\n if (e.item) {\r\n handler.remove();\r\n }\r\n });\r\n\r\n //close the aoi window if it is open, since a location is already specified\r\n this.closeAoiWindow.next();\r\n\r\n //nothing in videologservice/viewer we can await for to see if viewer is loaded, so just wait 2 seconds instead\r\n var waitTime = 2000;\r\n waitTime += window.location.search.includes('sg') ? 200 : 0;\r\n await this.sleep(waitTime);\r\n this.updateLocationToAoi(); //update selected location to aoi location\r\n\r\n if (window.location.search.includes('year')) { //if there is a year deeplink, update to that year\r\n var year: number = +(this.getParameterByName('year'));\r\n this.videoLogController.nativeElement.VideoLogService.toggleHistoricVideoLog();\r\n await this.sleep(250);\r\n this.videoLogController.nativeElement.VideoLogService.currentYear = year;\r\n }\r\n }\r\n\r\n //turn on fullsize images by default\r\n this.videoLogController.nativeElement.VideoLogService.toggleFullsizeImages(this.config.playerSetting.fullsizeImages);\r\n //turn on segment highlights by default\r\n this.videoLogController.nativeElement.SegmentHighlight = true;\r\n }\r\n\r\n setIsInternal(isInternal: boolean) {\r\n this.isInternal = isInternal;\r\n this.videoLogController.nativeElement.hideDownloadBtn = !this.isInternal;\r\n }\r\n toggleKeyboard(isEnabled:boolean) {\r\n this.videoLogController.nativeElement.VideoLogService.toggleKeyboardEnabled(isEnabled);\r\n }\r\n toggleMapClickable(isEnabled:boolean) {\r\n this.videoLogViewer.nativeElement.mapClickActive = isEnabled;\r\n }\r\n async updateLocationToAoi() {\r\n const layers = await this.layerService.getAoiLayers();\r\n var latLong;\r\n if (layers && layers.length) {\r\n this.lastAOIName = layers[0].mapcoreProps ? layers[0].mapcoreProps.name : this.lastAOIName;\r\n if (layers[0].graphics) {\r\n latLong = [layers[0].graphics.toArray()[0].geometry.latitude, layers[0].graphics.toArray()[0].geometry.longitude];\r\n } else {\r\n var result = await this.layerService.getLayerFeatures(layers[0], [\"SEG_NO\", \"CTY_CODE\", \"ST_RT_NO\"]);\r\n if (result) {\r\n latLong = result[0].geometry.startLatLong;\r\n }\r\n }\r\n }\r\n\r\n if (this.lastAOIName && (this.lastAOIName.split(\"|\").length - 1) >= 4) {\r\n const loc = this.lastAOIName.split(\"|\");\r\n this.videoLogController.nativeElement.VideoLogService.goToSegmentAndSetOffset(loc[0], loc[1], loc[2], loc[4]);\r\n }\r\n else if (window.location.search.includes('offset')) {\r\n var url_string = window.location.href;\r\n var url = new URL(url_string);\r\n var cn = url.searchParams.get(\"cn\");\r\n var rt = url.searchParams.get(\"rt\");\r\n var sg = url.searchParams.get(\"sg\");\r\n var offset = url.searchParams.get(\"offset\");\r\n if (cn && rt && sg && offset) {\r\n this.videoLogController.nativeElement.VideoLogService.goToSegmentAndSetOffset(cn, rt, sg, offset);\r\n }\r\n }\r\n else if (latLong) {\r\n this.videoLogViewer.nativeElement.aoiString = this.lastAOIName ? this.lastAOIName : \"\";\r\n this.videoLogViewer.nativeElement.lat = latLong[0];\r\n this.videoLogViewer.nativeElement.long = latLong[1];\r\n }\r\n }\r\n\r\n getParameterByName(name) {\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n results = regex.exec(location.search);\r\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n async constructExtent() {\r\n await this.extentRef.nativeElement.ready;\r\n for (let extentConfig of this.extentConfigs) {\r\n this.extentRef.nativeElement.addExtentConfiguration(extentConfig);\r\n }\r\n }\r\n\r\n async setBasemap() {\r\n await this.mapRef.nativeElement.ready;\r\n await this.mapRef.nativeElement.setBasemapsFromConfig(this.defaultBasemap);\r\n }\r\n\r\n async setupBasemapSwitcher() {\r\n await this.basemapSwitcherRef.nativeElement.ready;\r\n this.basemapSwitcherRef.nativeElement.addBasemaps(this.basemapList, this.basemapConfigs);\r\n }\r\n\r\n async getAoi() {\r\n const aoiLayer = this.mapRef.nativeElement.LayerService.getAoiLayers();\r\n if (aoiLayer.length) {\r\n const aoiExtent = await this.mapRef.nativeElement.LayerService.getLayerExtent(aoiLayer[0]);\r\n return aoiExtent;\r\n }\r\n }\r\n\r\n setRouteSelectorVisibility() {\r\n const crsCount = this.crsList != undefined ? this.crsList.length : 0;\r\n const localINXCount = this.localCRSList != undefined ? this.localCRSList.length : 0;\r\n const crsSelectionEnabled = this.videoLogController.nativeElement.VideoLogService.crsSelection;\r\n const LocalINXEnabled = this.videoLogController.nativeElement.VideoLogService.findinxlist;\r\n\r\n let showDialog = true;\r\n if (crsCount <= 2 || this.userClosed) {\r\n showDialog = false;\r\n }\r\n\r\n let ShowINXDialog = true;\r\n if (localINXCount < 1 || this.userClosed) {\r\n ShowINXDialog = false;\r\n }\r\n\r\n this.showCRS = crsSelectionEnabled && showDialog ? true : false;\r\n this.showLocalINX = LocalINXEnabled && ShowINXDialog ? true : false;\r\n\r\n if (this.routeSelectorWindow.nativeElement.isOpened) {\r\n if (!(showDialog && crsSelectionEnabled) && !(ShowINXDialog && LocalINXEnabled)) {\r\n this.routeSelectorWindow.nativeElement.close();\r\n }\r\n } else {\r\n if ((showDialog && crsSelectionEnabled) || (LocalINXEnabled && ShowINXDialog)) {\r\n this.routeSelectorWindow.nativeElement.open();\r\n }\r\n }\r\n }\r\n\r\n async crsSelect(crs) {\r\n let curYear: number = this.videoLogController.nativeElement.VideoLogService.currentYear ? this.videoLogController.nativeElement.VideoLogService.currentYear : 0;\r\n const latestYear: number = this.videoLogController.nativeElement.VideoLogService.yearRange.years[this.videoLogController.nativeElement.VideoLogService.yearRange.yearIndexMax];\r\n curYear = curYear == latestYear ? 0 : curYear;\r\n const hasYear: boolean = await this.videoLogController.nativeElement.VideoLogService.crsHasYear(crs, curYear.toString());\r\n if (hasYear) {\r\n this.log('Next Segment Selected.', 3, false);\r\n await this.videoLogViewer.nativeElement.setCrs(crs);\r\n if (curYear != 0) {\r\n this.videoLogController.nativeElement.VideoLogService.currentYear = curYear;\r\n }\r\n } else {\r\n this.yearWarningWindow.nativeElement.open();\r\n }\r\n }\r\n\r\n\r\n async onTabChange(event) {\r\n var tabName: string = event.detail.name;\r\n\r\n var selectedYear: number = this.videoLogController.nativeElement.VideoLogService.currentYear;\r\n var latestYear: number = this.videoLogController.nativeElement.VideoLogService.yearRange.years[this.videoLogController.nativeElement.VideoLogService.yearRange.yearIndexMax];\r\n\r\n if (tabName == \"Basic Info\") {\r\n this.rptType = \"basicRpt\";\r\n this.curTab = 0;\r\n\r\n } else if (tabName == \"Segment Data\") {\r\n this.rptType = \"segRpt\";\r\n this.curTab = 1;\r\n this.getSegmentData();\r\n\r\n } else if (tabName == \"Admin Data\") {\r\n this.rptType = \"adminRpt\";\r\n this.curTab = 2;\r\n this.getAdminData();\r\n\r\n } else if (tabName == \"Pavement Conditions\") {\r\n this.rptType = \"pavementRpt\";\r\n this.curTab = 3;\r\n await this.getPavementData();\r\n\r\n if (this.pavementData && this.pavementType) {\r\n let surveyDate;\r\n if (this.pavementType == 'Bituminous') {\r\n surveyDate = this.pavementData.bitSurveyDate;\r\n } else if (this.pavementType == 'Concrete') {\r\n surveyDate = this.pavementData.concSurveyDate;\r\n } else if (this.pavementType == 'Reinforced') {\r\n surveyDate = this.pavementData.crcSurveyDate;\r\n } else if (this.pavementType == 'Unpaved') {\r\n surveyDate = this.pavementData.upSurveyDate;\r\n }\r\n surveyDate = new Date(surveyDate);\r\n if (selectedYear < latestYear) {\r\n this.showHistoricReportNotice(surveyDate.getFullYear());\r\n }\r\n }\r\n\r\n } else if (tabName == \"Shoulder Conditions\") {\r\n this.rptType = \"shoulderRpt\";\r\n this.curTab = 4;\r\n await this.getShoulderData();\r\n \r\n if ((selectedYear < latestYear) && this.shoulderData) {\r\n let surveyDate = new Date(this.shoulderData.condDate);\r\n this.showHistoricReportNotice(surveyDate.getFullYear());\r\n }\r\n\r\n } else if (tabName == \"Guiderail Conditions\") {\r\n this.rptType = \"guiderailRpt\";\r\n this.curTab = 5;\r\n await this.getGuiderailData();\r\n if ((selectedYear < latestYear) && this.guiderailData.length > 0) {\r\n this.showHistoricReportNotice();\r\n }\r\n\r\n }\r\n }\r\n\r\n exportTable() {\r\n let wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n let ws: XLSX.WorkSheet;\r\n \r\n if (this.rptType == \"basicRpt\") {\r\n let basicRptData = this.buildBasicRptExportData()\r\n if (basicRptData) {\r\n ws = XLSX.utils.json_to_sheet([basicRptData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Basic Info');\r\n XLSX.writeFile(wb, 'VideoLog_Basic_Info.xlsx');\r\n }\r\n \r\n } else if (this.rptType == \"segRpt\" && this.segmentData) {\r\n ws = XLSX.utils.json_to_sheet(this.segmentData);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Segment data');\r\n XLSX.writeFile(wb, 'VideoLog_Segment_Data.xlsx');\r\n\r\n } else if (this.rptType == \"adminRpt\" && this.adminData) {\r\n ws = XLSX.utils.json_to_sheet([this.adminData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Admin data');\r\n XLSX.writeFile(wb, 'VideoLog_Admin_Data.xlsx');\r\n\r\n } else if (this.rptType == \"pavementRpt\" && this.pavementData) {\r\n ws = XLSX.utils.json_to_sheet([this.pavementData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Pavement data');\r\n XLSX.writeFile(wb, 'VideoLog_Pavement_Data.xlsx');\r\n\r\n } else if (this.rptType == \"shoulderRpt\" && this.shoulderData) {\r\n ws = XLSX.utils.json_to_sheet([this.shoulderData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Shoulder data');\r\n XLSX.writeFile(wb, 'VideoLog_Shoulder_Data.xlsx');\r\n\r\n } else if (this.rptType == \"guiderailRpt\" && this.guiderailData) {\r\n ws = XLSX.utils.json_to_sheet(this.guiderailData);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Guiderail data');\r\n XLSX.writeFile(wb, 'VideoLog_Guiderail_Data.xlsx');\r\n\r\n }\r\n }\r\n\r\n async exportAllTables() {\r\n this.isLoading = true;\r\n\r\n let wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n let ws: XLSX.WorkSheet;\r\n\r\n let basicInfoRptData = this.buildBasicRptExportData();\r\n ws = XLSX.utils.json_to_sheet([basicInfoRptData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Basic Info');\r\n\r\n if (!this.segmentData) {\r\n await this.getSegmentData();\r\n }\r\n ws = XLSX.utils.json_to_sheet(this.segmentData);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Segment data');\r\n\r\n if (!this.adminData) {\r\n await this.getAdminData();\r\n }\r\n ws = XLSX.utils.json_to_sheet([this.adminData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Admin data');\r\n\r\n if (!this.pavementData) {\r\n await this.getPavementData();\r\n }\r\n ws = XLSX.utils.json_to_sheet([this.pavementData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Pavement data');\r\n\r\n if (!this.shoulderData) {\r\n await this.getShoulderData();\r\n }\r\n ws = XLSX.utils.json_to_sheet([this.shoulderData]);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Shoulder data');\r\n\r\n if (!this.guiderailData) {\r\n await this.getGuiderailData();\r\n }\r\n ws = XLSX.utils.json_to_sheet(this.guiderailData);\r\n XLSX.utils.book_append_sheet(wb, ws, 'Guiderail data');\r\n\r\n XLSX.writeFile(wb, 'VideoLog_Data.xlsx');\r\n this.isLoading = false;\r\n }\r\n\r\n getTableId(reportType) {\r\n if (reportType == 'basicRpt') {\r\n return 'tblBasicInfo';\r\n }\r\n else if (reportType == 'adminRpt') {\r\n return 'tblAdminData';\r\n }\r\n else if (reportType == 'pavementRpt') {\r\n return 'tblPavementData';\r\n }\r\n else if (reportType == 'shoulderRpt') {\r\n return 'tblShoulderData';\r\n }\r\n else if (reportType == 'guiderailRpt') {\r\n return 'tblGDRailData';\r\n }\r\n }\r\n\r\n sorterFunction(guiderailData) {\r\n return -parseInt(guiderailData.BgnOffset);\r\n }\r\n\r\n async updateReports() {\r\n var selectedYear: number = this.videoLogController.nativeElement.VideoLogService.currentYear;\r\n var latestYear: number = this.videoLogController.nativeElement.VideoLogService.yearRange.years[this.videoLogController.nativeElement.VideoLogService.yearRange.yearIndexMax];\r\n //clear data for all reports\r\n this.segmentData = null;\r\n this.adminData = null;\r\n this.pavementData = null;\r\n this.shoulderData = null;\r\n this.guiderailData = null;\r\n //fill selected report for new location\r\n if (this.curTab == 1) {\r\n this.segmentData = null;\r\n this.getSegmentData();\r\n } else if (this.curTab == 2) {\r\n this.adminData = null;\r\n this.getAdminData();\r\n } else if (this.curTab == 3) {\r\n this.pavementData = null;\r\n await this.getPavementData();\r\n\r\n if (this.pavementData && this.pavementType) {\r\n let surveyDate;\r\n if (this.pavementType == 'Bituminous') {\r\n surveyDate = this.pavementData.bitSurveyDate;\r\n } else if (this.pavementType == 'Concrete') {\r\n surveyDate = this.pavementData.concSurveyDate;\r\n } else if (this.pavementType == 'Reinforced') {\r\n surveyDate = this.pavementData.crcSurveyDate;\r\n } else if (this.pavementType == 'Unpaved') {\r\n surveyDate = this.pavementData.upSurveyDate;\r\n }\r\n surveyDate = new Date(surveyDate);\r\n if (selectedYear < latestYear) {\r\n this.showHistoricReportNotice(surveyDate.getFullYear());\r\n }\r\n }\r\n } else if (this.curTab == 4) {\r\n this.shoulderData = null;\r\n await this.getShoulderData();\r\n \r\n if ((selectedYear < latestYear) && this.shoulderData) {\r\n let surveyDate = new Date(this.shoulderData.condDate);\r\n this.showHistoricReportNotice(surveyDate.getFullYear());\r\n }\r\n } else if (this.curTab == 5) {\r\n this.guiderailData = null;\r\n await this.getGuiderailData();\r\n\r\n if ((selectedYear < latestYear) && this.guiderailData.length > 0) {\r\n this.showHistoricReportNotice();\r\n }\r\n }\r\n }\r\n async getAdminData() {\r\n //******************************************************need url to have enviroment handle**************************\r\n this.isLoading = true;\r\n var requestUrl = \"api/reports/Admin?county=\" + this.crsList[this.aoiIndex].countyCode + \"&route=\" + this.crsList[this.aoiIndex].stateRouteNumber\r\n + \"&segment=\" + this.crsList[this.aoiIndex].segmentNumber;\r\n try {\r\n const data: any = await this.http.get(requestUrl).toPromise();\r\n this.adminData = data;\r\n this.isLoading = false;\r\n } catch(error) {\r\n console.error('Error', error);\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n async getPavementData() {\r\n this.isLoading = true;\r\n const requestUrl = `api/reports/Pavement?county=${this.crsList[this.aoiIndex].countyCode}&route=${this.crsList[this.aoiIndex].stateRouteNumber}&segment=${this.crsList[this.aoiIndex].segmentNumber}&routeType=1`;\r\n\r\n try {\r\n const data: any = await this.http.get(requestUrl).toPromise();\r\n\r\n // Determine the pavement type based on the data retrieved and show respective table\r\n // Pavement types: Bituminous, concrete, reinforced, unpaved\r\n if (data) {\r\n this.pavementData = data;\r\n\r\n if (this.pavementData.bitRoughAvg) {\r\n this.pavementType = 'Bituminous';\r\n } else if (this.pavementData.concRoughAvg) {\r\n this.pavementType = 'Concrete';\r\n } else if (this.pavementData.crcRoughAvg) {\r\n this.pavementType = 'Reinforced';\r\n } else if (this.pavementData.upCorrugation) {\r\n this.pavementType = 'Unpaved';\r\n } else {\r\n this.pavementType = 'Bituminous';\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n } catch (error) {\r\n console.error('Error', error);\r\n this.isLoading = false;\r\n }\r\n }\r\n async getShoulderData() {\r\n this.isLoading = true;\r\n const requestUrl = `api/reports/Shoulder?county=${this.crsList[this.aoiIndex].countyCode}&route=${this.crsList[this.aoiIndex].stateRouteNumber}&segment=${this.crsList[this.aoiIndex].segmentNumber}&routeType=1`;\r\n\r\n try {\r\n const data: any = await this.http.get(requestUrl).toPromise();\r\n\r\n this.shoulderData = data;\r\n this.isLoading = false;\r\n } catch (error) {\r\n console.error('Error', error);\r\n this.isLoading = false;\r\n }\r\n }\r\n async getGuiderailData() {\r\n this.isLoading = true;\r\n const requestUrl = `api/reports/GDRail?county=${this.crsList[this.aoiIndex].countyCode}&route=${this.crsList[this.aoiIndex].stateRouteNumber}&segment=${this.crsList[this.aoiIndex].segmentNumber}&routeType=1`;\r\n\r\n try {\r\n const data: any = await this.http.get(requestUrl).toPromise();\r\n\r\n this.guiderailData = data;\r\n this.isLoading = false;\r\n } catch (error) {\r\n console.error('Error', error);\r\n this.isLoading = false;\r\n }\r\n }\r\n async getSegmentData() {\r\n this.isLoading = true;\r\n var selectedYear: number = this.videoLogController.nativeElement.VideoLogService.currentYear;\r\n var latestYear: number = this.videoLogController.nativeElement.VideoLogService.yearRange.years[this.videoLogController.nativeElement.VideoLogService.yearRange.yearIndexMax];\r\n if (selectedYear < latestYear) {\r\n var requestUrl = \"api/reports/SegmentHist?county=\" + this.crsList[this.aoiIndex].countyCode + \"&route=\" + this.crsList[this.aoiIndex].stateRouteNumber\r\n + \"&segment=\" + this.crsList[this.aoiIndex].segmentNumber + \"&year=\" + selectedYear.toString();\r\n } else {\r\n var requestUrl = \"api/reports/Segment?county=\" + this.crsList[this.aoiIndex].countyCode + \"&route=\" + this.crsList[this.aoiIndex].stateRouteNumber\r\n + \"&segment=\" + this.crsList[this.aoiIndex].segmentNumber;\r\n }\r\n\r\n try {\r\n const data: any[] = await this.http.get(requestUrl).toPromise();\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const year = data[i].date.slice(0, 4);\r\n const month = data[i].date.slice(4, 6);\r\n const day = data[i].date.slice(6, 8);\r\n data[i].date = `${month}/${day}/${year}`;\r\n const latArray: string[] = data[i].latSig.split(':');\r\n const longArray: string[] = data[i].longSig.split(':');\r\n data[i].latSig = (this.convertDMSToDD(parseFloat(latArray[0]), parseFloat(latArray[1]), parseFloat(latArray[2]))).toFixed(6);\r\n data[i].longSig = (this.convertDMSToDD(parseFloat(longArray[0]), parseFloat(longArray[1]), parseFloat(longArray[2]))).toFixed(6);\r\n }\r\n\r\n this.segmentData = data;\r\n this.segmentTitle = `${data[0].county} | ${data[0].route} | ${data[0].segment}`;\r\n this.isLoading = false;\r\n } catch (error) {\r\n console.error('Error', error);\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n async clickOffset(i: number) {\r\n let curYear: number = this.videoLogController.nativeElement.VideoLogService.currentYear ? this.videoLogController.nativeElement.VideoLogService.currentYear : 0;\r\n var crsArray: string[] = this.segmentTitle.split(' | ');\r\n var crs = { countyCode: crsArray[0], stateRouteNumber: crsArray[1], segmentNumber: crsArray[2], offset: this.segmentData[i].offset };\r\n await this.videoLogViewer.nativeElement.setCrs(crs);\r\n this.videoLogController.nativeElement.VideoLogService.currentYear = curYear;\r\n }\r\n convertDMSToDD(degrees: number, minutes: number, seconds: number): number {\r\n return degrees + minutes / 60 + seconds / (60 * 60);\r\n } \r\n \r\n\r\n log(message: string, level: number, isPrivate: boolean) {\r\n if (level > 6) {\r\n let applicationMessage = new CustomEvent('applicationMessage', { detail: { message: 'Something very bad happened, please refresh!', level: level, isPrivate: isPrivate ? isPrivate : false }, composed: true });\r\n window.dispatchEvent(applicationMessage);\r\n } else {\r\n let applicationMessage = new CustomEvent('applicationMessage', { detail: { message: message, level: level, isPrivate: isPrivate ? isPrivate : false }, composed: true });\r\n window.dispatchEvent(applicationMessage);\r\n }\r\n };\r\n\r\n sleep(seconds: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, seconds);\r\n });\r\n }\r\n\r\n closeEndSegWindow() {\r\n this.endSegmentWarningWindow.nativeElement.close();\r\n }\r\n\r\n closeYearWarningWindow() {\r\n this.yearWarningWindow.nativeElement.close();\r\n }\r\n \r\n async goToNextSeg() {\r\n //send event to video-log-controller to advance to next segement\r\n await this.videoLogController.nativeElement.VideoLogService.goToNextSegment();\r\n this.videoLogController.nativeElement.VideoLogService.resumeVideo();\r\n this.endSegmentWarningWindow.nativeElement.close();\r\n }\r\n closeEndCtyWindow() {\r\n this.endCountyWarningWindow.nativeElement.close();\r\n }\r\n async goToNextCty() {\r\n //send event to video-log-controller to advance to next county\r\n await this.videoLogController.nativeElement.VideoLogService.goToNextCounty();\r\n this.videoLogController.nativeElement.VideoLogService.resumeVideo();\r\n this.endCountyWarningWindow.nativeElement.close();\r\n }\r\n closeBgnSegWindow() {\r\n this.beginSegmentWarningWindow.nativeElement.close();\r\n }\r\n async goToPrevSeg() {\r\n //send event to video-log-controller to advance to next segement\r\n await this.videoLogController.nativeElement.VideoLogService.goToPreviousSegment();\r\n this.videoLogController.nativeElement.VideoLogService.resumeVideo();\r\n this.beginSegmentWarningWindow.nativeElement.close();\r\n }\r\n closeBgnCtyWindow() {\r\n this.beginCountyWarningWindow.nativeElement.close();\r\n }\r\n closeHistoricReportNoticeWindow() {\r\n this.historicReportNoticeWindow.nativeElement.close();\r\n }\r\n \r\n async goToPrevCty() {\r\n //send event to video-log-controller to advance to next county\r\n await this.videoLogController.nativeElement.VideoLogService.goToPreviousCounty();\r\n this.videoLogController.nativeElement.VideoLogService.resumeVideo();\r\n this.beginCountyWarningWindow.nativeElement.close();\r\n }\r\n\r\n swapPanels() {\r\n let mapContent = document.getElementById(\"mapContent\");\r\n let imageContent = document.getElementById(\"imageContent\");\r\n let topLeftPanel = document.getElementById(\"topLeftPanel\");\r\n let bottomPanel = document.getElementById(\"bottomPanel\");\r\n\r\n if (topLeftPanel.contains(imageContent)) {\r\n topLeftPanel.appendChild(mapContent);\r\n bottomPanel.appendChild(imageContent);\r\n } else {\r\n topLeftPanel.appendChild(imageContent);\r\n bottomPanel.appendChild(mapContent);\r\n }\r\n }\r\n\r\n showHistoricReportNotice(year: number = -1) {\r\n if (year != -1) {\r\n this.historicRptYear = year;\r\n this.showHistoricRptWarningYear = true;\r\n } else {\r\n this.showHistoricRptWarningYear = false;\r\n }\r\n this.historicReportNoticeWindow.nativeElement.open();\r\n }\r\n\r\n toggleMileMarkers() {\r\n this.showMileMarkers = !this.showMileMarkers;\r\n document.getElementById(\"mileMarkerButton\").title = this.showMileMarkers ? \"Hide Mile Markers\" : \"Show Mile Markers\";\r\n if (this.showMileMarkers) {\r\n const layerSettings = [{ id: this.config.mileMarkerLayerId }]\r\n this.layerService.addMapcoreLayersToMap(layerSettings);\r\n\r\n } else {\r\n // remove layer\r\n const layerArray = this.mapRef.nativeElement.map.layers.toArray();\r\n const mileMarkerLayer = layerArray.filter(l => l.mapcoreProps && l.mapcoreProps.parentId && l.mapcoreProps.parentId == this.config.mileMarkerLayerParentId)[0];\r\n this.mapRef.nativeElement.map.remove(mileMarkerLayer);\r\n }\r\n }\r\n\r\n buildBasicRptExportData() {\r\n let videoLogData = this.videoLogController.nativeElement.VideoLogService.videoLog;\r\n let imageData = this.videoLogController.nativeElement.VideoLogService.image;\r\n return {\r\n county: videoLogData.countyName + videoLogData.countyCode,\r\n route: videoLogData.stateRouteNumber + videoLogData.routeName,\r\n type: this.jurisMap[videoLogData.juris],\r\n direction: videoLogData.direction,\r\n segment: videoLogData.segmentNumber,\r\n offset: imageData.offset,\r\n segmentLength: videoLogData.segmentLength,\r\n latitude: imageData.latitude,\r\n longitude: imageData.longitude,\r\n name: imageData.imageName,\r\n date: imageData.imageDate\r\n }\r\n }\r\n}\r\n","export default \"a.navbar-brand {\\r\\n white-space: normal;\\r\\n text-align: center;\\r\\n word-break: break-all;\\r\\n}\\r\\n\\r\\nhtml {\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n html {\\r\\n font-size: 16px;\\r\\n }\\r\\n}\\r\\n\\r\\n.box-shadow {\\r\\n box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);\\r\\n}\\r\\n\\r\\nheader {\\r\\n background: url('Logo.png') left center no-repeat #1c3881;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFDQTtFQUNFO0lBQ0UsZUFBZTtFQUNqQjtBQUNGOztBQUVBO0VBQ0UsOENBQThDO0FBQ2hEOztBQUVBO0VBQ0UseURBQTZFO0FBQy9FIiwiZmlsZSI6InNyYy9hcHAvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbImEubmF2YmFyLWJyYW5kIHtcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbn1cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcclxuICBodG1sIHtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICB9XHJcbn1cclxuXHJcbi5ib3gtc2hhZG93IHtcclxuICBib3gtc2hhZG93OiAwIC4yNXJlbSAuNzVyZW0gcmdiYSgwLCAwLCAwLCAuMDUpO1xyXG59XHJcblxyXG5oZWFkZXIge1xyXG4gIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vYXNzZXRzL2ltYWdlcy9Mb2dvLnBuZycpIGxlZnQgY2VudGVyIG5vLXJlcGVhdCAjMWMzODgxO1xyXG59XHJcbiJdfQ== */\"","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { AoiToolComponent } from \"../aoi-tool/aoi-tool.component\";\r\nimport * as calcite from 'calcite-web/es6';\r\nimport { Config } from '../Config';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent implements AfterViewInit {\r\n @ViewChild('aoiToolWindow', { static: false }) private aoiToolWindowRef: ElementRef;\r\n @ViewChild('aoiTool', { static: false }) private aoiTool: AoiToolComponent;\r\n @ViewChild('measureToolsWindow', { static: false }) private measureToolsWindowRef: ElementRef;\r\n @ViewChild('distance', { static: false }) private distanceRef: ElementRef;\r\n @ViewChild('tabs', { static: false }) private tabsRef: ElementRef;\r\n @ViewChild('area', { static: false }) private areaRef: ElementRef;\r\n @ViewChild('coordinates', { static: false }) private coordinatesRef: ElementRef;\r\n @ViewChild('routing', { static: false }) private routingRef: ElementRef;\r\n @ViewChild('auth', { static: false }) private pdauthRef: ElementRef;\r\n @ViewChild('bookmarkWindow', { static: false }) private bookmarkWindowRef: ElementRef;\r\n @ViewChild('bookmark', { static: false }) private bookmarkRef: ElementRef;\r\n @ViewChild('userSettingsWindow', { static: false }) private userSettingsWindowRef: ElementRef;\r\n @ViewChild('userSettings', { static: false }) private userSettingsRef: ElementRef;\r\n @ViewChild('aboutWindow', { static: false }) private aboutWindowRef: ElementRef;\r\n @ViewChild('contactWindow', { static: false }) private contactWindowRef: ElementRef;\r\n @ViewChild('helpWindow', { static: false }) private helpWindowRef: ElementRef;\r\n @ViewChild('disclaimerWindow', { static: false }) private readonly disclaimerWindow: ElementRef;\r\n @ViewChild('streetViewWindow', { static: false }) private streetViewWindowRef: ElementRef;\r\n @ViewChild('streetView', { static: false }) private streetViewRef: ElementRef;\r\n @ViewChild('rmsSelect', { static: false }) private rmsSelectRef: ElementRef;\r\n @ViewChild('latLongSelect', { static: false }) private latLongSelectRef: ElementRef;\r\n\r\n skipAOI: boolean = false;\r\n isInternal: boolean;\r\n @Output()\r\n updateIsInternal: EventEmitter = new EventEmitter()\r\n \r\n public config = (window as any).config as Config;\r\n\r\n @Output()\r\n toggleKeyboard: EventEmitter = new EventEmitter()\r\n openWindows: string[] = [];\r\n\r\n @Output()\r\n toggleMapClickable: EventEmitter = new EventEmitter()\r\n\r\n @Input()\r\n rmsLinkParams: { cn: string, rt: string, seg: string };\r\n\r\n private closeAoiWindowSubscription: Subscription;\r\n @Input() closeAoiWindow: Observable;\r\n\r\n private openStreetViewWindowSubscription: Subscription;\r\n @Input() openStreetViewWindow: Observable<{ lat: number; long: number; }>;\r\n\r\n @Output()\r\n updateLocationToAoi: EventEmitter = new EventEmitter()\r\n\r\n navBarButtonState: boolean[] = [false, false, false, false];\r\n\r\n async ngAfterViewInit() {\r\n if (this.config) {\r\n this.isInternal = this.config.isInternal;\r\n this.updateIsInternal.emit(this.isInternal);\r\n\r\n if (this.isInternal) {\r\n var pdauthService = this.pdauthRef.nativeElement.PDAuthService;\r\n pdauthService.enableForcedLogin();\r\n this.openAoiTool();\r\n } else {\r\n this.disclaimerWindow.nativeElement.open();\r\n }\r\n }\r\n\r\n this.aoiTool.done.subscribe(_ => this.closeAoiTool());\r\n calcite.dropdown();\r\n\r\n this.aoiToolWindowRef.nativeElement.addEventListener('openChange', open => {\r\n this.manageOpenWindows(open.detail, 'aoi');\r\n })\r\n this.bookmarkWindowRef.nativeElement.addEventListener('openChange', open => {\r\n this.manageOpenWindows(open.detail, 'bookmark');\r\n })\r\n this.measureToolsWindowRef.nativeElement.addEventListener('openChange', open => {\r\n this.manageOpenWindows(open.detail, 'measurement');\r\n\r\n if (!open.detail) {\r\n this.distanceRef.nativeElement.active = false;\r\n this.areaRef.nativeElement.active = false;\r\n this.coordinatesRef.nativeElement.active = false;\r\n this.routingRef.nativeElement.active = false;\r\n }\r\n\r\n this.toggleMapClickable.emit(!open.detail);\r\n })\r\n\r\n\r\n this.userSettingsRef.nativeElement.addEventListener('activeChange', isActive => {\r\n if (!isActive.detail) {\r\n this.userSettingsWindowRef.nativeElement.close();\r\n }\r\n })\r\n\r\n this.closeAoiWindowSubscription = this.closeAoiWindow.subscribe(() => {\r\n this.closeAoiTool();\r\n if (!this.isInternal) {\r\n this.skipAOI = true;\r\n }\r\n });\r\n\r\n this.openStreetViewWindowSubscription = this.openStreetViewWindow.subscribe((startPosition) => {\r\n this.openStreetView();\r\n setTimeout(() => {\r\n this.streetViewRef.nativeElement.lat = startPosition.lat;\r\n this.streetViewRef.nativeElement.long = startPosition.long;\r\n if (!this.isInternal) {\r\n this.skipAOI = true;\r\n } else {\r\n this.closeAoiTool();\r\n }\r\n }, 1000);\r\n });\r\n\r\n this.streetViewWindowRef.nativeElement.addEventListener('openChange', open => {\r\n this.streetViewRef.nativeElement.active = open.detail;\r\n });\r\n this.streetViewRef.nativeElement.addEventListener('positionChange', (position) => {\r\n this.latLongSelectRef.nativeElement.setAttribute('lat', position.detail.latitude);\r\n this.latLongSelectRef.nativeElement.setAttribute('long', position.detail.longitude);\r\n this.rmsSelectRef.nativeElement.position = position.detail;\r\n });\r\n this.rmsSelectRef.nativeElement.addEventListener('rmsChange', (rms) => {\r\n this.streetViewRef.nativeElement.setRms(rms.detail);\r\n });\r\n this.latLongSelectRef.nativeElement.addEventListener('latChange', (lat) => {\r\n this.streetViewRef.nativeElement.setAttribute('lat', lat.detail);\r\n });\r\n this.latLongSelectRef.nativeElement.addEventListener('longChange', (long) => {\r\n this.streetViewRef.nativeElement.setAttribute('long', long.detail);\r\n });\r\n\r\n }\r\n\r\n newAoi() {\r\n this.updateLocationToAoi.emit();\r\n }\r\n\r\n emitToggleKeyBoard() {\r\n this.toggleKeyboard.emit(!this.openWindows.length);\r\n }\r\n\r\n manageOpenWindows(open:boolean, name:string) {\r\n if (!open) {\r\n this.openWindows.splice(this.openWindows.findIndex(w => w === name), 1);\r\n } else {\r\n this.openWindows.push(name);\r\n }\r\n this.emitToggleKeyBoard();\r\n }\r\n\r\n openAoiTool() {\r\n this.aoiTool.activateTab();\r\n this.aoiToolWindowRef.nativeElement.open();\r\n }\r\n\r\n closeAoiTool() {\r\n this.aoiToolWindowRef.nativeElement.close();\r\n }\r\n\r\n openMeasureTools() {\r\n this.measureToolsWindowRef.nativeElement.open();\r\n this.tabsRef.nativeElement.activateTab('Distance');\r\n this.distanceRef.nativeElement.active = true;\r\n }\r\n\r\n print() {\r\n window.print();\r\n }\r\n\r\n onTabChanged(e) {\r\n const refs = {\r\n 'Area': this.areaRef,\r\n 'Coordinates': this.coordinatesRef,\r\n 'Routing': this.routingRef,\r\n 'Distance': this.distanceRef\r\n };\r\n for (const ref of Object.keys(refs)) {\r\n refs[ref].nativeElement.active = ref === e.detail.name;\r\n }\r\n }\r\n\r\n onWindowOpenChange(e) {\r\n if (!e.detail) {\r\n this.areaRef.nativeElement.active = false;\r\n this.distanceRef.nativeElement.active = false;\r\n this.coordinatesRef.nativeElement.active = false;\r\n this.routingRef.nativeElement.active = false;\r\n }\r\n }\r\n\r\n openBookmark() {\r\n this.bookmarkWindowRef.nativeElement.open();\r\n this.bookmarkRef.nativeElement.active = true;\r\n }\r\n\r\n onBookmarkClose(e) {\r\n if (!e.detail) {\r\n this.bookmarkRef.nativeElement.active = false;\r\n }\r\n }\r\n\r\n openUserSettings() {\r\n this.userSettingsWindowRef.nativeElement.open();\r\n this.userSettingsRef.nativeElement.active = true;\r\n }\r\n\r\n onUserSettingsClose(e) {\r\n if (!e.detail) {\r\n this.userSettingsRef.nativeElement.active = false;\r\n }\r\n }\r\n\r\n openAbout() {\r\n this.aboutWindowRef.nativeElement.open();\r\n }\r\n\r\n openContact() {\r\n this.contactWindowRef.nativeElement.open();\r\n }\r\n\r\n openHelp() {\r\n this.helpWindowRef.nativeElement.open();\r\n }\r\n\r\n openStreetView() {\r\n this.streetViewWindowRef.nativeElement.open();\r\n }\r\n\r\n closeDisclaimer(response: number) {\r\n if (response == 0) {\r\n window.location.replace(\"https://www.penndot.pa.gov/\");\r\n } else if (response == 1) {\r\n this.disclaimerWindow.nativeElement.close();\r\n if (!this.skipAOI) {\r\n this.openAoiTool();\r\n }\r\n }\r\n }\r\n\r\n openRMSLink(siteName: string) {\r\n var url: URL;\r\n\r\n if (siteName === \"oneMap\") {\r\n url = new URL(this.config.oneMapUrl);\r\n } else if (siteName === \"irow\") {\r\n url = new URL(this.config.irowUrl);\r\n } else if (siteName === \"isle\") {\r\n url = new URL(this.config.isleUrl);\r\n } else if (siteName === \"pavementHistory\") {\r\n url = new URL(this.config.pavementHistoryUrl);\r\n } else if (siteName === \"tire\") {\r\n url = new URL(this.config.tireUrl);\r\n }\r\n\r\n url = this.rmsUrlAddParams(url);\r\n window.open(url.toString());\r\n }\r\n\r\n rmsUrlAddParams(url: URL) {\r\n var cn = this.rmsLinkParams.cn != null ? this.rmsLinkParams.cn : '';\r\n var rt = this.rmsLinkParams.rt != null ? this.rmsLinkParams.rt : '';\r\n var sg = this.rmsLinkParams.seg != null ? this.rmsLinkParams.seg : '';\r\n\r\n if (cn != '') url.searchParams.append('cn', cn);\r\n if (rt != '') url.searchParams.append('rt', rt);\r\n if (sg != '') url.searchParams.append('sg', sg);\r\n\r\n return url;\r\n }\r\n\r\n get rmsSnippet() {\r\n if (this.rmsLinkParams) {\r\n const rms = this.rmsLinkParams;\r\n const parts = [rms.cn, rms.rt, rms.seg].filter(x => x);\r\n return `: ${parts.join(' | ')}`;\r\n }\r\n return '';\r\n }\r\n\r\n buttonFocusHandler(btnNumber: number) {\r\n let state = this.navBarButtonState[btnNumber];\r\n if (state) {\r\n this.navBarButtonState[btnNumber] = false;\r\n let navBtn = document.getElementById(\"navBtn\" + btnNumber.toString());\r\n navBtn.blur();\r\n } else {\r\n for (let i = 0; i < this.navBarButtonState.length; i++) {\r\n this.navBarButtonState[i] = (i == btnNumber);\r\n }\r\n }\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif ((window as any).environment === 'test' || (window as any).environment === 'prod') {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n","/* (ignored) */","/* (ignored) */","/* (ignored) */"],"sourceRoot":"webpack:///"}