From c1f7a20ddcfaded92c16321ee6806b02277d5e8f Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 00:01:58 +0100 Subject: [PATCH] gulp derived files from newnote.js asset --- public/assets/js/maps/newnote.js.map | 2 +- public/assets/js/newnote.js | 2 +- public/assets/js/newnote.js.br | Bin 1608 -> 1615 bytes public/assets/js/newnote.js.gz | Bin 1819 -> 1824 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index ae43e7bb..8b6e488c 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","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","urlParts","split","slug","pop","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, 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 var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\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 placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\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.panTo([placeLat, placeLon]);\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 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 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 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 = getLatitudeFromMapboxMarker(marker.getLatLng());\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 = getLongitudeFromMapboxMarker(marker.getLatLng());\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(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\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 //create the slug from the url\n var urlParts = placeJson.split('/');\n var slug = urlParts.pop();\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', slug);\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 newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var newName = 'Name: ' + placeJson['name'];\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson['latitude'], placeJson['longitude']]);\n selectPlace(slug);\n });\n //make selected\n selectPlace(slug);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\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(slug) {\n document.querySelector('select [value=' + slug + ']').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ 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","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","urlParts","split","slug","pop","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","selected","replace","disabled"],"mappings":"AAWA,QAASA,eACLC,UAAUC,YAAYC,mBAAmB,SAAUC,GAE/CC,aAAaD,EAASE,OAAOC,SAAUH,EAASE,OAAOE,UAAWJ,EAASE,OAAOG,YAI1F,QAASJ,cAAaE,EAAUC,EAAWE,GAEvCC,MAAM,gBAAkBJ,EAAW,IAAMC,EAAY,MAAQE,GACzDE,YAAa,cACbC,OAAQ,QACTC,KAAK,SAAUC,GACd,MAAOA,GAASC,SACjBF,KAAK,SAAUG,GAKd,GAJe,GAAXA,EAAEC,QACFC,SAASC,QACTD,SAASD,MAAMD,EAAEI,oBAEjBJ,EAAEK,OAAOC,OAAS,EAAG,CACrB,GAAIC,GACAF,IACJ,KAAKE,EAAI,EAAGA,EAAIP,EAAEK,OAAOC,SAAUC,EAAG,CAClC,GAAIC,GAASC,cAAcT,EAAEK,OAAOE,GAAGG,UACnCC,EAAOX,EAAEK,OAAOE,GAAGI,KACnBC,EAAMZ,EAAEK,OAAOE,GAAGK,GACtBP,GAAOQ,MAAMF,EAAMC,EAAKJ,EAAO,GAAIA,EAAO,KAG9CM,OAAOxB,EAAUC,EAAWc,OAG5BS,QAAOxB,EAAUC,KAEtBwB,MAAM,SAAUC,GACfC,QAAQhB,MAAMe,KAItB,QAASF,QAAOxB,EAAUC,EAAWc,GAET,GAApBa,UAAUZ,SACVD,EAAS,KAEb,IAAIc,GAAOC,OAAOC,WACdC,EAAMC,SAASC,cAAc,MACjCF,GAAIG,aAAa,KAAM,OAEvBN,EAAKO,YAAYJ,GACjBK,EAAEC,OAAOC,YAAc,wEACvB,IAAIC,GAAMH,EAAEC,OAAOE,IAAI,MAAO,wBACzBC,SAASzC,EAAUC,GAAY,IAC/ByC,SAASL,EAAEC,OAAOK,UAAU,wBACzBC,cAAc,KAGlBC,EAASR,EAAEQ,QAAQ7C,EAAUC,IAC7B6C,WAAW,IACZC,MAAMP,EAGTK,GAAOG,GAAG,UAAW,WACjB,GAAIC,GAAoBhB,SAASiB,cAAc,kBACrB,QAAtBD,IACAA,EAAkBE,MAAQC,4BAA4BP,EAAOQ,aAEjE,IAAIC,GAAqBrB,SAASiB,cAAc,mBACrB,QAAvBI,IACAA,EAAmBH,MAAQI,6BAA6BV,EAAOQ,eAIvE,IAAIG,GAAWvB,SAASC,cAAc,SACtCsB,GAASrB,aAAa,OAAQ,WAC9B,IAAIsB,GAAaxB,SAASC,cAAc,SACxCuB,GAAWtB,aAAa,WAAY,YACpCsB,EAAWtB,aAAa,QAAS,cACjC,IAAIuB,GAAYzB,SAAS0B,eAAe,qBACxCF,GAAWrB,YAAYsB,GACvBF,EAASpB,YAAYqB,GACrB5B,EAAK+B,aAAaJ,EAAUxB,GACb,OAAXjB,IAEAA,EAAO8C,QAAQ,SAAUC,GACrB,GAAIC,GAAS9B,SAASC,cAAc,SACpC6B,GAAO5B,aAAa,QAAS2B,EAAK,GAClC,IAAIE,GAAO/B,SAAS0B,eAAeG,EAAK,GACxCC,GAAO3B,YAAY4B,GACnBD,EAAOE,QAAQjE,SAAW8D,EAAK,GAC/BC,EAAOE,QAAQhE,UAAY6D,EAAK,GAChCN,EAASpB,YAAY2B,EACrB,IAAIG,GAAc7B,EAAEQ,QAAQiB,EAAK,GAAIA,EAAK,KACtCK,KAAM9B,EAAEC,OAAOO,OAAOsB,MAClBC,cAAe,QACfC,gBAAiB,WACjBC,eAAgB,WAErBvB,MAAMP,GACLnB,EAAO,SAAWyC,EAAK,EAC3BI,GAAYK,UAAUlD,GAClBmD,aAAa,IAEjBN,EAAYlB,GAAG,QAAS,WACpBR,EAAIiC,OAAOX,EAAK,GAAIA,EAAK,KACzBY,YAAYZ,EAAK,QAIzBN,EAASmB,iBAAiB,SAAU,WAChC,GAAuB,gBAAnBnB,EAASL,MAAyB,CAClC,GAAIyB,GAAWpB,EAASA,EAASqB,eAAeZ,QAAQjE,SACpD8E,EAAWtB,EAASA,EAASqB,eAAeZ,QAAQhE,SACxDuC,GAAIiC,OAAOG,EAAUE,OAKjC,IAAIC,GAAe9C,SAASC,cAAc,SAC1C6C,GAAa5C,aAAa,OAAQ,UAClC4C,EAAa5C,aAAa,KAAM,oBAChC4C,EAAa3C,YAAYH,SAAS0B,eAAe,sBAEjDoB,EAAaJ,iBAAiB,QAAS,WAEnC,GAAIK,GAAY/C,SAASC,cAAc,QACvC8C,GAAU7C,aAAa,MAAO,cAC9B6C,EAAUC,UAAUC,IAAI,eACxBF,EAAU5C,YAAYH,SAAS0B,eAAe,eAC9C,IAAIwB,GAASlD,SAASC,cAAc,QACpCiD,GAAOhD,aAAa,cAAe,QACnCgD,EAAOhD,aAAa,OAAQ,cAC5BgD,EAAOhD,aAAa,KAAM,cAC1BgD,EAAOhD,aAAa,OAAQ,OAC5B,IAAIiD,GAAYnD,SAASC,cAAc,QACvCkD,GAAUjD,aAAa,MAAO,qBAC9BiD,EAAUH,UAAUC,IAAI,eACxBE,EAAUhD,YAAYH,SAAS0B,eAAe,sBAC9C,IAAI0B,GAASpD,SAASC,cAAc,QACpCmD,GAAOlD,aAAa,cAAe,eACnCkD,EAAOlD,aAAa,OAAQ,qBAC5BkD,EAAOlD,aAAa,KAAM,qBAC1BkD,EAAOlD,aAAa,OAAQ,OAC5B,IAAImD,GAAWrD,SAASC,cAAc,QACtCoD,GAASnD,aAAa,MAAO,kBAC7BmD,EAASL,UAAUC,IAAI,eACvBI,EAASlD,YAAYH,SAAS0B,eAAe,mBAC7C,IAAI4B,GAAQtD,SAASC,cAAc,QACnCqD,GAAMpD,aAAa,OAAQ,kBAC3BoD,EAAMpD,aAAa,KAAM,kBACzBoD,EAAMpD,aAAa,OAAQ,QAC3BoD,EAAMpC,MAAQC,4BAA4BP,EAAOQ,YACjD,IAAImC,GAAWvD,SAASC,cAAc,QACtCsD,GAASrD,aAAa,MAAO,mBAC7BqD,EAASP,UAAUC,IAAI,eACvBM,EAASpD,YAAYH,SAAS0B,eAAe,oBAC7C,IAAI8B,GAAQxD,SAASC,cAAc,QACnCuD,GAAMtD,aAAa,OAAQ,mBAC3BsD,EAAMtD,aAAa,KAAM,mBACzBsD,EAAMtD,aAAa,OAAQ,QAC3BsD,EAAMtC,MAAQI,6BAA6BV,EAAOQ,YAClD,IAAIqC,GAAczD,SAASC,cAAc,SACzCwD,GAAYvD,aAAa,KAAM,gBAC/BuD,EAAYvD,aAAa,QAAS,oBAClCuD,EAAYvD,aAAa,OAAQ,gBACjCuD,EAAYvD,aAAa,OAAQ,UACjCuD,EAAYtD,YAAYH,SAAS0B,eAAe,qBAChD9B,EAAKO,YAAY4C,GACjBnD,EAAKO,YAAY+C,GACjBtD,EAAKO,YAAYgD,GACjBvD,EAAKO,YAAYiD,GACjBxD,EAAKO,YAAYkD,GACjBzD,EAAKO,YAAYmD,GACjB1D,EAAKO,YAAYoD,GACjB3D,EAAKO,YAAYqD,GACjB5D,EAAKO,YAAYsD,GAEjBA,EAAYf,iBAAiB,QAAS,WAElC,GAAIgB,GAAW,GAAIC,SACnBD,GAASE,OAAO,aAAc5D,SAASiB,cAAc,eAAeC,OACpEwC,EAASE,OAAO,oBAAqB5D,SAASiB,cAAc,sBAAsBC,OAClFwC,EAASE,OAAO,iBAAkB5D,SAASiB,cAAc,mBAAmBC,OAC5EwC,EAASE,OAAO,kBAAmB5D,SAASiB,cAAc,oBAAoBC,OAE9E/C,MAAM,eAEFC,YAAa,cACbC,OAAQ,OACRwF,KAAMH,IAETpF,KAAK,SAAUC,GACZ,MAAOA,GAASC,SAEnBF,KAAK,SAAUwF,GACZ,GAAuB,GAAnBA,EAAUpF,MACV,KAAM,IAAIqF,OAAMD,EAAUjF,kBAG9B,IAAImF,GAAWF,EAAUG,MAAM,KAC3BC,EAAOF,EAASG,KAEpBvE,GAAKwE,YAAYpE,SAASiB,cAAc,gBACxCrB,EAAKwE,YAAYpE,SAASiB,cAAc,uBACxCrB,EAAKwE,YAAYpE,SAASiB,cAAc,oBACxCrB,EAAKwE,YAAYpE,SAASiB,cAAc,oBAExC,KAAK,GADDoD,GAASrE,SAASsE,iBAAiB,gBAC9BtF,EAAI,EAAGA,EAAIqF,EAAOtF,SAAUC,EACjCY,EAAKwE,YAAYC,EAAOrF,GAE5BY,GAAKwE,YAAYpE,SAASiB,cAAc,kBACxCrB,EAAKwE,YAAYpE,SAASiB,cAAc,sBAExCV,EAAIgE,YAAY3D,EAEhB,IAAI4D,GAAYxE,SAASC,cAAc,SACvCuE,GAAUtE,aAAa,QAASgE,GAChCM,EAAUrE,YAAYH,SAAS0B,eAAeoC,EAAgB,OAC9DU,EAAUxC,QAAQjE,SAAW+F,EAAoB,SACjDU,EAAUxC,QAAQhE,UAAY8F,EAAqB,UACnDvC,EAASpB,YAAYqE,EACrB,IAAIC,GAAiBrE,EAAEQ,QAAQkD,EAAoB,SAAGA,EAAqB,YACvE5B,KAAM9B,EAAEC,OAAOO,OAAOsB,MAClBC,cAAe,QACfC,gBAAiB,WACjBC,eAAgB,WAErBvB,MAAMP,GACLmE,EAAU,SAAWZ,EAAgB,IACzCW,GAAenC,UAAUoC,GACrBnC,aAAa,IAEjBkC,EAAe1D,GAAG,QAAS,WACvBR,EAAIiC,OAAOsB,EAAoB,SAAGA,EAAqB,YACvDrB,YAAYyB,KAGhBzB,YAAYyB,KACb1E,MAAM,SAAUmF,GACfhG,SAASC,QACTD,SAASD,MAAMiG,SAI3B/E,EAAK+B,aAAamB,EAAc/C,GAGpC,QAASb,eAAc0F,GACnB,GAAIC,GAAK,WACLC,EAAcD,EAAGE,KAAKH,GACtBzF,EAAW2F,EAAY,GAAGb,MAAM,IAEpC,QAAQ9E,EAAS,GAAIA,EAAS,IAGlC,QAASsD,aAAYpD,GACjBW,SAASiB,cAAc,kBAAoB5B,EAAM,MAAM2F,UAAW,EAGtE,QAAS7D,6BAA4BlC,GACjC,GAAI6F,GAAc,WAAWC,KAAK9F,GAC9BE,EAAW2F,EAAY,GAAGb,MAAM,IAEpC,OAAO9E,GAAS,GAAG8F,QAAQ,IAAK,IAGpC,QAAS3D,8BAA6BrC,GAClC,GAAI6F,GAAc,WAAWC,KAAK9F,GAC9BE,EAAW2F,EAAY,GAAGb,MAAM,IAEpC,OAAO9E,GAAS,GAvRpB,GAAI,eAAiB1B,WAAW,CAC5B,GAAIoC,QAASG,SAASiB,cAAc,UAChCpB,QAAO6C,mBAGP7C,OAAOqF,UAAW,EAClBrF,OAAO6C,iBAAiB,QAASlF","file":"newnote.js","sourcesContent":["/* global L, 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 var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\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 placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\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.panTo([placeLat, placeLon]);\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 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 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 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 = getLatitudeFromMapboxMarker(marker.getLatLng());\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 = getLongitudeFromMapboxMarker(marker.getLatLng());\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(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\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 //create the slug from the url\n var urlParts = placeJson.split('/');\n var slug = urlParts.pop();\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', slug);\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 newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var newName = 'Name: ' + placeJson['name'];\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson['latitude'], placeJson['longitude']]);\n selectPlace(slug);\n });\n //make selected\n selectPlace(slug);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\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 getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index 5a092f6e..33d914a8 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,r=[];for(n=0;n0){var n,r=[];for(n=0;nEqAF#acCXk!=e)^o6Og^ zs%DbOgTb(=a-2Zoai6_fs$=%D(_mO-L~|;Dgc1Gj{jJ(dDXy=SUiR<)Tu*L|rBoyf zuq4nyt-v5+mI-AcEDv$I?e~1SwM2j*VPXVupe4a_kkE3!?D$q%+e36edTrO+?ki(>joUD_>8o$oPXQ12N@GgmOB*qf$In5Ixr z0e^Y&3y-sd0?mDs$P-JzZrFzb7c}8dH%P@b?L$ifWyzcnQC6f(ce%&t8qCAH!c0}S zLrdYt>Z%&ljWD~t%RTzE3-L2l(8EvJa!w;!JOUHc{pdLu{~nv<>f_8}QtZm`A?&e( zqG0H~(FrkePJN!J`FQ0=w4GbGBIANgv-n(2;UEda?R94w6YFyRc%Yi0U+?K3C0$#{ z76W}yCB$hMNV-hZDq<>U=YjRx4RM7a5VY)ckW@F_?Bsw8)2vL=jP3Yv1tg92wL|bA zEU*XU!GAhwKdhCYg`|k$!;18y{iUVbch%dA7;v$d&$$bK|Gdlp{(KA{p1+$v|DIo6 z&;EDy^6%}tJ&RxVW;aj&e|SIN=`P9-{j2%bWpxeVlWGV4tfuy7HXZ_hC?4YuVN z<{TD4=Rwn~qG~d7Z1vI$y}!@!sHS5QI$E4yyV-lcIyLf*Brxue%Yt1`j-^XV_4|NF z61J_jfOl-`tv{lQI-QNI0OEDT9#mSxi2kTurRv=jQ)OvP)h6;D0paAsW9MjfRgt~y z3{W!x5FAUf@)4`*$G&xU7UG%@+$zlwXiAzSWx`TQ(gmSxQ?+ky%?Oh!-v1CaAXfff zNnI5x%PvTZ(IE;-pZ9_P79fQpdVXGx$46=giPLs2Io-p4wo0K0>Gp3{TaOumS6z`RV7oC&%>q^n~$Uh=J z4IC2M*NP%Kv_HMgQJJdXGw@o`0>%g6vD3Lm=#-*(w5c0=;!ZtxW^DwLcs1+*g=>u* z(~{lt7~654MMN3S;xq^@*tn!5k}`SLi|oF9K-xx+L6_H3)yO75 zDmy}_&wm!tz$~U`sS8mJ9YwPKCA0^PhYA8~!DNpO9zuizFa(lkC+KCGB$_*%$3Xbh zM+ecKgohDs4#B??bK%@=Nqg83G+X4JS_&-anm6PwK9M)KlzkfcqQ}mO%I+R~&cVN$ zX`WliHYl~==Nv-bg7P*f=jNR~1$kGUd^SUx^Ze@lB7ANxlRN7ybt|SEa{jWan^JCl z_C4>cW1q~R<}{AITS%$N!PqzseUy`R|J`M9(k5Q1jfHD|V4KeT-$!*AP*Gv!E|~BlE_cA}bqc9bKva^AxW~tgOBaCK%!<%0H=5 z-0x4PphYLPkG<02`-aG#laO@NAnmozHhiv&L5QQN&T`XiG7JCgsP&q#LXoj2Y4npw`j;T$Q%Ux} zZbrGzr)ORtFZ+*8FVlNOfAT@zXXN zHt~+>ky7@d{^*CgI7&Cv*trW1>uL@_tixIR?5=rL3%M?5s^@sXSCWAqt{w0a*7rr+ zLj@IUaD3^R?;j?Im=+@%`Dp>+g@MJH4?nXhrJ zn`H7}Fl?$ECy;pDXRns(n7!;Y7*-k4oC+XeM8CU#>sntaz3kupxt`n_OQ}c}U`e2Z zT7f~tEECE?SRUeZ+wb{uYl#3s!o(QhKu3b*GNpGF2Rn)bHH3=@qmMfzn0F27jozP; z(N})Nq{y~0W@5{pWZK2&N)CHj7;bNR)0)^+^Tz}A4E=gf|2XT~La`X= zgDN3O!${I8&8mp0lAQ-uZ#Tp>fh6RTu z(0R}_>!^l|99qBhLhtW0Jg(`Ogq{|s*lzdMuTQOfBMFSV@{(VLEvNJ%< zL_lyX#g>m)wSMedZ*L*4`M{mh41tQINmeEzWh7e=$~Cq2&95C{q~gO5RSRMj?)7;y zQf2uCvKV!$p!N9x_-_ePDWVtV)i_R@Rr>M|x{{k-1#{$5x$M!{AQFKe+b#@3FI(eJ zrhG`X<|(3e2D{L%n(ZYj0py+|1v~_|W7O1xQhr#1%T!~f#{oVp)}!D+Vs>6})U3`r z91)a)H3QCVqIaacU=;u!kGHqgiA9m1;Ql-5y@e&4 zoxbo{MMLwLpGg;@8aj$({Yz*M8gEk&SPLe1Z14~w9Dr>=^85t7Oq)bYhw~T+pZe$_ z+LQ6H!Yv^9S7t7pyDe)E7lP)C(o@TT16_-T(#2=;7MAnRV_)>xJ5$-;gD*JvS3AuM z3;71E7Q$RWC|c0o2Is=Ox2K@&s+Z4pNPAvfyh4t=D_did@$IC2zu5tf6&t+Yv2>SEz4A6RJXgK?%bE-h4w z5|vpQlwMhsDHtYeu&6Q9;CUcBs!IuzGfwQ1*_D1GSIz?8t&?dT4{}(x4j#%0HGMHeAqiFx6o#K9f zIs+{_u_-2{!}kr5JI5Cf3(EcsZ+T|rux81(eiAX9M|QcUr+u%$TGA@6O4!dKrCEaR z#PiHeI3ywIrs3Kfoo)Es6r&JFMZM+b*<>F6*-`5?VGBjZo}|%FBKcp2NKPfi|E3w` zCZAnoeX{I7HoeSFi2n4wvd@(YD|Yluv(42}ccC?k=oC_oN%yBYL=hAjZ#2Y5IX3Z* z*@05_q5kNHx;RQ#)Y`cV4x4%oKOKvBc*<$u&dXD>aaXi&;M|{(R106U`QE^*C7quk%BO?;uWDx=e(*wiw~DliOf=VmgBiTwlbIzyJH$ zm&?DY7k|fR)hElpT%25yX^2s$1OLmsA&k5*THnmM)fm-4I;-JU=_Xh0Ecc4&}L4R9b^XKVso9h^dHj1wn1z<=azvQZc zqAf8ShEJ?nJ@Ots3U;YHte)vbMrjDYyH}mji%6eCeQuyHaNMtO9aNTkPgm`gqoOi8 zU~NiaOt%?Ff*`q9kf}CoG7=Ot0K(pXq%7w0t|5yyhmlGVtNb3Wea>VgAUDxwGT0+W z>3<+7D@O#`CXCcISoZ;(8w**Lqv3+Iyk3NoYSBS!+`WizKTQ3C1+u@?N}U0`LCLz+@V1`4F(TH;oQyaWB$h zA9|6QVh?l?R|+>K9(*TC7rqYaCIxkWUt&!f>*hgNquepr)xBU>d%=zjtrBSOXN%yj z5?8_$-u3;BrrvK~-ON|ARbTJ9#C_)(`mPZTu|~MW0u$Y>eyQ;7(33X>9)B@*^$~Y` zx@~;fu#vFz+afU0&BcbrB8DY0At~nFFR&{dX=y!ULR6O(X<30Y5_V_4az$Qdno^nC z5jHpC<`n*&sS0eTDx1LpbxUimCT$o$4ugcdGnDP!1oFC4(xK69LoQrinJS}Gom*I$ zONde+6>ZAWn^J*I?@fd;y?-$kGwP>A!&^kW>wTp%l1E(>r%Li|+mDkZ9UEY0^2r0? z3w7xMzTCZNQ)V_>!+1mO@7mEzQtU3SoHFrJRS^7Cj3WDv2W0n=iCxdg{&V!26x)8? zza|H=2K)a1Ps^%*S_apr&ERoa?RZ=^>Br?h*P@pur|X!obAou^IDZxB+W(Hn6AiP2 zSz|XF9nU3>e#^4_5A-*BRiR?dG?JOd7xfJi;*eovGTgoZ21{>h%-3Me)(#y!8Cw{KR2todBEFrKiOIldqae!4;F s`jw-j*Cw@TYzgRhCH3NmZ_f(MKi}}Qac!S!^YN8`0V^}n0UsFv05!j5X8-^I delta 1729 zcmV;y20rQCoVBJnuKwf_7h;T6)&q{tW0H7vf9BOQ;|5DucW<#)>*u zxYsoTSWhu}8IgEdHkOySbVE0tNn?4;F;4F;z?G|voK$|{L<6@cz6^xy*;2NtZkiV!~Bwk`c8{|cH zRunu3YmNQ=?=!BzI(c!MTd2WhlywBpk!?Aj38+get5ys}rabtNE6_`~dh3+lU2!|n z%og(}(+k|Ei_@uoGvb>b9qGVnii+DBx__wc80Y#)z6%*;suY}L}gSCtk&oPGGy?PveU`IrB=xOw;2+2^ajsTZfS>Z8?PF3+yX zG{mUWf&XRR5Jp}Yt#23HYN+$2Hh*%Z<(kme@b4vDXLDfg2|N1>%@ME}zXh9hQk+x} zNc*L*I{^+#_cb`F`T6Uo8%mk-R@h6hK{hg3zFhK!0?*Ov`PO8HPF0RkB<(6_1g;Bg zIC0Qp|7!#G_8U;B%AhU3@#pDym+KgZHj1wo1z<=azv8NaqAf97hL5aSKY#KbJqmWI zJgm<2GNUwv-`%Uu=w+nOp*}az7dY-$xCtuDgQu(Z%281n9k4c~Fs8eVBSDZnD9BV> zHW>*D8USJMKT;NRdDoCdo8w5Oh*f?IH$G=F5|Eo{Ga2lWqjV6Il_P>|6GrM9ta}eG zjD@UZ7HI)z-ll4f%GB_l zFOEKgnf8fWDp_8R($?e^*C=w}3uWPW`QDm&z+2s{Y_)%Q1=`JI?LdP?fh(?;Fp`Mf zZ*=(ZFq9$Tc15C`m-+4lf2sxCJb5WH%%!-xI8A%=nL{%-+se=!JYS(<;Q4Bz^W|l*o;t+a~nc@(139bk?CLVkz z>Iz>P>Lvwse_vuv8tdjkSfkuA*wwvYR|mn446PDqA7+c-u2NUR1m5-ijix?qU)?O$ zvQ=LnxWs+q8Tzgf4Y5YJL;_RYt$wBO?a`Aq1s;DgcKrc&dZ@;}mF z=!q{Ca08|9aRtYB@UDL-MDZ{7l- z?L?-ofqQK4>_#8<+CAZDG6Gn6BMHObgpSo=l>VFgki2O}1B0Iz5UD5K4-$gVa6w5q zJlFGE0mTN!xZ}6e_U($0HD9O}#xoW($Jc|w&o(ICymoT(n@MdNTLSuBNxl5;>sf)> X=i8k&uI*B7Hoo>R>Dv4d9T@-sn_pu5