{"version":3,"file":"bundle.4b5730f9cdbaaa8519e5.js","mappings":"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AC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IAEX,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,eAAe;AACf,IAAK,SAIJ;AAJD,WAAK,SAAS;IACV,4CAA+B;IAC/B,sCAAyB;IACzB,4CAA8B;AAClC,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AA8ED,YAAY;;;;;;;UCn4DZ;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UEhDA;UACA;UACA;UACA;UACA","sources":["C:\\ADT\\github\\ddt_GranicusMap\\CPmap\\Main\\Scripts\\app.ts","webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/define property getters","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/jsonp chunk loading","webpack/before-startup","webpack/startup","webpack/after-startup"],"sourcesContent":["/// \r\nimport * as $ from \"jquery\";\r\nimport * as L from \"leaflet\";\r\nimport \"proj4leaflet\";\r\nimport { Loader, LoaderOptions, google } from 'google-maps';\r\nimport * as bootstrap from \"bootstrap\";\r\n//import { Proj4GeoJSONFeature } from \"proj4leaflet\";\r\n\r\nlet urlParams = new URLSearchParams(location.search),\r\n map: L.Map,\r\n crs: L.Proj.CRS,\r\n mapSettings: MapSettings,\r\n icons: { [name: string]: L.Icon } = {},\r\n iconsForStatus: { [name: string]: L.Icon },\r\n iconsForAssets: Record = {},\r\n iconsForInfoLayers: Record = {},\r\n case_type: string | undefined | null,\r\n borough: string | undefined | null,\r\n boroughBounds: L.LatLngBoundsExpression,\r\n openFaultImage: string,\r\n fiveDayFaultImage: string,\r\n addressPinImage: string,\r\n iconImage: string,\r\n assetLayerMinZoomLevel: number,\r\n assetAttributes: { [fieldName: string]: any } = {},\r\n infoLayerImage: string,\r\n legendSymbols: string[] = [],\r\n mapLayerGroup: L.FeatureGroup,\r\n infoLayerGroup: L.FeatureGroup,\r\n assetLayer: L.Layer,\r\n assetLabelsLayer: L.Layer,\r\n boroughMaskLayer: L.Layer,\r\n boroughBoundaryLayer: L.Layer,\r\n councilLandLayer: L.Layer,\r\n councilLayerMinZoomLevel: number = 10,\r\n faultsLayer: L.Layer,\r\n multipleFaultsLayer: L.Layer,\r\n zoomInMsgHTLM: string,\r\n multipleFaults: { [assetID: string]: string } = {},\r\n selectLayer: L.Marker,\r\n highlightLayer:L.CircleMarker,\r\n addressLayer: L.Marker,\r\n selectedLatForDisplay: number,\r\n selectedLngForDisplay: number,\r\n selectedFeatureX: number | null,\r\n selectedFeatureY: number | null,\r\n selectedAssetId: string = \"\",\r\n source: string | null = '',\r\n customerId: string | null = '',\r\n requiredParams: string[] = ['case_type', 'borough'],\r\n optionalParams: string[] = ['startLat', 'startLng','inForm'],\r\n startLat: number | null,\r\n startLng: number | null,\r\n inForm: boolean = false,\r\n hasZoomedIn: boolean = false,\r\n currentMapExtent: string = \"\",\r\n smallScreenWidth: number = 768,\r\n mapPopup: L.Popup,\r\n faultsPopup: L.Popup,\r\n //locatingOnLoad: boolean,\r\n baseurl: string,\r\n exlamationImagePath: string,\r\n addressBtn: any,\r\n addresSearchModal: bootstrap.Modal ,\r\n msgModal: bootstrap.Modal,\r\n featuresWithFaults:any,\r\n google:google;\r\n\r\n\r\nconst options: LoaderOptions = {/* todo */ };\r\nconst loader = new Loader('AIzaSyC8fIDATqs5Ry79UH4vWpKEe2twtM50i1w', options);\r\n\r\nloader.load().then(function (g) {\r\n google = g;\r\n})\r\n\r\n\r\nfunction showErrorScreen(message:string,consoleMessage:string) {\r\n\r\n let msg = document.getElementById('errorMessage'),\r\n errJumbo = document.getElementById('errorScreen'),\r\n map = document.getElementById('mapid'),\r\n addressSearch = document.getElementById('desktopAddressSearchDiv');\r\n\r\n\r\n msg.innerHTML = message;\r\n map.style.display = 'none';\r\n addressSearch.style.visibility = 'hidden';\r\n errJumbo.style.display = 'block';\r\n console.error(consoleMessage);\r\n}\r\n\r\n// Check if there are any errors with the mapping services\r\nfunction serviceError(url: string) {\r\n sendErrorEmail(\"Service Error. URL is unavailable: \" + url + \" (Map: \" + case_type + \"Borough: \" + borough + \")\");\r\n showErrorScreen(\"We apologise but the mapping service is currently unavailable. The problem is being investigated and we hope to resolve the issue as soon as possible.\", \"Mapping service cannot be returned: \" + url);\r\n}\r\n\r\n//*get the params from the url\r\n\r\nrequiredParams.forEach(function (p) {\r\n if (!urlParams.has(p)) {\r\n //show the error page\r\n showErrorScreen('missing parameters.', 'missing url parameters case_type/borough');\r\n return;\r\n }\r\n});\r\n\r\ncase_type = urlParams.get('case_type');\r\nborough = urlParams.get('borough');\r\n//*get any startup coordinates\r\nif (urlParams.has('startLat') && urlParams.get('startLat')) {\r\n let sl = urlParams.get('startLat');\r\n if (sl) {\r\n startLat = +sl;\r\n }\r\n}\r\nif (urlParams.has('startLng') && urlParams.get('startLng')) {\r\n let sl = urlParams.get('startLng');\r\n if (sl) {\r\n startLng = +sl;\r\n }\r\n}\r\n//*check if map is embedded in a cp form\r\nif (urlParams.has('inForm') && urlParams.get('inForm')) {\r\n inForm = true;\r\n}\r\n//**TESTING */\r\n//inForm = true;\r\n//TEST END\r\n\r\n//*put any other parameters passed, into a dictionary\r\nlet optParams: string = '';\r\n\r\nurlParams.forEach(function (value, key, parent) {\r\n if (value && !requiredParams.includes(key) && !optionalParams.includes(key)) {\r\n optParams += `&${key}=${value}`;\r\n }\r\n});\r\n\r\n\r\nbaseurl = window.location.origin;\r\nif (window.location.pathname !== '/') {\r\n baseurl += window.location.pathname;\r\n}\r\n//*call the web service to retrieve config settings\r\n$.get(`${baseurl}/api/getMapSettings/${case_type}/${borough}`)\r\n .done(function (result) {\r\n mapSettings = result;\r\n initialise();\r\n })\r\n .fail(function (error) {\r\n\r\n showErrorScreen('server error.', `unable to retrieve map settings from server - ${error.statusText}`);\r\n }); \r\n\r\n//*Check if map is being viewed on mobile / tablet\r\nfunction isMobileDevice() {\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n return true;\r\n }\r\n}\r\n\r\nfunction initialise() {\r\n // Setup the EPSG:27700 (British National Grid) projection.\r\n crs = new L.Proj.CRS('EPSG:27700', '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs', {\r\n resolutions: [896.0, 448.0, 224.0, 112.0, 56.0, 28.0, 14.0, 7.0, 3.5, 1.75, 0.875, 0.4375, 0.21875, 0.109375],\r\n origin: [-238375.0, 1376256.0]\r\n });\r\n\r\n\r\n //*gesture handling disabled. Requires \"leaflet-gesture-handling\": \"1.2.1\", adding to the package.json file\r\n //L.Map.addInitHook(\"addHandler\", \"gestureHandling\", GestureHandling);\r\n map = new L.Map(\"mapid\", {\r\n crs: crs,\r\n attributionControl: false\r\n //fullscreenControl: true,\r\n //fullscreenControlOptions: {\r\n // position: \"topleft\"\r\n //}\r\n //gestureHandling: false\r\n });\r\n // map.addControl(new L.Control.Fullscreen({}));\r\n\r\n \r\n\r\n map.whenReady(function() {\r\n //$('#sampleStartMenu').modal('show');\r\n });\r\n createIcons();\r\n createZoomInHTML();\r\n createLegendText();\r\n\r\n if (mapSettings.mapLayerFaultID) {\r\n getAttributesForFeaturesWithFaults(mapSettings.mapLayerFaultID);\r\n }\r\n\r\n addLayers();\r\n setUpEvents();\r\n addButtons();\r\n mapPopup = L.popup();\r\n faultsPopup = L.popup();\r\n boroughBounds = L.latLngBounds([[mapSettings.boroughBounds[0], mapSettings.boroughBounds[1]], [mapSettings.boroughBounds[2], mapSettings.boroughBounds[3]]]);\r\n if (startLat && startLng) {\r\n map.setView(L.latLng(startLat, startLng), 20);\r\n } else {\r\n map.setView(L.latLng(mapSettings.startUpCoords[0], mapSettings.startUpCoords[1]), 5);\r\n map.fitBounds(boroughBounds);\r\n }\r\n //map.gestureHandling.enable();\r\n\r\n addresSearchModal = new bootstrap.Modal('#addressSearchModal');\r\n msgModal = new bootstrap.Modal('#msgModal');\r\n\r\n}\r\n\r\n\r\n//#region Address Searching\r\n\r\n\r\n\r\nfunction showModalAfterLocated() {\r\n let msgTitle: string = '',\r\n msgBody: string = '',\r\n mapMaxMsg:string='';\r\n\r\n\r\n if (mapSettings.isAsset) {\r\n msgTitle = `Select the ${mapSettings.popupTitle}`;\r\n msgBody = `

Now click or tap ${legendSymbols.join(\" or \")} with the problem.

`;\r\n\r\n } else {\r\n msgTitle = 'Select a location';\r\n msgBody = `

Now click or tap on the map to select a location.

`;\r\n }\r\n\r\n showMessageModal(msgTitle, msgBody,'OK', modalType.info);\r\n}\r\n\r\nfunction zoomToAddress(lat:number,lng:number,address:string) {\r\n\r\n map.setView(L.latLng(lat, lng), 12);\r\n showModalAfterLocated();\r\n\r\n}\r\n\r\nfunction returnAddresses(searchText: string) {\r\n let addressSearchSpinner = document.getElementById('addressSearchSpinner'),\r\n addressSearchMessage = document.getElementById('addressSearchMessage'),\r\n listbox = document.getElementById(\"searchlist-modal\");\r\n\r\n if (addressSearchSpinner) {\r\n addressSearchSpinner.style.visibility = 'visible';\r\n }\r\n\r\n\r\n $.ajax({\r\n crossDomain: true,\r\n type: 'GET',\r\n dataType: 'json',\r\n url: mapSettings.addressServiceUrl + searchText,\r\n\r\n })\r\n .always(function () {\r\n addressSearchSpinner.style.visibility = 'hidden'; //* loading gif\r\n })\r\n .done(function (result) {\r\n let addresses: Address[] = [];\r\n for (let a of result.Addresses) {\r\n let address: Address = a;\r\n addresses.push(address);\r\n }\r\n if (addresses.length === 0) {\r\n //*no address found\r\n $(\"#searchlistdiv-modal\").removeClass().addClass(\"searchListHide\");\r\n addressSearchMessage.style.display = 'inline';\r\n $(\"#addSearchHeader\").removeClass('dialogHeaderSuccess dialogHeaderInfo');\r\n $(\"#addSearchHeader\").addClass('dialogHeaderWarning');\r\n\r\n } else {\r\n if (addresses.length === 1) {\r\n addresSearchModal.hide();\r\n //$(\"#addressSearchModal\").modal(\"hide\");\r\n $(\"#searchlistdiv-modal\").removeClass().addClass(\"searchListHide\");\r\n let address = addresses[0];\r\n zoomToAddress(address?.Latitude, address?.Longitude,address.FormattedAddress);\r\n\r\n } else {\r\n let items: string = \"\";\r\n for (let i of addresses) {\r\n items += `
  • ${i.FormattedAddress}
  • `;\r\n }\r\n listbox.innerHTML = items;\r\n\r\n //*set styling\r\n $(\"#searchlistdiv-modal\").removeClass().addClass(\"searchListShow\");\r\n $(\"#addSearchHeader\").removeClass('dialogHeaderWarning dialogHeaderInfo');\r\n $(\"#addSearchHeader\").addClass('dialogHeaderSuccess');\r\n addressSearchMessage.style.display = 'none';\r\n\r\n //*setup click event for when an address in the list is clicked\r\n $('#searchlist-modal li').on('click', function (e) {\r\n let address = addresses.find(item => {\r\n return item.Uprn.toString() == e.target.id;\r\n });\r\n if (address) {\r\n zoomToAddress(address?.Latitude, address?.Longitude, address.FormattedAddress);\r\n addresSearchModal.hide();\r\n //$(\"#addressSearchModal\").modal(\"hide\");\r\n }\r\n \r\n })\r\n }\r\n }\r\n })\r\n .fail(function (jqXHR, textStatus, error) {\r\n\r\n addressSearchMessage.style.display = 'inline';\r\n addressSearchMessage.innerHTML = `

    error

    Sorry, there is a problem finding the address.

    `;\r\n\r\n console.error(textStatus);\r\n })\r\n\r\n}\r\n\r\nfunction addressSearchFromDesktop() {\r\n \r\n let sidEl = document.getElementById(\"searchInputDesktop\");\r\n let modalSearchEl = document.getElementById(\"searchInput\");\r\n let searchText:string = sidEl.value;\r\n modalSearchEl.value = searchText;\r\n addresSearchModal.show();\r\n returnAddresses((document.getElementById(\"searchInput\")).value);\r\n}\r\n//#endregion\r\n\r\n//#region Misc Helper methods\r\n\r\nfunction createZoomInHTML() {\r\n zoomInMsgHTLM = `

    You must zoom in to select a location.

    `\r\n}\r\n\r\nfunction createLegendText() {\r\n let legendContent = document.getElementById('legendContent'),\r\n iconPath:string=\"\",\r\n legendSymbol: string = \"\",\r\n mapKey=[],\r\n html:string;\r\n\r\n if (!mapSettings.no_Legend) {\r\n mapKey.push(`\"red are open reports.`);\r\n mapKey.push(`\"yellow are recently closed reports.`);\r\n }\r\n\r\n if (mapSettings.infoLayers) {\r\n //*info layers\r\n for (let infoLayer of mapSettings.infoLayers) {\r\n for (let symSettings of infoLayer.symbology) {\r\n iconPath = `${baseurl}/images/${symSettings.icon}`;\r\n\r\n mapKey.push(`\"${symSettings.name} ${symSettings.name}.`);\r\n }\r\n }\r\n }\r\n\r\n if (mapSettings.isAsset) {\r\n //*ASSET layer\r\n for (let symSettings of mapSettings.symbology) {\r\n iconPath = `${baseurl}/images/${symSettings.icon}`;\r\n\r\n legendSymbol = `\"${symSettings.name}`\r\n legendSymbols.push(legendSymbol);\r\n\r\n mapKey.push(`\"${symSettings.name} ${symSettings.name}.`);\r\n }\r\n \r\n html = `

    1. Use the search above or zoom into the map to find the location.
    2. Click or tap
    ${legendSymbols.join(\" or \")} to select a location.

    `;\r\n } else {\r\n html = `

    1. Use the search above or zoom into the map to find the location.
    2. Click or tap on the map to select a location.

    `;\r\n }\r\n\r\n if (!mapSettings.no_Legend) {\r\n html += `

    Map Key:
    ${mapKey.join('
    ')}

    `;\r\n }\r\n legendContent.innerHTML = html\r\n}\r\n\r\nfunction showMessageModal(title: string, message: string,btnText:string='Close', type: modalType = modalType.info) {\r\n let msgTitle = document.getElementById('msgModalLabel'),\r\n msgMessage = document.getElementById('msgModalMessage'),\r\n btnMessage = document.getElementById('modalCloseBtn');\r\n\r\n msgTitle.innerHTML = title;\r\n msgMessage.innerHTML = message;\r\n btnMessage.innerHTML = btnText;\r\n\r\n $(\"#msgModalHeader\").removeClass(`${modalType.info} ${modalType.success} ${modalType.warning}`);\r\n $(\"#msgModalHeader\").addClass(type);\r\n\r\n msgModal.show();\r\n}\r\n\r\nfunction generateHtmlForPopup(feature: any) {\r\n let html: string;\r\n\r\n if (feature.layer === mapSettings.singleFaultsLayerID) {\r\n if (feature.properties.STATUS == 'FIVE') {\r\n html = `

    Case ref: ${feature.properties.CASENO}
    Closed on ${new Date(feature.properties.DATE_CLOSED).toDateString()}

    `;\r\n } else {\r\n html = `

    Case ref: ${feature.properties.CASENO}
    Raised on ${new Date(feature.properties.DATE_CREATED).toDateString()}

    `;\r\n }\r\n if (feature.properties.NOTES) {\r\n html += `

    ${feature.properties.NOTES}

    `;\r\n }\r\n } else {\r\n html = '';\r\n for (const key of Object.keys(feature.properties)) {\r\n const value = feature.properties[key];\r\n if (value.STATUS == 'FIVE') {\r\n html += `

    Case ref: ${value.CASENO}
    Closed on ${new Date(value.DATE_CLOSED).toDateString()}

    `;\r\n } else {\r\n html += `

    Case ref: ${value.CASENO}
    Raised on ${new Date(value.DATE_CREATED).toDateString()}

    `;\r\n }\r\n if (value.NOTES) {\r\n html += `

    ${value.NOTES}

    `;\r\n }\r\n html += `
    `;\r\n }\r\n }\r\n return html;\r\n}\r\n\r\nfunction postMessageToForm(latitude: number, longitude: number, assetid: string = '', case_type: string = '') {\r\n let mapResult = {};\r\n let mapResultDefault = { latitude: latitude, longitude: longitude, assetid: assetid, case_type: case_type };\r\n\r\n if (assetAttributes && Object.keys(assetAttributes).length != 0) {\r\n mapResult = { ...mapResultDefault, ...assetAttributes };\r\n } else {\r\n mapResult = mapResultDefault;\r\n }\r\n window.parent.postMessage(mapResult, \"*\");\r\n}\r\n\r\nfunction getAssetAttributes(): string {\r\n let assetAttributeParams: string = '';\r\n if (assetAttributes) {\r\n for (let attribute in assetAttributes) {\r\n assetAttributeParams += \"&\" + attribute + \"=\" + assetAttributes[attribute];\r\n }\r\n }\r\n return assetAttributeParams;\r\n}\r\n\r\nfunction clickEventHandlerForYesButton() {\r\n let lat: number = selectedLatForDisplay;\r\n let lng: number = selectedLngForDisplay;\r\n let newLat: number|null = null;\r\n let newLng: number | null = null;\r\n //let latDiff: number;\r\n //let lngDiff: number;\r\n\r\n //*Convert lat / lng to BNG coordinates for re-conversion if non asset\r\n let xyConverted = crs.project({ lat, lng });\r\n let xForConversion = xyConverted.x;\r\n let yForConversion = xyConverted.y;\r\n\r\n const handleClick = function (lat: number, lng: number) {\r\n if (inForm) {\r\n map.closePopup();\r\n if (highlightLayer) {\r\n highlightLayer.addTo(map);\r\n }\r\n map.panTo(L.latLng(selectedLatForDisplay, selectedLngForDisplay));\r\n postMessageToForm(lat, lng, selectedAssetId, case_type?.toString());\r\n } else {\r\n //*show working screen\r\n $('#working').css(\"visibility\", \"visible\");\r\n //*check for additional asset attributes\r\n let assetAttributeParams: string = getAssetAttributes();\r\n let firmstepUrl: string = `${mapSettings.formUrl}?&lat=${lat}&lng=${lng}&assetid=${selectedAssetId}&case_type=${case_type}${assetAttributeParams}`;\r\n //*add any additional parameters included in the map url to the form url\r\n if (optParams) {\r\n firmstepUrl += optParams;\r\n }\r\n window.open(firmstepUrl, '_top');\r\n }\r\n };\r\n\r\n //*Set the coordinates for conversion using the asset feature if an asset\r\n if (selectedFeatureX && selectedFeatureY) {\r\n xForConversion = selectedFeatureX;\r\n yForConversion = selectedFeatureY;\r\n }\r\n \r\n //**Get the more accurate lat/long for both assets with existing BNG coordinates, or non assets with inaccurate transformed coordinates*/\r\n $('#working').css(\"visibility\", \"visible\");\r\n let accConversion = returnLatLongFromOScoords(xForConversion, yForConversion);\r\n accConversion.then((coords) => {\r\n newLat = coords.lat;\r\n newLng = coords.lng;\r\n //latDiff = Math.abs(lat - newLat);\r\n //lngDiff = Math.abs(lng - newLng);\r\n\r\n }).catch((error) => {\r\n sendErrorEmail(`returnLatLongFromOScoords Error. Using Lat: ${lat} Lng: ${lng} Error msg: ${error.statusText}`);\r\n //console.log(error); no point writing to console as redirecting to form\r\n\r\n }).finally(() => {\r\n $('#working').css(\"visibility\", \"hidden\");\r\n if (newLat == null || newLng == null) {\r\n handleClick(lat, lng);\r\n } else {\r\n handleClick(newLat, newLng);\r\n }\r\n \r\n })\r\n\r\n}\r\n\r\n//*event handler to close the popup when the 'Yes' button is clicked on the report a fault popup\r\n$('#mapid').on('click', '#btnNewFault', function (e) {\r\n clickEventHandlerForYesButton();\r\n});\r\n\r\n\r\nfunction returnHTMLforNewFaultPopup(lat: number, lng: number, land_type: string = '', assetid: string = ''): Promise {\r\n\r\n let popupContent = document.createElement(\"div\"),\r\n popupHeader = document.createElement(\"div\"),\r\n popupBody = document.createElement(\"div\"),\r\n googleDiv = document.createElement(\"div\"),\r\n panoDiv = document.createElement(\"div\"),\r\n popupFooter = document.createElement(\"div\"),\r\n isSmallScreen = $(window).width()! < smallScreenWidth,\r\n locationText: string;\r\n\r\n popupContent.id = 'popUpContentDiv';\r\n popupBody.id = 'popUpBodyDiv';\r\n googleDiv.id = 'googleDiv';\r\n panoDiv.id = 'panoDiv';\r\n\r\n let pano: google.maps.StreetViewPanorama;\r\n\r\n function getGoogleImage() {\r\n\r\n let googleLatLng = new google.maps.LatLng(lat, lng),\r\n msgText: string = \"\";\r\n\r\n //*check if there's a street view within 5m of the clicked location\r\n let request: google.maps.StreetViewLocationRequest = {\r\n location: googleLatLng,\r\n radius: 5,\r\n source: google.maps.StreetViewSource.OUTDOOR\r\n };\r\n let streetViewService = new google.maps.StreetViewService();\r\n streetViewService.getPanorama(request, function (data: google.maps.StreetViewPanoramaData | null, status: google.maps.StreetViewStatus) {\r\n if (status == \"OK\") {\r\n msgText = \"as an additional guide, here's a street view from this location...\";\r\n googleDiv.innerHTML = `

    ${msgText}

    `;\r\n googleDiv.appendChild(panoDiv);\r\n\r\n var heading = google.maps.geometry.spherical.computeHeading(data?.location?.latLng!, googleLatLng);\r\n\r\n let panOptions: google.maps.StreetViewPanoramaOptions = {\r\n //position: googleLatLng,\r\n pano: data?.location?.pano,\r\n pov: {\r\n heading: heading,\r\n pitch: 0\r\n },\r\n addressControl: false,\r\n clickToGo: false,\r\n disableDefaultUI: false,\r\n disableDoubleClickZoom: true,\r\n enableCloseButton: false,\r\n fullscreenControl: true,\r\n linksControl: false,\r\n motionTracking: true,\r\n visible:true\r\n };\r\n pano = new google.maps.StreetViewPanorama(panoDiv, panOptions);\r\n let panid: string;\r\n\r\n } else {\r\n msgText = \"as an additional guide, here's an aerial view of this location...\";\r\n googleDiv.innerHTML = `

    ${msgText}

    `;\r\n googleDiv.appendChild(panoDiv);\r\n\r\n let styles: any = {\r\n hide: [\r\n {\r\n featureType: 'poi.business',\r\n stylers: [{ visibility: 'off' }]\r\n }\r\n ]\r\n };\r\n\r\n const gMap = new google.maps.Map(panoDiv, {\r\n center: googleLatLng,\r\n draggable: false,\r\n mapTypeId: google.maps.MapTypeId.HYBRID,\r\n tilt: 45,\r\n zoom: 18,\r\n mapTypeControl: false,\r\n panControl: false,\r\n rotateControl: false,\r\n scaleControl: true,\r\n scrollwheel: true,\r\n streetViewControl: false,\r\n zoomControl: true\r\n });\r\n\r\n gMap.setOptions({ styles: styles['hide'] });\r\n\r\n let marker = new google.maps.Marker({\r\n clickable: false,\r\n map: gMap,\r\n position: googleLatLng\r\n });\r\n\r\n }\r\n\r\n });\r\n }\r\n \r\n let pArray: Array = [returnLocationDescription(lat, lng)];\r\n\r\n\r\n const promise: Promise = new Promise((resolve, reject) => {\r\n\r\n Promise.all(pArray).then(function (results) {\r\n let searchPointType: string = \"point\";\r\n if (mapSettings.isAsset) {\r\n searchPointType = mapSettings.popupTitle.toLowerCase();\r\n }\r\n let privateLandNote: string = \"\";\r\n if (land_type == \"private\" && mapSettings.allow_Private && mapSettings.private_Land_Msg) {\r\n privateLandNote = `

    ${mapSettings.private_Land_Msg}

    `;\r\n }\r\n let onLocationDescriptionResult: string = results[0];\r\n if (onLocationDescriptionResult) {\r\n popupBody.innerHTML = `

    you've chosen a ${searchPointType}:-
    ${onLocationDescriptionResult}

    ${privateLandNote}
    Choose this location?
    `;\r\n } else {\r\n popupBody.innerHTML = `

    Choose this location?

    `;\r\n }\r\n\r\n if (results[1]) {\r\n pano.setPano(results[1]);\r\n }\r\n\r\n //*Add buttons to popup for reporting a new fault\r\n let yesButtonHtml = '
    ';\r\n let noButtonHtml = '\\n';\r\n popupFooter.innerHTML = yesButtonHtml + noButtonHtml;\r\n\r\n if (!isSmallScreen) {\r\n getGoogleImage();\r\n popupContent.appendChild(googleDiv);\r\n }\r\n popupContent.appendChild(popupBody);\r\n popupContent.appendChild(popupFooter);\r\n\r\n resolve(popupContent);\r\n })\r\n })\r\n return promise;\r\n \r\n}\r\n\r\nfunction returnHTMLforAssetFaultPopup(feature:any): HTMLDivElement {\r\n let popupContent = document.createElement(\"div\"),\r\n popupHeader = document.createElement(\"div\"),\r\n popupBody = document.createElement(\"div\"),\r\n popupFooter = document.createElement(\"div\");\r\n\r\n popupContent.id = 'popUpContentDiv';\r\n popupBody.id = 'popUpBodyDiv';\r\n\r\n let lat: number = feature?.geometry.coordinates[1],\r\n lng: number = feature?.geometry.coordinates[0],\r\n assetId: string = feature?.properties.ASSETID;\r\n\r\n //*if the feature has multiple faults, use the html from the multipleFaults object, otherwise use the features attributes\r\n if (multipleFaults[assetId]) {\r\n popupBody.innerHTML = multipleFaults[assetId];\r\n } else {\r\n popupBody.innerHTML = generateHtmlForPopup(feature.properties);\r\n }\r\n\r\n //*Add button to popup for reporting a new fault\r\n let anotherIssueButtonHtml = '
    ';\r\n\r\n popupFooter.innerHTML = anotherIssueButtonHtml;\r\n\r\n popupHeader.innerHTML = \"

    \" + mapSettings.popupTitle + \"

    \";\r\n popupContent.appendChild(popupHeader);\r\n popupContent.appendChild(popupBody);\r\n popupContent.appendChild(popupFooter);\r\n\r\n return popupContent;\r\n}\r\n\r\n\r\n//#endregion\r\n\r\n//#region Map Setup\r\n\r\n\r\n\r\nfunction addButtons() {\r\n const locateBtn = L.Control.extend({\r\n options: {\r\n position: 'topleft'\r\n },\r\n \r\n onAdd: function (map: L.Map) {\r\n const container = L.DomUtil.create('div', 'leaflet-control-locate leaflet-bar leaflet-control'),\r\n link = L.DomUtil.create('a', 'leaflet-bar-part', container);\r\n link.id = \"leafletLocate\";\r\n link.title = \"Show me where I am..\";\r\n\r\n L.DomEvent.addListener(link, 'click', function () {\r\n map.locate(); \r\n })\r\n L.DomEvent.disableClickPropagation(container);\r\n\r\n return container;\r\n }\r\n\r\n });\r\n map.addControl(new locateBtn);\r\n\r\n //*Add an 'open in new tab' button IF the map is in an iframe on the websites\r\n\r\n if ((window.location != window.parent.location)) {\r\n \r\n let parentUrl: string;\r\n if (window.location.ancestorOrigins) {\r\n parentUrl = window.location.ancestorOrigins[0];\r\n } else {\r\n parentUrl = document.referrer;\r\n }\r\n console.log('parentUrl: '+ parentUrl);\r\n\r\n if (parentUrl.includes('www.sutton.gov.uk') || parentUrl.includes('www.kingston.gov.uk')) {\r\n const openInNewTabBtn = L.Control.extend({\r\n options: {\r\n position: 'topleft'\r\n },\r\n\r\n onAdd: function (map: L.Map) {\r\n const container = L.DomUtil.create('div', 'leaflet-control-newtab leaflet-bar leaflet-control'),\r\n link = L.DomUtil.create('a', 'leaflet-bar-part', container);\r\n link.id = \"leafletOpenInNewTab\";\r\n link.title = \"Open fullscreen in a new tab.\";\r\n\r\n L.DomEvent.addListener(link, 'click', function () {\r\n window.open(location.toString(), '_blank');\r\n })\r\n L.DomEvent.disableClickPropagation(container);\r\n\r\n return container;\r\n }\r\n\r\n });\r\n map.addControl(new openInNewTabBtn);\r\n }\r\n }\r\n\r\n \r\n\r\n const legendBtn = L.Control.extend({\r\n options: {\r\n position: 'topleft'\r\n },\r\n\r\n onAdd: function (map: L.Map) {\r\n const container = L.DomUtil.create('div', 'leaflet-control-legend leaflet-bar leaflet-control'),\r\n link = L.DomUtil.create('a', 'leaflet-bar-part', container);\r\n link.id = \"leafletLegend\";\r\n link.title = \"Show/Hide Legend.\";\r\n\r\n L.DomEvent.addListener(link, 'click', function () {\r\n if ($('#legend').css(\"visibility\") === \"visible\") {\r\n $('#legend').css(\"visibility\", \"hidden\");\r\n $('#legendCloseBtn').css(\"visibility\", \"hidden\");\r\n } else {\r\n $('#legend').css(\"visibility\", \"visible\");\r\n $('#legendCloseBtn').css(\"visibility\", \"visible\");\r\n } \r\n })\r\n L.DomEvent.disableClickPropagation(container);\r\n\r\n return container;\r\n }\r\n\r\n });\r\n map.addControl(new legendBtn);\r\n \r\n\r\n \r\n\r\n\r\n}\r\n\r\nfunction toggleScreenElements(blnHide: boolean) {\r\n let strVis: string,\r\n isSmallScreen = $(window).width()! < smallScreenWidth;\r\n if (blnHide) {\r\n strVis = \"hidden\";\r\n } else {\r\n strVis = \"visible\";\r\n }\r\n \r\n $('#desktopAddressSearchDiv').css(\"visibility\", `${strVis}`);\r\n $('#mapid > div.leaflet-control-container > div.leaflet-top.leaflet-left').css(\"visibility\", `${strVis}`);\r\n //*only want to show the legend button on small screens\r\n if (!blnHide) {\r\n $(\"#mapTooltip\").css(\"display\", \"inline-block\");\r\n \r\n if (isSmallScreen) {\r\n //*show legend button only\r\n $('.leaflet-control-legend').css(\"visibility\", `${strVis}`);\r\n } else {\r\n //*show legend\r\n $('#legend').css(\"visibility\", `${strVis}`);\r\n }\r\n \r\n\r\n if (isMobileDevice()) {\r\n //*hide tooltip on mobile devices\r\n $(\"#mapTooltip\").css(\"display\", \"none\");\r\n }\r\n } else {\r\n $(\"#mapTooltip\").css(\"display\", \"none\");\r\n $('.leaflet-control-legend').css(\"visibility\", `${strVis}`);\r\n $('#legend').css(\"visibility\", `${strVis}`);\r\n $('#legendCloseBtn').css(\"visibility\", `${strVis}`);\r\n \r\n\r\n }\r\n\r\n \r\n}\r\n\r\nfunction createIcons() {\r\n let i = L.icon({\r\n iconUrl: baseurl + \"/images/\" + 'cursorPin.png',\r\n iconSize: [32, 32],\r\n iconAnchor: [16, 32],\r\n popupAnchor: [0, -32]\r\n });\r\n icons['pin'] = i;\r\n\r\n openFaultImage = baseurl + \"/images/\" + 'openFault.png';\r\n i = L.icon({\r\n iconUrl: openFaultImage,\r\n iconSize: [32, 32],\r\n iconAnchor: [16, 16],\r\n popupAnchor: [0, -16]\r\n });\r\n icons['openFault'] = i;\r\n\r\n fiveDayFaultImage = baseurl + \"/images/\" + 'fiveDayFault.png';\r\n i = L.icon({\r\n iconUrl: fiveDayFaultImage,\r\n iconSize: [32, 32],\r\n iconAnchor: [16, 16],\r\n popupAnchor: [0, -16]\r\n });\r\n icons['fiveDayFault'] = i;\r\n\r\n addressPinImage = baseurl + \"/images/\" + 'GreenPin1LargeB.png';\r\n i = L.icon({\r\n iconUrl: addressPinImage,\r\n iconSize: [50, 50],\r\n className: 'iconFade'\r\n });\r\n icons['addressPinImage'] = i;\r\n\r\n let featureSymbology: FeatureSymbology[] = [];\r\n\r\n if (mapSettings.symbology) {\r\n featureSymbology.push({ type: \"AssetLayer\", symbology: mapSettings.symbology });\r\n }\r\n\r\n if (mapSettings.infoLayers) {\r\n for (let infoLayer of mapSettings.infoLayers) {\r\n featureSymbology.push({ type: \"InfoLayer\", symbology: infoLayer.symbology });\r\n }\r\n }\r\n\r\n if (featureSymbology) {\r\n for (let layer of featureSymbology) {\r\n for (let symSettings of layer.symbology) {\r\n iconImage = baseurl + \"/images/\" + symSettings.icon;\r\n let iconKey: string = symSettings.name;\r\n i = L.icon({\r\n iconUrl: iconImage,\r\n iconSize: symSettings.iconSize,\r\n iconAnchor: symSettings.iconAnchor,\r\n popupAnchor: symSettings.popupAnchor\r\n });\r\n icons[symSettings.name] = i;\r\n\r\n if (symSettings.filter) {\r\n iconKey = symSettings.filter;\r\n }\r\n if (layer.type == \"AssetLayer\") {\r\n iconsForAssets[iconKey] = icons[symSettings.name];\r\n }\r\n if (layer.type == \"InfoLayer\") {\r\n iconsForInfoLayers[iconKey] = icons[symSettings.name];\r\n }\r\n \r\n }\r\n } \r\n }\r\n\r\n iconsForStatus = { OPEN: icons['openFault'], FIVE: icons['fiveDayFault'] };\r\n exlamationImagePath = baseurl + \"/images/exclamation.png\";\r\n}\r\n\r\nfunction setUpEvents() {\r\n\r\n\r\n map.on(\"load\", function (e) {\r\n //*show the other screen elements\r\n $('#working').css(\"visibility\", \"hidden\");\r\n })\r\n\r\n //*Set up map tooltip movement\r\n $('#mapid').on('mousemove', function (e) {\r\n $('#mapTooltip').css(\"opacity\", \"0.9\");\r\n $('#mapTooltip', this).css({ left: e.pageX + 10, top: e.pageY - 10});\r\n });\r\n\r\n //*Hide tooltip for touch events / display legend if hidden from small screen toggling\r\n $('#mapid').on({\r\n 'touchstart': function () {\r\n $('#mapTooltip').css(\"display\", \"none\");\r\n }\r\n });\r\n\r\n //*disable map click events for non map div ids and change cursor on mouse over\r\n const divElements = [\"legend\", \"addressSearchModal\", \"desktopAddressSearchDiv\", \"msgModal\"];\r\n divElements.forEach(function (e) {\r\n let selectedElement = document.getElementById(e);\r\n L.DomEvent.disableClickPropagation(selectedElement);\r\n $(selectedElement).on('mousemove', function () {\r\n selectedElement.style.cursor = \"default\";\r\n $(\"#mapTooltip\").css(\"display\", \"none\");\r\n });\r\n $(selectedElement).on('mousemove', function () {\r\n $(\"#mapTooltip\").css(\"display\", \"inline-block\");\r\n });\r\n });\r\n\r\n //*disable map tooltips when over leaflet controls\r\n $(\".leaflet-control-container\").on('mousemove', function () {\r\n $(\"#mapTooltip\").css(\"display\", \"none\");\r\n });\r\n $(\".leaflet-control-container\").on('mouseout', function () {\r\n $(\"#mapTooltip\").css(\"display\", \"inline-block\");\r\n });\r\n\r\n //*toggle mouse wheel zoom scrolling for address search display\r\n let asModal = document.getElementById('addressSearchModal');\r\n if (asModal) {\r\n asModal.addEventListener('show.bs.modal', function (event) {\r\n map.scrollWheelZoom.disable();\r\n });\r\n asModal.addEventListener('hide.bs.modal', function (event) {\r\n map.scrollWheelZoom.enable();\r\n });\r\n }\r\n\r\n\r\n $('#btnAddressSearch').on('click', function (e) {\r\n returnAddresses((document.getElementById(\"searchInput\")).value);\r\n });\r\n\r\n $(\"#searchInput\").on('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n returnAddresses((document.getElementById(\"searchInput\")).value);\r\n }\r\n });\r\n\r\n $(\"#searchInputDesktop\").on('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n addressSearchFromDesktop();\r\n }\r\n });\r\n\r\n $(\"#btnAddressSearchDesktop\").on('click', function (e) {\r\n addressSearchFromDesktop();\r\n });\r\n\r\n //*Hide legend on legend close button click\r\n $(\"#legendCloseBtn\").on('click', function () {\r\n $('#legend').css(\"visibility\", \"hidden\");\r\n $('#legendCloseBtn').css(\"visibility\", \"hidden\");\r\n })\r\n\r\n //*event handler to close the popup when the 'No' button is clicked on the report a fault popup\r\n $('#mapid').on('click', '#btnNo', function (e) {\r\n map.closePopup();\r\n //*remove the pin\r\n if (selectLayer) {\r\n selectLayer.remove();\r\n }\r\n if (highlightLayer) {\r\n highlightLayer.remove();\r\n }\r\n });\r\n\r\n //*event handler to zoom in to first available map level to report when user clicks on map zoomed out too far\r\n $('#mapid').on('click', '#btnZoomToReportLevel', function () {\r\n if (mapPopup) {\r\n let mapCoords = mapPopup.getLatLng();\r\n if (mapCoords) {\r\n map.setView(L.latLng(mapCoords.lat, mapCoords.lng), mapSettings.mapLayerMinZoom);\r\n }\r\n map.closePopup();\r\n }\r\n });\r\n\r\n\r\n function showMapPopup(latLng: L.LatLng, content: string) {\r\n\r\n //*hide the other screen elements\r\n $('#working').css(\"visibility\", \"hidden\");\r\n toggleScreenElements(true);\r\n\r\n mapPopup.setLatLng(latLng);\r\n mapPopup.setContent(content);\r\n map.openPopup(mapPopup);\r\n\r\n window.setTimeout(function () {\r\n if (mapPopup.isOpen()) {\r\n map.closePopup(mapPopup);\r\n }\r\n }, 6000);\r\n\r\n map.on(\"popupclose\", function (e) {\r\n //*show the other screen elements\r\n toggleScreenElements(false);\r\n })\r\n }\r\n\r\n function showFaultPopup(e: L.LeafletMouseEvent) {\r\n //*set selected coordinates and asset id\r\n selectedLatForDisplay = e.latlng.lat;\r\n selectedLngForDisplay = e.latlng.lng;\r\n let feature = e.sourceTarget.feature;\r\n let prop = feature.properties;\r\n if (feature.properties?.length >= 1) {\r\n prop = feature.properties[0];\r\n } \r\n let xy = feature.geometry.coordinates;\r\n selectedFeatureX = xy[0];\r\n selectedFeatureY = xy[1];\r\n selectedAssetId = prop.ASSETID;\r\n\r\n if (mapSettings.out_Parameters) {\r\n /*Need to get the additional attributes from the featuresWithFaults geoJson\r\n * as they won't be held in the fault feature*/\r\n if (featuresWithFaults) {\r\n let faultId = prop.ASSETID;\r\n let asset: any = null;\r\n for (let feature of featuresWithFaults) {\r\n if (feature.properties.ASSETID == faultId) {\r\n asset = feature;\r\n break;\r\n }\r\n }\r\n let fieldList: string[] = mapSettings.out_Parameters.split(',');\r\n assetAttributes = {};\r\n fieldList.forEach((e) => {\r\n for (let attribute in asset.properties) {\r\n if (e == attribute) {\r\n assetAttributes[e] = asset.properties[attribute];\r\n }\r\n }\r\n });\r\n console.log(assetAttributes);\r\n }\r\n else {\r\n /*Should only get here if the layers haven't been set-up correctly\r\n *or not been able to load completely so email error and show the error page.*/\r\n let msg: string = \"Map configured to return additional output parameters but the featuresWithFaults collection is empty. \";\r\n sendErrorEmail(msg + \" (Map: \" + case_type + \"Borough: \" + borough + \")\");\r\n showErrorScreen(\"We apologise but the mapping service is currently unavailable. The problem is being investigated and we hope to resolve the issue as soon as possible.\", msg);\r\n\r\n }\r\n }\r\n //*hide the other screen elements\r\n $('#working').css(\"visibility\", \"hidden\");\r\n toggleScreenElements(true);\r\n\r\n let popupHeader = document.createElement(\"div\");\r\n let popupContent = document.createElement(\"div\");\r\n let featureContent = generateHtmlForPopup(feature);\r\n\r\n popupHeader.innerHTML = \"

    \" + mapSettings.popupTitle + \"

    \" + featureContent;\r\n popupContent.appendChild(popupHeader);\r\n\r\n if (mapSettings.isAsset) {\r\n //Add report button for different issues\r\n let anotherIssueButton = document.createElement(\"div\");\r\n anotherIssueButton.innerHTML = '
    ';\r\n popupContent.appendChild(anotherIssueButton);\r\n }\r\n\r\n faultsPopup.setLatLng(L.latLng(selectedLatForDisplay, selectedLngForDisplay));\r\n faultsPopup.setContent(popupContent);\r\n map.openPopup(faultsPopup);\r\n\r\n window.setTimeout(function () {\r\n if (faultsPopup.isOpen()) {\r\n map.closePopup(faultsPopup);\r\n }\r\n }, 6000);\r\n\r\n map.on(\"popupclose\", function (e) {\r\n //*show the other screen elements\r\n toggleScreenElements(false);\r\n })\r\n\r\n }\r\n\r\n //*Map Events\r\n\r\n map.on('moveend', function (e) {\r\n //*update asset legend text with zoom in msg if assets not showing\r\n let msg = document.getElementById('legendZoomMsg');\r\n let zoomLevel: number = map.getZoom();\r\n let mapDiv = document.getElementById('mapid');\r\n let mapTooltip = document.getElementById('mapTooltip');\r\n let pinCursor = baseurl + \"/images/\" + 'cursorPin.png';\r\n\r\n //*Handle tooltip if cursor moves over info layers\r\n infoLayerGroup.on('mouseover', function () {\r\n $('.leaflet-interactive').css('cursor', 'pointer');\r\n mapTooltip.innerHTML = 'Click / tap to view information';\r\n });\r\n\r\n if (mapSettings.isAsset) {\r\n infoLayerGroup.on(\"mouseout\", function () {\r\n mapTooltip.innerHTML = 'Click on the ' + mapSettings.popupTitle.toLowerCase();\r\n });\r\n }\r\n\r\n //*Control visibility of fault layers\r\n if (zoomLevel >= mapSettings.mapLayerMinZoom) {\r\n mapLayerGroup.addLayer(faultsLayer);\r\n mapLayerGroup.addLayer(multipleFaultsLayer);\r\n }\r\n if (hasZoomedIn && zoomLevel < mapSettings.mapLayerMinZoom) {\r\n mapLayerGroup.removeLayer(faultsLayer);\r\n mapLayerGroup.removeLayer(multipleFaultsLayer);\r\n }\r\n\r\n //*Change tooltip and cursor if event layer displays reports for asset & non asset maps\r\n if (faultsLayer) {\r\n faultsLayer.on('mouseover', function () {\r\n $('.leaflet-interactive').css('cursor', 'pointer');\r\n mapTooltip.innerHTML = 'Click / tap to view report';\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on('mouseover', function () {\r\n $('.leaflet-interactive').css('cursor', 'pointer');\r\n mapTooltip.innerHTML = 'Click / tap to view report';\r\n });\r\n }\r\n\r\n //*Control visibility of info layers\r\n if (mapSettings.infoLayers) {\r\n if (zoomLevel >= mapSettings.mapLayerMinZoom) {\r\n infoLayerGroup.addTo(map);\r\n }\r\n if (hasZoomedIn && zoomLevel < mapSettings.mapLayerMinZoom) {\r\n infoLayerGroup.removeFrom(map);\r\n }\r\n }\r\n\r\n //*Display council land layer information if zoomed into relevant zoom level\r\n if (mapSettings.councilMaintainedLayerID) {\r\n if (hasZoomedIn) {\r\n councilLandLayer.clearAllEventListeners();\r\n mapLayerGroup.removeLayer(councilLandLayer);\r\n }\r\n let msg2 = document.getElementById('legendCouncilZoomMsg');\r\n //Toggle council land layer visibility and legend information based on zoom level\r\n if (zoomLevel > councilLayerMinZoomLevel) {\r\n hasZoomedIn = true;\r\n msg2.style.display = 'inline';\r\n councilLandLayer = L.Proj.geoJson(addWFSLayer(mapSettings.councilMaintainedLayerID, getMapExtent()), {\r\n style: function () {\r\n return {\r\n weight: 0,\r\n fillColor: 'orange',\r\n fillOpacity: 0.5\r\n }\r\n }\r\n });\r\n mapLayerGroup.addLayer(councilLandLayer);\r\n if (!mapSettings.allow_Private) {\r\n councilLandLayer.on(\"mousemove\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n $('.leaflet-interactive').css('cursor', 'url(\"' + pinCursor + '\") 16 32, auto');\r\n });\r\n councilLandLayer.on(\"mouseover\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n $('.leaflet-interactive').css('cursor', 'url(\"' + pinCursor + '\") 16 32, auto');\r\n });\r\n councilLandLayer.on(\"mouseout\", function () {\r\n mapTooltip.innerHTML = 'Cannot report at this location';\r\n $('.leaflet-interactive').css('cursor', 'not-allowed');\r\n });\r\n } else {\r\n $('.leaflet-interactive').css('cursor', 'url(\"' + pinCursor + '\") 16 32, auto');\r\n councilLandLayer.on(\"mousemove\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n $('.leaflet-interactive').css('cursor', 'url(\"' + pinCursor + '\") 16 32, auto');\r\n });\r\n councilLandLayer.on(\"mouseover\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n $('.leaflet-interactive').css('cursor', 'url(\"' + pinCursor + '\") 16 32, auto');\r\n });\r\n councilLandLayer.on(\"mouseout\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n mapDiv.style.cursor = 'url(\"' + pinCursor + '\") 16 32, auto';\r\n });\r\n }\r\n }\r\n if (zoomLevel <= councilLayerMinZoomLevel && hasZoomedIn) {\r\n msg2.style.display = 'none';\r\n mapLayerGroup.removeLayer(councilLandLayer);\r\n }\r\n\r\n }\r\n\r\n if (mapSettings.isAsset) {\r\n if (hasZoomedIn) {\r\n mapLayerGroup.removeLayer(assetLayer);\r\n if (mapSettings.label_Settings?.field) {\r\n mapLayerGroup.removeLayer(assetLabelsLayer);\r\n }\r\n }\r\n if (zoomLevel < mapSettings.mapLayerMinZoom) {\r\n msg.innerHTML = '1. Use the search above or zoom into the map to find the location.
    2. Click or tap ';\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n if (faultsLayer) {\r\n faultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n });\r\n }\r\n }\r\n if (zoomLevel >= mapSettings.mapLayerMinZoom) {\r\n hasZoomedIn = true;\r\n //*add assets for asset maps\r\n assetLayer = L.Proj.geoJson(addWFSLayer(mapSettings.mapLayerID, getMapExtent(),mapSettings.mapLayerFilter), {\r\n pointToLayer: function (geojson, latlng) {\r\n let iconKey = mapSettings.symbology[0].name;\r\n if (geojson.properties.LEAFLET_STYLE) {\r\n console.log(\"LEAFLET_STYLE: \" + geojson.properties.LEAFLET_STYLE);\r\n iconKey = geojson.properties.LEAFLET_STYLE;\r\n }\r\n let marker = L.marker(latlng, {\r\n icon: iconsForAssets[iconKey]\r\n });\r\n\r\n return marker;\r\n }\r\n });\r\n if (mapSettings.label_Settings?.field) {\r\n assetLabelsLayer = L.Proj.geoJson(addWFSLayer(mapSettings.mapLayerID, getMapExtent(), mapSettings.mapLayerFilter), {\r\n pointToLayer: function (geojson, latlng) {\r\n let marker = L.marker(latlng, {\r\n icon: L.divIcon({\r\n html: geojson.properties[mapSettings.label_Settings.field],\r\n className: 'text-below-marker'\r\n }),\r\n interactive: false\r\n });\r\n return marker;\r\n }\r\n });\r\n mapLayerGroup.addLayer(assetLabelsLayer);\r\n }\r\n mapLayerGroup.addLayer(assetLayer);\r\n msg.innerHTML = 'Click or tap ';\r\n mapTooltip.innerHTML = 'Click on the ' + mapSettings.popupTitle.toLowerCase();\r\n if (faultsLayer) {\r\n faultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Click on the ' + mapSettings.popupTitle.toLowerCase();\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Click on the ' + mapSettings.popupTitle.toLowerCase();\r\n });\r\n }\r\n }\r\n } else {\r\n\r\n if (zoomLevel < mapSettings.mapLayerMinZoom) {\r\n msg.innerHTML = '1. Use the search above or zoom into the map to find the location.
    2. Click or tap on the map to select a location.';\r\n //councilLandLayer.clearAllEventListeners();\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n let t = map.getContainer();\r\n //L.DomUtil.removeClass(map.getContainer(), 'pin-cursor-enabled');\r\n //mapDiv.style.cursor = '';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n if (faultsLayer) {\r\n faultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Scroll to zoom map';\r\n $('.leaflet-interactive').css('cursor', 'grab');\r\n });\r\n }\r\n } else {\r\n msg.innerHTML = 'Click or tap on the map to select a location.';\r\n //councilLandLayer.clearAllEventListeners();\r\n if (!mapSettings.allow_Private) {\r\n mapTooltip.innerHTML = 'Find location - council land only';\r\n mapDiv.style.cursor = 'not-allowed';\r\n if (faultsLayer) {\r\n faultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Find location - council land only';\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on('mouseout', function () {\r\n mapTooltip.innerHTML = 'Find location - council land only';\r\n });\r\n }\r\n } else {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n //mapDiv.style.cursor = 'url(\"' + pinCursor + '\") 16 32, auto';\r\n //L.DomUtil.addClass(map.getContainer(), 'pin-cursor-enabled');\r\n $('.leaflet-interactive').css('cursor', 'crosshair');\r\n if (faultsLayer) {\r\n faultsLayer.on(\"mouseout\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n });\r\n }\r\n if (multipleFaultsLayer) {\r\n multipleFaultsLayer.on(\"mouseout\", function () {\r\n mapTooltip.innerHTML = 'Click / tap at the location';\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n //*copyright text\r\n let copyright = document.getElementById('copyrightText');\r\n copyright.innerHTML = mapSettings.oScopyright;\r\n\r\n });\r\n\r\n // Map click events\r\n\r\n //* Click events for info layers\r\n infoLayerGroup.on('click', function (e: L.LeafletMouseEvent) {\r\n\r\n let latLng = L.latLng(e.latlng.lat, e.latlng.lng);\r\n showMapPopup(latLng, e.sourceTarget.feature.properties.POPUP_CONTENTS);\r\n console.log(e);\r\n });\r\n\r\n //* Click events for all other layers\r\n mapLayerGroup.on('click', function (e: L.LeafletMouseEvent) {\r\n\r\n console.log(e);\r\n let latLng = L.latLng(e.latlng.lat, e.latlng.lng);\r\n let isSmallScreen = $(window).width()! < smallScreenWidth;\r\n selectedFeatureX = null;\r\n selectedFeatureY = null;\r\n\r\n //*Hide tooltip\r\n $(\"#mapTooltip\").css(\"display\", \"none\");\r\n\r\n //Click events for faults\r\n if (e.sourceTarget.feature.layer == mapSettings.singleFaultsLayerID) {\r\n showFaultPopup(e);\r\n }\r\n\r\n //Click event for asset multiple faults\r\n if (e.sourceTarget.feature.layer == mapSettings.multipleFaultsLayerID) {\r\n showFaultPopup(e);\r\n }\r\n\r\n //Popup if zoomed out too far\r\n if (map.getZoom() < mapSettings.mapLayerMinZoom) {\r\n if (e.sourceTarget.feature.layer !== mapSettings.singleFaultsLayerID && e.sourceTarget.feature.layer !== mapSettings.multipleFaultsLayerID) {\r\n showMapPopup(latLng, zoomInMsgHTLM);\r\n }\r\n } else {\r\n //Map click events for zoomed in map\r\n if (e.sourceTarget.feature.layer == mapSettings.boroughMaskLayerID) {\r\n //Click on out of borough\r\n let msg: string = `

    Sorry, you can only report an incident within the borough.

    `;\r\n if (!mapSettings.allow_Private) {\r\n msg += `

    The areas maintained by the council are highlighted on the map in orange.

    `;\r\n } else {\r\n msg += ``;\r\n }\r\n showMapPopup(latLng, msg);\r\n }\r\n //Create popup template for new reports\r\n const createPopup = function (land_type?: string) {\r\n if (!faultsPopup.isOpen()) {\r\n $('#working').css(\"visibility\", \"visible\");\r\n if (selectLayer) {\r\n selectLayer.remove();\r\n }\r\n if (highlightLayer) {\r\n highlightLayer.remove();\r\n }\r\n\r\n\r\n const popUpFromLatLong = function () {\r\n selectLayer = L.marker([selectedLatForDisplay, selectedLngForDisplay], {\r\n icon: icons['pin']\r\n });\r\n\r\n if (mapSettings.isAsset) {\r\n highlightLayer = L.circleMarker(L.latLng(selectedLatForDisplay, selectedLngForDisplay), {\r\n color: 'red',\r\n fillColor: '#f03',\r\n fillOpacity: 0.5,\r\n radius: 50\r\n }).addTo(map);\r\n\r\n selectLayer.setOpacity(0);\r\n }\r\n\r\n returnHTMLforNewFaultPopup(selectedLatForDisplay, selectedLngForDisplay, land_type).then(content => {\r\n let theMaxWidth: number = 0,\r\n theMaxHeight: number = 0;\r\n\r\n if (isSmallScreen) {\r\n theMaxWidth = 270;\r\n } else {\r\n theMaxWidth = 500;\r\n }\r\n\r\n selectLayer.bindPopup((content), {\r\n maxWidth: theMaxWidth\r\n });\r\n selectLayer.on(\"popupopen\", function (e) {\r\n let p = selectLayer.getPopup();\r\n //*update after 2 seconds to ensure the google image will fit on the screen\r\n setTimeout(function () {\r\n $('#working').css(\"visibility\", \"hidden\");\r\n p?.update();\r\n }, 2000);\r\n });\r\n selectLayer.addTo(map);\r\n selectLayer.openPopup();\r\n //*hide the legend and address search\r\n toggleScreenElements(true);\r\n\r\n selectLayer.on(\"popupclose\", function (e) {\r\n //selectLayer.remove();\r\n //*show the legend and address search\r\n toggleScreenElements(false);\r\n if (highlightLayer) {\r\n highlightLayer.remove();\r\n }\r\n })\r\n })\r\n };\r\n\r\n\r\n selectedLatForDisplay = e.latlng.lat;\r\n selectedLngForDisplay = e.latlng.lng;\r\n\r\n //*Use the coords from the asset feature if available\r\n if (e.layer.feature.geometry.type=='Point') {\r\n\r\n let xy = e.sourceTarget.feature.geometry.coordinates;\r\n selectedFeatureX = xy[0];\r\n selectedFeatureY = xy[1];\r\n }\r\n popUpFromLatLong();\r\n }\r\n }\r\n\r\n if (e.sourceTarget.feature.layer == mapSettings.councilMaintainedLayerID) {\r\n //Clicked on council maintained land layer\r\n createPopup(\"council\");\r\n }\r\n if (e.sourceTarget.feature.layer == mapSettings.boroughBoundaryLayerID && mapSettings.allow_Private) {\r\n //Clicked inside borough and private reports allowed\r\n createPopup(\"private\");\r\n }\r\n if (e.sourceTarget.feature.layer == mapSettings.boroughBoundaryLayerID && !mapSettings.allow_Private && !mapSettings.isAsset) {\r\n let msg: string = `

    Sorry, you can only report an incident on council maintained land.

    `;\r\n if (!mapSettings.allow_Private) {\r\n msg += `

    The areas maintained by the council are highlighted on the map in orange.

    `;\r\n } else {\r\n msg += ``;\r\n }\r\n showMapPopup(latLng, msg);\r\n }\r\n if (e.sourceTarget.feature.layer == mapSettings.mapLayerID) {\r\n //Clicked on an asset\r\n let featureProperties = e.sourceTarget.feature.properties;\r\n selectedAssetId = featureProperties.ASSETID;\r\n if (mapSettings.out_Parameters) {\r\n let fieldList: string[] = mapSettings.out_Parameters.split(',');\r\n assetAttributes = {};\r\n //fieldList.push('UID');\r\n fieldList.forEach((e) => {\r\n for (let attribute in featureProperties) {\r\n if (e == attribute) {\r\n assetAttributes[e] = featureProperties[attribute];\r\n }\r\n }\r\n });\r\n console.log(assetAttributes);\r\n }\r\n createPopup();\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction getMapExtent() {\r\n let latlngBounds = map.getBounds();\r\n let nw = crs.project(latlngBounds.getNorthWest());\r\n let ne = crs.project(latlngBounds.getNorthEast());\r\n let sw = crs.project(latlngBounds.getSouthWest());\r\n let se = crs.project(latlngBounds.getSouthEast());\r\n let projectedBounds = L.bounds([nw, ne, sw, se]);\r\n currentMapExtent = projectedBounds?.min?.x + \",\" + projectedBounds?.min?.y + \",\" + projectedBounds?.max?.x + \",\" + projectedBounds?.max?.y;\r\n return currentMapExtent;\r\n}\r\n\r\nfunction mergeMultipleFaults(geoJson: any) {\r\n // group features by ASSETID\r\n const assets = Array.from(\r\n geoJson.features.reduce((a: any, c: any) => {\r\n const id = c.properties.ASSETID;\r\n if (!a.has(id)) a.set(id, []); // <-- initialise each entry with an empty array\r\n a.get(id).push(c); // <-- add the feature to the array for that ASSETID\r\n return a;\r\n }, new Map()) // <-- the accumulator is a Map\r\n );\r\n\r\n // create new features\r\n const newFeatures = assets.reduce((a: any, c: any) => {\r\n a.push({\r\n \"type\": \"Feature\",\r\n \"geometry\": c[1][0].geometry, // <-- take geometry from first array entry\r\n \"properties\": c[1].map((f: { properties: any; }) => f.properties) // <-- just retain the properties of the feature\r\n });\r\n return a;\r\n }, []);\r\n\r\n // create new feature collection\r\n const newFc = {\r\n \"type\": \"FeatureCollection\",\r\n \"title\": mapSettings.multipleFaultsLayerID,\r\n \"features\": newFeatures\r\n }\r\n return newFc;\r\n}\r\n\r\n/*Some assets (lights) may have additional attributes which the form needs but are not held in the Fault layer\r\nso they need to be read from another layer and looked up whenever another fault is reported on an asset with\r\nan existing OPEN/FIVE fault\r\n*/\r\nfunction getAttributesForFeaturesWithFaults(layerName: string) {\r\n let geoJson:any = addWFSLayer(layerName);\r\n featuresWithFaults = geoJson?.features;\r\n\r\n}\r\n\r\nfunction addFeatureInfo(geoJson: any, projection: string, layername: string) {\r\n geoJson.crs = {\r\n \"type\": \"name\",\r\n \"properties\": {\r\n \"name\": \"urn:ogc:def:crs:EPSG::\" + projection\r\n }\r\n };\r\n let geoJsonFeatures = geoJson.features;\r\n geoJsonFeatures.forEach(function (e: any) {\r\n e.layer = layername;\r\n });\r\n return geoJson;\r\n}\r\n\r\nfunction addWFSLayer(layerName: string, extent?: string, filter?: string) {\r\n let rootUrl = mapSettings.featureServiceUrl;\r\n let defaultParameters: any;\r\n defaultParameters = {\r\n service: 'WFS',\r\n request: 'GetFeature',\r\n srsname: 'EPSG:27700',\r\n typeName: 'statmap:' + layerName,\r\n outputFormat: 'geojson'\r\n };\r\n if (extent) {\r\n defaultParameters.bbox = currentMapExtent;\r\n }\r\n if (filter) {\r\n defaultParameters.filter = filter;\r\n }\r\n\r\n let parameters = L.Util.extend(defaultParameters);\r\n let URL = rootUrl + L.Util.getParamString(parameters);\r\n\r\n let jsonData;\r\n\r\n $.ajax({\r\n url: URL,\r\n async: false,\r\n crossDomain: true\r\n }).done(function (response, textStatus, jqXHR) {\r\n if (!jqXHR.responseJSON) {\r\n serviceError(URL);\r\n }\r\n if (layerName == mapSettings.multipleFaultsLayerID) {\r\n response = mergeMultipleFaults(response);\r\n }\r\n addFeatureInfo(response, \"27700\", layerName);\r\n jsonData = response;\r\n //L.Proj.geoJson(response).addTo(map);\r\n }).fail(function (jqXHR, textStatus, errorThrown) {\r\n if (!jqXHR.responseJSON) {\r\n serviceError(URL);\r\n }\r\n console.log(jqXHR);\r\n console.log(textStatus);\r\n console.log(errorThrown);\r\n });\r\n\r\n return jsonData;\r\n\r\n}\r\n\r\nfunction addLayers() {\r\n\r\n mapLayerGroup = L.featureGroup().addTo(map);\r\n infoLayerGroup = L.featureGroup();\r\n\r\n //*configuration settings for different os basemaps\r\n let basemapConfig = [\r\n { type: \"overview\", minZoom: 5, maxZoom: 10 },\r\n { type: \"detailed\", minZoom: 11, maxZoom: 13, className: \"grayscale\" }\r\n ];\r\n\r\n //*add os basemaps\r\n basemapConfig.forEach(function (basemap) {\r\n let cssStyle = (basemap.className != null) ? basemap.className : '';\r\n let url = mapSettings.oSbaseMapUrl + '/Road_27700/{z}/{x}/{y}.png';\r\n let tileLayer = L.tileLayer(url, {\r\n minZoom: basemap.minZoom,\r\n maxZoom: basemap.maxZoom,\r\n className: cssStyle,\r\n attribution: mapSettings.oScopyright\r\n }).addTo(map);\r\n });\r\n \r\n\r\n //*add borough mask\r\n boroughMaskLayer = L.Proj.geoJson(addWFSLayer(mapSettings.boroughMaskLayerID), {\r\n style: function () {\r\n return {\r\n color: 'black',\r\n fillColor: 'white',\r\n fillOpacity: 0.8\r\n }\r\n }\r\n });\r\n mapLayerGroup.addLayer(boroughMaskLayer);\r\n\r\n //*add borough boundary\r\n boroughBoundaryLayer = L.Proj.geoJson(addWFSLayer(mapSettings.boroughBoundaryLayerID), {\r\n style: function () {\r\n return {\r\n color: 'black',\r\n fillColor: 'white',\r\n fillOpacity: 0\r\n }\r\n }\r\n });\r\n mapLayerGroup.addLayer(boroughBoundaryLayer);\r\n\r\n //*add information layers to the map\r\n if (mapSettings.infoLayers) {\r\n mapSettings.infoLayers.forEach(function (layer) {\r\n var infoLayer = L.Proj.geoJson(addWFSLayer(layer.info_layer_id), {\r\n pointToLayer: function (geojson, latlng) {\r\n let iconKey = layer.symbology[0].name;\r\n let marker = L.marker(latlng, {\r\n icon: iconsForInfoLayers[iconKey]\r\n });\r\n return marker;\r\n }\r\n });\r\n infoLayerGroup.addLayer(infoLayer);\r\n });\r\n }\r\n \r\n\r\n //*initialise single faults layer\r\n faultsLayer = L.Proj.geoJson(addWFSLayer(mapSettings.singleFaultsLayerID,undefined,mapSettings.singleFaultsLayerFilter), {\r\n //filter: function (feature) {\r\n // if (feature.properties.CASE_TYPE.toUpperCase() === mapSettings.event_Type.toUpperCase() && feature.properties.BOROUGH.toUpperCase() === borough?.toUpperCase() && [\"OPEN\", \"FIVE\"].includes(feature.properties.STATUS)) {\r\n // return true;\r\n // }\r\n // return false;\r\n //},\r\n pointToLayer: function (geojson, latlng) {\r\n let marker = L.marker(latlng, {\r\n icon: iconsForStatus[geojson.properties.STATUS]\r\n });\r\n return marker;\r\n }\r\n });\r\n\r\n //*initialise multiple faults layer\r\n multipleFaultsLayer = L.Proj.geoJson(addWFSLayer(mapSettings.multipleFaultsLayerID, undefined, mapSettings.multipleFaultsLayerFilter), {\r\n //filter: function (feature) {\r\n // if (feature.properties[0].CASE_TYPE.toUpperCase() === mapSettings.event_Type.toUpperCase() && feature.properties[0].BOROUGH.toUpperCase() === borough?.toUpperCase()) {\r\n // return true;\r\n // }\r\n // return false;\r\n //},\r\n pointToLayer: function (geojson, latlng) {\r\n let statusIcon = \"FIVE\";\r\n for (const key of Object.keys(geojson.properties)) {\r\n const value = geojson.properties[key];\r\n if (value.STATUS == \"OPEN\") {\r\n statusIcon = \"OPEN\";\r\n }\r\n }\r\n let marker = L.marker(latlng, {\r\n icon: iconsForStatus[statusIcon]\r\n });\r\n return marker;\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\n//#endregion\r\n\r\n//#region Async web service calls\r\n\r\nfunction sendErrorEmail(msg: string): Promise {\r\n\r\n const promise: Promise = new Promise((resolve, reject) => {\r\n\r\n $.post({\r\n url: `${baseurl}/api/emailError`,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n data: JSON.stringify({\r\n body: msg,\r\n iserror: true\r\n }),\r\n dataType: 'json',\r\n })\r\n .done(function (result) {\r\n resolve(result);\r\n })\r\n .fail(function (error) {\r\n console.error(error.responseText);\r\n });\r\n\r\n })\r\n\r\n return promise;\r\n}\r\n\r\nfunction returnLatLongFromOScoords(x: number, y: number): Promise {\r\n\r\n const promise: Promise = new Promise((resolve, reject) => {\r\n let description: string = \"\";\r\n \r\n $.get(`${mapSettings.spatialServiceUrl}CoordinateConversion/coordinates/OSGB1936BritishNationalGridTN15GM15/${x}/${y}/ETRS89Geodetic`)\r\n .done(function (result) {\r\n let coords = L.latLng(result.targetY, result.targetX);\r\n resolve(coords);\r\n })\r\n .fail(function (error) {\r\n //\r\n console.error(error.responseText);\r\n reject(error);\r\n });\r\n\r\n })\r\n\r\n return promise;\r\n} \r\n\r\nfunction returnLocationDescription(lat: number, lng: number): Promise {\r\n\r\n const promise: Promise = new Promise((resolve, reject) => {\r\n let description: string = \"\";\r\n let pnt = crs.project(L.latLng(lat, lng));\r\n $.get(`${baseurl}/api/getNearestAddressToPoint/${pnt.x}/${pnt.y}/${borough}`)\r\n .done(function (result) {\r\n resolve(result);\r\n })\r\n .fail(function (error) {\r\n resolve(\"\");\r\n console.error(error.responseText);\r\n }); \r\n\r\n })\r\n\r\n return promise;\r\n} \r\n\r\n//#region ENUMS\r\nenum modalType {\r\n success = \"dialogHeaderSuccess\",\r\n info = \"dialogHeaderInfo\",\r\n warning =\"dialogHeaderWarning\"\r\n}\r\n//#endregion\r\n\r\n//#region INTERFACES\r\n\r\ninterface Address {\r\n FormattedAddress: string;\r\n Uprn: number;\r\n Latitude: number;\r\n Longitude: number;\r\n}\r\n\r\ninterface MapSettings {\r\n gisServer: string;\r\n addressServiceUrl: string;\r\n spatialServiceUrl: string;\r\n featureServiceUrl: string;\r\n mapServiceUrl: string;\r\n oSbaseMapUrl: string;\r\n oSbaseMapTextUrl: string;\r\n singleFaultsLayerID: string;\r\n singleFaultsLayerFilter: string,\r\n multipleFaultsLayerID: string;\r\n multipleFaultsLayerFilter: string;\r\n boroughMaskLayerID: string;\r\n boroughBoundaryLayerID: string;\r\n councilMaintainedLayerID: string;\r\n mapLayerID: string;\r\n mapLayerFilter:string,\r\n mapLayerFaultID: string;\r\n startUpCoords: number[];\r\n oScopyright: string;\r\n esriCopyright: string;\r\n token: string;\r\n mapLayerMinZoom: number;\r\n isAsset: boolean;\r\n //asset_Layer_Name: string;\r\n event_Type: string;\r\n //assetIcon: string;\r\n symbology: Symbology[];\r\n label_Settings: LabelSettings;\r\n popupTitle: string;\r\n formUrl: string;\r\n boroughBounds: number[];\r\n allow_Private: boolean;\r\n private_Land_Msg: string;\r\n select_Location_Msg: string;\r\n out_Parameters: string;\r\n infoLayers: InfoLayers[];\r\n no_Legend: boolean;\r\n //cM_Layer: string;\r\n}\r\ninterface Symbology {\r\n filter: string;\r\n icon: string;\r\n name: string;\r\n iconSize: L.Point;\r\n iconSizeLegend: number[];\r\n iconLegendMargins: number[];\r\n iconAnchor: L.Point;\r\n popupAnchor: L.Point;\r\n} \r\n\r\ninterface LabelSettings {\r\n field: string;\r\n min_scale: number;\r\n}\r\n\r\ninterface InfoLayers {\r\n info_layer_name: string;\r\n info_layer_id: string;\r\n symbology: Symbology[];\r\n}\r\n\r\ninterface FeatureSymbology {\r\n type: string;\r\n symbology: Symbology[];\r\n}\r\n//#endregion","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkasp_net\"] = self[\"webpackChunkasp_net\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [986], () => (__webpack_require__(201)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":[],"sourceRoot":""}