From 5384ee236cfbb1a33e018f9b85c63d765961a479 Mon Sep 17 00:00:00 2001 From: Aaron Lidman Date: Wed, 20 Nov 2013 11:43:31 -0800 Subject: [PATCH] Fixed individual note marker implementation, closes #78 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Removed forced noteLayer view, now respects current selection just like an other browse page. - Made marker replacement it’s own thing, seperate from noteLayer. - Reduced opacity on noteLayer notes, it makes the selected note stand out more --- app/assets/javascripts/index/note.js.erb | 27 +++++++++++------------ app/assets/javascripts/index/notes.js.erb | 2 +- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/index/note.js.erb b/app/assets/javascripts/index/note.js.erb index 09044bf0e..8c2ab5c56 100644 --- a/app/assets/javascripts/index/note.js.erb +++ b/app/assets/javascripts/index/note.js.erb @@ -2,8 +2,7 @@ OSM.Note = function (map) { var noteLayer = map.noteLayer, content = $('#sidebar_content'), page = {}, - noteState = map.hasLayer(noteLayer), - halo; + halo, currentNote; var noteIcons = { "new": L.icon({ @@ -23,7 +22,7 @@ OSM.Note = function (map) { }) }; - function updateNote(marker, form, method, url) { + function updateNote(form, method, url) { $(form).find("input[type=submit]").prop("disabled", true); $.ajax({ @@ -31,13 +30,7 @@ OSM.Note = function (map) { type: method, oauth: true, data: {text: $(form.text).val()}, - success: function (feature) { - marker = noteLayer.getLayer(marker); - if (feature.properties.status == "hidden") { - noteLayer.removeLayer(marker); - } else if (marker) { - marker.setIcon(noteIcons[feature.properties.status]); - } + success: function () { OSM.loadSidebarContent(window.location.pathname, page.load); } }); @@ -51,7 +44,7 @@ OSM.Note = function (map) { content.find("input[type=submit]").on("click", function (e) { e.preventDefault(); var data = $(e.target).data(); - updateNote(data.noteId, e.target.form, data.method, data.url); + updateNote(e.target.form, data.method, data.url); }); content.find("textarea").on("input", function (e) { @@ -69,12 +62,10 @@ OSM.Note = function (map) { content.find("textarea").val('').trigger("input"); var data = $('.details').data(); - if (!noteState) map.addLayer(noteLayer); if (!window.location.hash) { var coords = data.coordinates.split(','); OSM.route.moveListenerOff(); map.once('moveend', OSM.route.moveListenerOn); - map.getZoom() > 15 ? map.panTo(coords) : map.setView(coords, 16); } @@ -87,11 +78,19 @@ OSM.Note = function (map) { }); map.addLayer(halo); } + + if (map.hasLayer(currentNote)) map.removeLayer(currentNote); + currentNote = L.marker(data.coordinates.split(','), { + icon: noteIcons[data.status], + opacity: 1, + clickable: true + }); + map.addLayer(currentNote); }; page.unload = function () { if (map.hasLayer(halo)) map.removeLayer(halo); - if (!noteState) map.removeLayer(noteLayer); + if (map.hasLayer(currentNote)) map.removeLayer(currentNote); }; return page; diff --git a/app/assets/javascripts/index/notes.js.erb b/app/assets/javascripts/index/notes.js.erb index 3bcdd4a19..11363fca8 100644 --- a/app/assets/javascripts/index/notes.js.erb +++ b/app/assets/javascripts/index/notes.js.erb @@ -43,7 +43,7 @@ function initializeNotes(map) { } else { marker = L.marker(feature.geometry.coordinates.reverse(), { icon: noteIcons[feature.properties.status], - opacity: 0.9, + opacity: 0.8, clickable: true }); marker.id = feature.properties.id; -- 2.43.2