{"version":3,"sources":["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","FirmId","SecondaryLocations","Lat","Lng","JurisdictionName","JurisdictionId","offices","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","secondaryOffices","office","allOffices","concat","sortedData","_","orderBy","lettersArray","lettersObject","letter","items","currentLetter","toLowerCase","find","firm","OfficeFirmName","firmUrl","FirmUrl","isSecondary","IsSecondary","sortDataIntoLettersArray","elList","elListHtmlString","group","state","querySelectorAll","header","addEventListener","targetId","target","getAttribute","toggle"],"mappings":"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","file":"../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 /*\r\n const GetFirmData = (firmId) => {\r\n let searchParams = { MemberFirm: firmId.toString(), RecordsPerPage: 100, CurrentPage: 1, PartialView: partialView };\r\n //console.log('GetFirmData : %o', searchParams);\r\n return new Promise(function (resolve, reject) {\r\n\r\n fetch('/Umbraco/Surface/DirectorySearch/DoDirectorySearch', {\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 */\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 = `
${item.firm}