diff --git a/changelog.md b/changelog.md index 5e33bada..d5ccf258 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,7 @@ - improved contact h-cards - Better look in /contacts - h-cards now have person-tags (issue#36) + - maps now have zoom controls (issue#37) ## Version 0.0.16.1 (2016-11-22) - Break words diff --git a/public/assets/js/maps.js b/public/assets/js/maps.js index cde37385..dab34f57 100644 --- a/public/assets/js/maps.js +++ b/public/assets/js/maps.js @@ -1,2 +1,2 @@ -var mapDivs=document.querySelectorAll(".map");mapboxgl.accessToken="pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw";for(var i=0;i, then adds map\nvar mapDivs = document.querySelectorAll('.map');\nmapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\nfor (var i = 0; i < mapDivs.length; i++) {\n var mapDiv = mapDivs[i];\n var latitude = mapDiv.dataset.latitude;\n var longitude = mapDiv.dataset.longitude;\n var el = document.createElement('div');\n el.classList.add('marker');\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15,\n scrollZoom: false\n });\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n mapDiv.appendChild(mapMenu);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["maps.js"],"names":["mapDivs","document","querySelectorAll","mapboxgl","accessToken","i","length","mapDiv","latitude","dataset","longitude","el","createElement","classList","add","mapMenu","streetsInput","setAttribute","addEventListener","map","setStyle","streetsLabel","appendChild","createTextNode","satelliteInput","satelliteLabel","Map","container","style","center","zoom","scrollZoom","addControl","NavigationControl","Marker","offset","setLngLat","addTo"],"mappings":"AAEA,GAAIA,SAAUC,SAASC,iBAAiB,OACxCC,UAASC,YAAc,gGACvB,KAAK,GAAIC,GAAI,EAAGA,EAAIL,QAAQM,OAAQD,IAAK,CACrC,GAAIE,QAASP,QAAQK,GACjBG,SAAWD,OAAOE,QAAQD,SAC1BE,UAAaH,OAAOE,QAAQC,UAC5BC,GAAKV,SAASW,cAAc,MAChCD,IAAGE,UAAUC,IAAI,SACjB,IAAIC,SAAUd,SAASW,cAAc,MACrCG,SAAQF,UAAUC,IAAI,WACtB,IAAIE,cAAef,SAASW,cAAc,QAC1CI,cAAaC,aAAa,KAAM,WAChCD,aAAaC,aAAa,OAAQ,SAClCD,aAAaC,aAAa,OAAQ,UAClCD,aAAaC,aAAa,QAAS,WACnCD,aAAaC,aAAa,UAAW,WACrCD,aAAaE,iBAAiB,QAAS,WACnCC,IAAIC,SAAS,sCAEjB,IAAIC,cAAepB,SAASW,cAAc,QAC1CS,cAAaJ,aAAa,MAAO,WACjCI,aAAaC,YAAYrB,SAASsB,eAAe,WACjD,IAAIC,gBAAiBvB,SAASW,cAAc,QAC5CY,gBAAeP,aAAa,KAAM,aAClCO,eAAeP,aAAa,OAAQ,SACpCO,eAAeP,aAAa,OAAQ,UACpCO,eAAeP,aAAa,QAAS,WACrCO,eAAeN,iBAAiB,QAAS,WACrCC,IAAIC,SAAS,wCAEjB,IAAIK,gBAAiBxB,SAASW,cAAc,QAC5Ca,gBAAeR,aAAa,MAAO,aACnCQ,eAAeH,YAAYrB,SAASsB,eAAe,cACnDR,QAAQO,YAAYN,cACpBD,QAAQO,YAAYD,cACpBN,QAAQO,YAAYE,gBACpBT,QAAQO,YAAYG,eACpB,IAAIN,KAAM,GAAIhB,UAASuB,KACnBC,UAAWpB,OACXqB,MAAO,oCACPC,QAASnB,UAAWF,UACpBsB,KAAM,GACNC,YAAY,GAEhBZ,KAAIa,WAAW,GAAI7B,UAAS8B,mBAC5B,GAAI9B,UAAS+B,OAAOvB,IAAKwB,SAAS,IAAK,MAAOC,WAAW1B,UAAWF,WAAW6B,MAAMlB,KACrFZ,OAAOe,YAAYP","file":"../maps.js","sourcesContent":["/* global mapboxgl */\n//This code runs on page load and looks for
, then adds map\nvar mapDivs = document.querySelectorAll('.map');\nmapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\nfor (var i = 0; i < mapDivs.length; i++) {\n var mapDiv = mapDivs[i];\n var latitude = mapDiv.dataset.latitude;\n var longitude = mapDiv.dataset.longitude;\n var el = document.createElement('div');\n el.classList.add('marker');\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15,\n scrollZoom: false\n });\n map.addControl(new mapboxgl.NavigationControl());\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n mapDiv.appendChild(mapMenu);\n}\n"]} \ No newline at end of file diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index 81044df7..dbc589e0 100644 --- a/public/assets/js/maps/newnote.js.map +++ b/public/assets/js/maps/newnote.js.map @@ -1 +1 @@ -{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","document","querySelector","mapDiv","createElement","classList","add","appendChild","mapboxgl","accessToken","map","Map","container","style","center","zoom","el","mapMenu","streetsInput","setAttribute","addEventListener","setStyle","streetsLabel","createTextNode","satelliteInput","satelliteLabel","Marker","offset","setLngLat","addTo","containingDiv","selectEl","noLocation","geoLocation","dataset","insertBefore","forEach","item","option","text","placeMarkerIcon","flyTo","selectPlace","value","placeLat","selectedIndex","placeLon","newLocButton","nameDiv","nameLabel","nameEl","descDiv","descLabel","descEl","latDiv","latLabel","latEl","getLatitudeFromMapbox","getCenter","lonDiv","lonLabel","lonEl","getLongitudeFromMapbox","placeSubmit","formData","FormData","append","body","placeJson","Error","labels","querySelectorAll","removeChild","parentNode","newPlaceButton","newOption","newPlaceMarkerIcon","placeError","point","re","resultArray","exec","split","selected","lnglat","replace","button","disabled"],"mappings":"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","file":"../newnote.js","sourcesContent":["/* global mapboxgl, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n // the form has a fieldset element that we are actually targetting\n var form = document.querySelector('.note-ui');\n var mapDiv = document.createElement('div');\n mapDiv.classList.add('map');\n //add the map div\n form.appendChild(mapDiv);\n //set up the mapbox gl map\n mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15\n });\n //create the current location marker\n var el = document.createElement('div');\n el.classList.add('marker');\n //create the map style menu\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n //add the map menu\n mapDiv.appendChild(mapMenu);\n //add a marker for the current location\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n //create containing div for flexbox\n var containingDiv = document.createElement('div');\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarkerIcon = document.createElement('div');\n placeMarkerIcon.classList.add('marker');\n new mapboxgl.Marker(placeMarkerIcon, {offset: [-10, -20]}).setLngLat([item[3], item[2]]).addTo(map);\n placeMarkerIcon.addEventListener('click', function () {\n map.flyTo({\n center: [\n item[3],\n item[2]\n ]\n });\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.flyTo({\n center: [\n placeLon,\n placeLat\n ]\n });\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameDiv = document.createElement('div');\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n nameDiv.appendChild(nameLabel);\n nameDiv.appendChild(nameEl);\n var descDiv = document.createElement('div');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n descDiv.appendChild(descLabel);\n descDiv.appendChild(descEl);\n var latDiv = document.createElement('div');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapbox(map.getCenter());\n latDiv.appendChild(latLabel);\n latDiv.appendChild(latEl);\n var lonDiv = document.createElement('div');\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapbox(map.getCenter());\n lonDiv.appendChild(lonLabel);\n lonDiv.appendChild(lonEl);\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameDiv);\n form.appendChild(descDiv);\n form.appendChild(latDiv);\n form.appendChild(lonDiv);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n //iterate through labels and remove parent div elements\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i].parentNode);\n }\n form.removeChild(document.querySelector('#place-submit'));\n var newPlaceButton = document.querySelector('#create-new-place');\n //in order to remove a DOM Node, you need to run removeChild on the parent Node\n newPlaceButton.parentNode.removeChild(newPlaceButton);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarkerIcon = document.createElement('div');\n newPlaceMarkerIcon.classList.add('marker');\n var newPlaceMarker = new mapboxgl.Marker(newPlaceMarkerIcon, {offset: [-10, -20]}).setLngLat([placeJson.longitude, placeJson.latitude]).addTo(map);\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n\n newPlaceMarkerIcon.addEventListener('click', function () {\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n containingDiv.appendChild(newLocButton);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n\nfunction getLongitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n"]} \ No newline at end of file +{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","document","querySelector","mapDiv","createElement","classList","add","appendChild","mapboxgl","accessToken","map","Map","container","style","center","zoom","addControl","NavigationControl","el","mapMenu","streetsInput","setAttribute","addEventListener","setStyle","streetsLabel","createTextNode","satelliteInput","satelliteLabel","Marker","offset","setLngLat","addTo","containingDiv","selectEl","noLocation","geoLocation","dataset","insertBefore","forEach","item","option","text","placeMarkerIcon","flyTo","selectPlace","value","placeLat","selectedIndex","placeLon","newLocButton","nameDiv","nameLabel","nameEl","descDiv","descLabel","descEl","latDiv","latLabel","latEl","getLatitudeFromMapbox","getCenter","lonDiv","lonLabel","lonEl","getLongitudeFromMapbox","placeSubmit","formData","FormData","append","body","placeJson","Error","labels","querySelectorAll","removeChild","parentNode","newPlaceButton","newOption","newPlaceMarkerIcon","placeError","point","re","resultArray","exec","split","selected","lnglat","replace","button","disabled"],"mappings":"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","file":"../newnote.js","sourcesContent":["/* global mapboxgl, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n // the form has a fieldset element that we are actually targetting\n var form = document.querySelector('.note-ui');\n var mapDiv = document.createElement('div');\n mapDiv.classList.add('map');\n //add the map div\n form.appendChild(mapDiv);\n //set up the mapbox gl map\n mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15\n });\n map.addControl(new mapboxgl.NavigationControl());\n //create the current location marker\n var el = document.createElement('div');\n el.classList.add('marker');\n //create the map style menu\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n //add the map menu\n mapDiv.appendChild(mapMenu);\n //add a marker for the current location\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n //create containing div for flexbox\n var containingDiv = document.createElement('div');\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarkerIcon = document.createElement('div');\n placeMarkerIcon.classList.add('marker');\n new mapboxgl.Marker(placeMarkerIcon, {offset: [-10, -20]}).setLngLat([item[3], item[2]]).addTo(map);\n placeMarkerIcon.addEventListener('click', function () {\n map.flyTo({\n center: [\n item[3],\n item[2]\n ]\n });\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.flyTo({\n center: [\n placeLon,\n placeLat\n ]\n });\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameDiv = document.createElement('div');\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n nameDiv.appendChild(nameLabel);\n nameDiv.appendChild(nameEl);\n var descDiv = document.createElement('div');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n descDiv.appendChild(descLabel);\n descDiv.appendChild(descEl);\n var latDiv = document.createElement('div');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapbox(map.getCenter());\n latDiv.appendChild(latLabel);\n latDiv.appendChild(latEl);\n var lonDiv = document.createElement('div');\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapbox(map.getCenter());\n lonDiv.appendChild(lonLabel);\n lonDiv.appendChild(lonEl);\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameDiv);\n form.appendChild(descDiv);\n form.appendChild(latDiv);\n form.appendChild(lonDiv);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n //iterate through labels and remove parent div elements\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i].parentNode);\n }\n form.removeChild(document.querySelector('#place-submit'));\n var newPlaceButton = document.querySelector('#create-new-place');\n //in order to remove a DOM Node, you need to run removeChild on the parent Node\n newPlaceButton.parentNode.removeChild(newPlaceButton);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarkerIcon = document.createElement('div');\n newPlaceMarkerIcon.classList.add('marker');\n var newPlaceMarker = new mapboxgl.Marker(newPlaceMarkerIcon, {offset: [-10, -20]}).setLngLat([placeJson.longitude, placeJson.latitude]).addTo(map);\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n\n newPlaceMarkerIcon.addEventListener('click', function () {\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n containingDiv.appendChild(newLocButton);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n\nfunction getLongitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n"]} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index 086e2fb7..ebac396a 100644 --- a/public/assets/js/newnote.js +++ b/public/assets/js/newnote.js @@ -1,2 +1,2 @@ -function getLocation(){navigator.geolocation.getCurrentPosition(function(e){addPlacesMap(e.coords.latitude,e.coords.longitude,e.coords.accuracy)})}function addPlacesMap(e,t,a){fetch("/places/near/"+e+"/"+t+"?u="+a,{credentials:"same-origin",method:"get"}).then(function(e){return e.json()}).then(function(a){if(1==a.error&&(alertify.reset(),alertify.error(a.error_description)),a.places.length>0){var n,d=[];for(n=0;n0){var n,d=[];for(n=0;n