{"version":3,"file":"../MapScripts.js","names":["Promise","resolve","reject","fetch","body","JSON","stringify","method","headers","Accept","then","response","json","catch","error","result","console","log","initMap","markerClickedEvent","e","isMain","features","properties","firmId","prom","searchParams","MemberFirmID","toString","GetFirmData","document","getElementById","classList","remove","innerHTML","htmlResults","calculateHeight","applyClicks","scrollToAnchorIDVanilla","jurisdictionId","jurisdictionID","GetFirmDataByJurisdiction","apiData","mapboxgl","supported","accessToken","mapData","data","newData","type","offices","forEach","item","officeLat","officeLng","push","geometry","coordinates","id","officeId","title","officeCity","officeCountry","city","country","secondaryLocations","lat","lng","jurisdictionName","secondaryOffices","organiseDataIntoGeoJson","map","Map","container","style","center","zoom","maxZoom","minZoom","renderWorldCopies","attributionControl","cooperativeGestures","dragRotate","disable","touchZoomRotate","disableRotation","nav","NavigationControl","showCompass","addControl","fullscreen","FullscreenControl","selectedStateId","on","addSource","addLayer","source","paint","popup","Popup","closeButton","closeOnClick","maxWidth","offset","setFeatureState","selected","add","getCanvas","cursor","slice","description","setLngLat","setHTML","addTo","length","listData","main","secondary","office","allOffices","concat","sortedData","_","orderBy","lettersArray","lettersObject","letter","items","currentLetter","toLowerCase","find","firm","officeFirmName","firmUrl","isSecondary","sortDataIntoLettersArray","elList","elListHtmlString","group","state","querySelectorAll","header","addEventListener","targetId","target","getAttribute","toggle"],"sources":["MapScripts.js"],"sourcesContent":["(() => {\r\n\r\n let apiData = null;\r\n let firmData = null;\r\n //const partialView = \"LexDirectoryResultRows\";\r\n const partialView = \"FirmResultBlock\";\r\n\r\n\r\n /*******************************/\r\n /**** CRAIG - DYNAMIC FETCH ****/\r\n /*******************************/\r\n const GetMapData = () => {\r\n return new Promise(function (resolve, reject) {\r\n\r\n\t\t\tconst searchParams = {};\r\n\t\t//\tfetch('/Umbraco/Surface/DirectorySearch/GetOffices', {\r\n\t\t\t\tfetch('/Umbraco/Surface/DirectorySearch/GetPrimarySecondaryOffices', {\r\n body: JSON.stringify(searchParams), method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n })\r\n .then(function (response) {\r\n //console.log('response : %o', response.json());\r\n resolve(response.json());\r\n })\r\n .catch(error => {\r\n //console.log('Failed', error);\r\n reject(error);\r\n });\r\n });\r\n };\r\n\t//\r\n const GetFirmData = (firmId) => { \r\n let searchParams = { MemberFirmID: firmId.toString() };\r\n //console.log('GetFirmData : %o', searchParams);\r\n return new Promise(function (resolve, reject) {\r\n\r\n fetch('/Umbraco/Surface/DirectorySearch/GetFirmDetailsPartial', {\r\n body: JSON.stringify(searchParams), method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n })\r\n .then(function (response) {\r\n //console.log('response : %o', response.json());\r\n resolve(response.json());\r\n })\r\n .catch(error => {\r\n //console.log('Failed', error);\r\n reject(error);\r\n });\r\n });\r\n\t};\r\n\tconst GetFirmDataByJurisdiction = (jurisdictionId) => {\r\n\t\tlet searchParams = { jurisdictionID: jurisdictionId.toString() };\r\n\t\t//console.log('GetFirmData : %o', searchParams);\r\n\t\treturn new Promise(function (resolve, reject) {\r\n\t\t\tfetch('/Umbraco/Surface/DirectorySearch/GetFirmDetailsByJurisdictionPartial', {\r\n\t\t\t\tbody: JSON.stringify(searchParams), method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n\t\t\t})\r\n\t\t\t\t.then(function (response) {\r\n\t\t\t\t\t//console.log('response : %o', response.json());\r\n\t\t\t\t\tresolve(response.json());\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\t//console.log('Failed', error);\r\n\t\t\t\t\treject(error);\r\n\t\t\t\t});\r\n\t\t});\r\n\t};\r\n // Fetch map data \r\n const prom = GetMapData();\r\n prom.then(\r\n (result) => {\r\n console.log('Raw map data : %o', result);\r\n initMap(result);\r\n }\r\n );\r\n\r\n\r\n\r\n\r\n\r\n\t/*************************/\r\n\t/*** SORT DATA HELPERS ***/\r\n\t/*************************/\r\n\tconst sortDataIntoLettersArray = (data) => {\r\n\t//\tconst sortedData = _.orderBy(data.Offices, ['OfficeCountry', 'OfficeCity'], ['asc']);\r\n\t\tvar main = data.offices; \r\n\t\tvar secondary = data.secondaryLocations;\r\n\t\tvar secondaryOffices = [];\r\n\t\r\n\t\tsecondary.forEach((item) => {\r\n\t\t\tvar items = item.secondaryOffices;\r\n\t\t\titems.forEach((office) => {\r\n\t\t\t\tsecondaryOffices.push(office);\r\n\t\t\t});\r\n\t\t});\r\n\t\tconst allOffices = main.concat(secondaryOffices);\r\n\t\tconst sortedData = _.orderBy(allOffices, ['officeCountry', 'officeCity'], ['asc']);\r\n\t\tconsole.log(\"SECONDARY OFFICES: %o\", secondaryOffices);\r\n\t\tconst lettersString = 'abcdefghijklmnopqrstuvwxyz';\r\n\t\tconst lettersArray = [...lettersString];\r\n\t\tconst lettersObject = [];\r\n\r\n\t\tlettersArray.forEach((letter) => {\r\n\t\t\tlettersObject.push({\r\n\t\t\t\tletter,\r\n\t\t\t\titems: [],\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tsortedData.forEach((item) => {\r\n\t\t\tconst currentLetter = item.officeCountry.slice(0, 1).toLowerCase();\r\n\t\t\tconst currentLetterObject = _.find(lettersObject, ['letter', currentLetter]);\r\n\t\t\tcurrentLetterObject.items.push({\r\n\t\t\t\tid: item.officeId,\r\n\t\t\t\tcountry: item.officeCountry,\r\n\t\t\t\tfirm: item.officeFirmName,\r\n\t\t\t\tcity: item.officeCity,\r\n\t\t\t\tfirmUrl: item.firmUrl,\r\n\t\t\t\tisSecondary: item.isSecondary \r\n //,state: item.State\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn lettersObject;\r\n\t};\r\n\r\n\tconst organiseDataIntoGeoJson = (data) => {\r\n\t\tconst newData = {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: [],\r\n\t\t};\r\n\r\n\t\tdata.offices.forEach((item) => {\r\n\t\t\tif (!item.officeLat || !item.officeLng) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tnewData.features.push({\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tgeometry: { \r\n\t\t\t\t\ttype: 'Point',\r\n\t\t\t\t\tcoordinates: [item.officeLng, item.officeLat],\r\n\t\t\t\t},\r\n\t\t\t\tid: item.officeId,\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\ttitle: `${item.officeCity} ${item.officeCountry}`,\r\n\t\t\t\t\tcity: item.officeCity,\r\n country: item.officeCountry,\r\n\t\t\t\t\tfirmId: item.firmId,\r\n\t\t\t\t\tisMain : true\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t});\r\n\t\tdata.secondaryLocations.forEach((item) => {\r\n\t\t\r\n\t\t\tif (!item.lat || !item.lng) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tnewData.features.push({\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tgeometry: {\r\n\t\t\t\t\ttype: 'Point',\r\n\t\t\t\t\tcoordinates: [item.lng, item.lat],\r\n\t\t\t\t},\r\n\t\t\t\tid: item.officeId,\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\ttitle: `${item.jurisdictionName}`,\r\n\t\t\t\t\tcity: \"City\",\r\n\t\t\t\t\tcountry: \"Country\",\r\n\t\t\t\t\tjurisdictionId: item.jurisdictionId,\r\n\t\t\t\t\tisMain: false,\r\n\t\t\t\t\toffices: item.secondaryOffices\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn newData;\r\n\t};\r\n\r\n\t/*************************/\r\n\t/**** MAP CLICK EVENTS ***/\r\n\t/*************************/\r\n\tconst mapClickedEvent = () => {\r\n\t\t//console.log('Clicked: Map');\r\n const elSelectedMarker = document.getElementById('marker-selected');\r\n elSelectedMarker.classList.add('hidden');\r\n\r\n //const elResults = document.getElementById('result-rows');\r\n //elResults.innerHTML = '';\r\n\t};\r\n\r\n const markerClickedEvent = (e) => {\r\n //console.log('Clicked: Marker : %o', e.features[0].properties );\r\n //elSelectedMarker.innerHTML = `

${e.features[0].properties.title} (${e.features[0].id})

`;\r\n\t\tlet isMain = e.features[0].properties.isMain;\r\n\t\t//if (!isMain) {\r\n\t\t//\talert(\"Secondary office clicked\");\r\n\t\t//}\r\n\t\tconsole.log(\"IS MAIN: %o\", isMain);\r\n\t\tlet firmId = e.features[0].properties.firmId;\r\n\t\t\r\n\t\t//let jurisdictionId = e.features[0].properties.jurisdictionId;\r\n //console.log(' Marker key : %o', firmId);\r\n\r\n if (firmId != \"0\" && isMain == true) {\r\n\t\t\tconst prom = GetFirmData(firmId);\r\n prom.then(\r\n (result) => {\r\n //console.log('GetFirmData : %o', result);\r\n const elSelectedMarker = document.getElementById('marker-selected');\r\n elSelectedMarker.classList.remove('hidden');\r\n\r\n const elResults = document.getElementById('result-rows');\r\n elResults.innerHTML = result.htmlResults;\r\n\r\n // From the accordion script\r\n calculateHeight();\r\n applyClicks();\r\n\r\n scrollToAnchorIDVanilla('result-rows');\r\n }\r\n );\r\n\t\t} else if (isMain == false) {\r\n\t\t\tlet jurisdictionId = e.features[0].properties.jurisdictionId;\r\n\t\t\tconsole.log(\"J ID: %o\", jurisdictionId);\r\n\t\t\t//console.log(\"CLICKED: Secondary offices : %o\", e.features[0].offices)\r\n\t\t\tconst prom = GetFirmDataByJurisdiction(jurisdictionId);\r\n\t\t\tprom.then( \r\n\t\t\t\t(result) => {\r\n\t\t\t\t\t//console.log('GetFirmData : %o', result);\r\n\t\t\t\t\tconst elSelectedMarker = document.getElementById('marker-selected');\r\n\t\t\t\t\telSelectedMarker.classList.remove('hidden');\r\n\r\n\t\t\t\t\tconst elResults = document.getElementById('result-rows');\r\n\t\t\t\t\telResults.innerHTML = result.htmlResults;\r\n\r\n\t\t\t\t\t// From the accordion script\r\n\t\t\t\t\tcalculateHeight();\r\n\t\t\t\t\tapplyClicks();\r\n\r\n\t\t\t\t\r\n\t\t\t\t\tscrollToAnchorIDVanilla('result-rows');\r\n\t\t\t\t}\r\n\t\t\t);\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n const initMap = (apiData) => {\r\n\r\n //console.log('Init : %o', apiData);\r\n\r\n\t /*************************/\r\n\t /****** DESKTOP MAP ******/\r\n\t /*************************/\r\n\t if (typeof mapboxgl === 'undefined' || !mapboxgl.supported()) {\r\n\t\t console.log('ERROR: mapboxgl not loaded or supported');\r\n\t } else {\r\n\t\t mapboxgl.accessToken = 'pk.eyJ1IjoiZ3JhZW1lbWNjIiwiYSI6ImNsMHV1NzBxMjB3eTEzbG41MWw0NmdxdWEifQ.mJi3PrBzqUxwSUty0gIoQA';\r\n\r\n\t\t const mapData = organiseDataIntoGeoJson(apiData);\r\n\r\n\t\t const map = new mapboxgl.Map({\r\n\t\t\t container: 'crossborder-map',\r\n\t\t\t style: 'mapbox://styles/graememcc/cl446efw6003e15mncxv7iazc',\r\n\t\t\t center: [0, 30],\r\n\t\t\t zoom: 1.4,\r\n\t\t\t maxZoom: 9,\r\n\t\t\t minZoom: 1.4,\r\n\t\t\t renderWorldCopies: true,\r\n\t\t\t attributionControl: false,\r\n\t\t\t cooperativeGestures: true,\r\n\t\t\t // maxBounds: [\r\n\t\t\t // [-170, 70], // Southwest coordinates\r\n\t\t\t // [180, -50] // Northeast coordinates\r\n\t\t\t // ] // Set the map's geographical boundaries.\r\n\t\t\t // noWrap: true\r\n\t\t\t // {\r\n\t\t\t // // this map option disables world wrapping. by default, it is false.\r\n\t\t\t // continuousWorld: true,\r\n\t\t\t // // this option disables loading tiles outside of the world bounds.\r\n\t\t\t // noWrap: true\r\n\t\t\t // }\r\n\t\t });\r\n\r\n\t\t map.dragRotate.disable();\r\n\t\t map.touchZoomRotate.disableRotation();\r\n\r\n\t\t const nav = new mapboxgl.NavigationControl({ showCompass: false });\r\n\t\t map.addControl(nav, 'bottom-right');\r\n\r\n\t\t const fullscreen = new mapboxgl.FullscreenControl();\r\n\t\t map.addControl(fullscreen, 'top-right');\r\n\r\n\t\t let selectedStateId = null;\r\n\r\n\t\t map.on('load', () => {\r\n\t\t\t map.addSource('office-points', {\r\n\t\t\t\t type: 'geojson',\r\n\t\t\t\t data: mapData,\r\n\t\t\t });\r\n\t\t\t map.addLayer({\r\n\t\t\t\t id: 'office-circles',\r\n\t\t\t\t type: 'circle',\r\n\t\t\t\t source: 'office-points',\r\n\t\t\t\t paint: {\r\n\t\t\t\t\t 'circle-radius': 4,\r\n\t\t\t\t\t 'circle-stroke-width': 2,\r\n\t\t\t\t\t 'circle-stroke-color': '#ffffff',\r\n\t\t\t\t\t 'circle-stroke-opacity': 1.0,\r\n\t\t\t\t\t 'circle-color': [\r\n\t\t\t\t\t\t 'case',\r\n\t\t\t\t\t\t ['boolean', ['feature-state', 'selected'], false],\r\n\t\t\t\t\t\t '#ffffff',\r\n\t\t\t\t\t\t 'transparent',\r\n\t\t\t\t\t ],\r\n\t\t\t\t },\r\n\t\t\t });\r\n\t\t });\r\n\r\n\t\t const popup = new mapboxgl.Popup({\r\n\t\t\t closeButton: false,\r\n\t\t\t closeOnClick: false,\r\n\t\t\t maxWidth: 'none',\r\n\t\t\t offset: 3,\r\n\t\t });\r\n\r\n\t\t map.on('click', () => {\r\n\t\t\t popup.remove();\r\n\t\t\t if (selectedStateId !== null) {\r\n\t\t\t\t map.setFeatureState(\r\n\t\t\t\t\t { source: 'office-points', id: selectedStateId },\r\n\t\t\t\t\t { selected: false },\r\n\t\t\t\t );\r\n\t\t\t }\r\n\t\t\t selectedStateId = null;\r\n\r\n\t\t\t mapClickedEvent();\r\n\t\t });\r\n\r\n\t\t map.on('mouseenter', 'office-circles', (e) => {\r\n\t\t\t map.getCanvas().style.cursor = 'pointer';\r\n\t\t\t const coordinates = e.features[0].geometry.coordinates.slice();\r\n\t\t\t const description = e.features[0].properties.title;\r\n\t\t\t\t \r\n\t\t\t popup.setLngLat(coordinates).setHTML(description).addTo(map);\r\n\t\t });\r\n\r\n\t\t map.on('mouseleave', 'office-circles', () => {\r\n\t\t\t map.getCanvas().style.cursor = '';\r\n\t\t });\r\n\r\n\t\t map.on('click', 'office-circles', (e) => {\r\n\t\t\t if (e.features.length > 0) {\r\n\t\t\t\t if (selectedStateId !== null) {\r\n\t\t\t\t\t map.setFeatureState(\r\n\t\t\t\t\t\t { source: 'office-points', id: selectedStateId },\r\n\t\t\t\t\t\t { selected: false },\r\n\t\t\t\t\t );\r\n\t\t\t\t }\r\n\t\t\t\t selectedStateId = e.features[0].id;\r\n\t\t\t\t map.setFeatureState(\r\n\t\t\t\t\t { source: 'office-points', id: selectedStateId },\r\n\t\t\t\t\t { selected: true },\r\n\t\t\t\t );\r\n\t\t\t\t popup.addTo(map);\r\n\t\t\t\t\r\n\t\t\t\t markerClickedEvent(e);\r\n\t\t\t }\r\n }); \r\n\t }\r\n\r\n\t /*************************/\r\n\t /****** MOBILE LIST ******/\r\n\t /*************************/ \r\n\t const listData = sortDataIntoLettersArray(apiData);\r\n\t const elList = document.getElementById('crossborder-list');\r\n\t let elListHtmlString = '';\r\n\r\n\t listData.forEach((group) => {\r\n\t\t if (!group.items.length) { return; }\r\n\r\n\t\t elListHtmlString += `

${group.letter}

`;\r\n\r\n\t\t group.items.forEach((item) => {\r\n\t\t\t\tvar state = item.state === '' ? '' : item.state + \" : \";\r\n\t\t\t\tif (item.isSecondary) {\r\n\t\t\t\t\telListHtmlString += `

${item.country} - ${item.city}

${item.firm}
`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\telListHtmlString += `

${item.country}

${item.firm}
`;\r\n }\r\n\t\t });\r\n\r\n\t\t elListHtmlString += '
';\r\n\t\t elList.innerHTML = elListHtmlString;\r\n\t });\r\n\r\n\t /*************************/\r\n\t /**** LIST OPEN/CLOSE ****/\r\n\t /*************************/\r\n\t const listHeaders = document.querySelectorAll('.list-header');\r\n\t listHeaders.forEach((header) => {\r\n\t\t header.addEventListener('click', (e) => {\r\n\t\t\t const targetId = e.target.getAttribute('data-target-id');\r\n\t\t\t const targetElement = document.getElementById(targetId);\r\n\t\t\t targetElement.classList.toggle('show');\r\n\t\t\t e.target.classList.toggle('show');\r\n\t\t });\r\n });\r\n\r\n\r\n /*************************/\r\n /***** RESULTS CLOSE *****/\r\n /*************************/\r\n document.getElementById('close-details-list').addEventListener('click', (e) => {\r\n //console.log('Close details list');\r\n const elSelectedMarker = document.getElementById('marker-selected');\r\n elSelectedMarker.classList.add('hidden');\r\n });\r\n\r\n };\r\n\r\n \r\n\r\n})();\r\n"],"mappings":"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","ignoreList":[]}