content = $('#sidebar_content'),
page = {},
addNoteButton = $(".control-note .control-button"),
- newNote;
+ newNote,
+ halo;
var noteIcons = {
"new": L.icon({
})
};
- page.pushstate = page.popstate = function () {
- page.load();
- };
-
addNoteButton.on("click", function (e) {
e.preventDefault();
e.stopPropagation();
- OSM.route('/new_note');
+ if ($(this).hasClass('disabled')) return;
+
+ OSM.router.route('/note/new');
});
function createNote(marker, form, url) {
- var location = marker.getLatLng();
+ var location = marker.getLatLng().wrap();
marker.options.draggable = false;
marker.dragging.disable();
newNote = null;
noteLayer.removeLayer(marker);
addNoteButton.removeClass("active");
- OSM.route('/browse/note/' + feature.properties.id);
+ OSM.router.route('/note/' + feature.properties.id);
}
}
function updateMarker(feature) {
- marker = L.marker(feature.geometry.coordinates.reverse(), {
+ var marker = L.marker(feature.geometry.coordinates.reverse(), {
icon: noteIcons[feature.properties.status],
opacity: 0.9,
clickable: true
return marker;
}
- function initialize() {
+ page.pushstate = page.popstate = function (path) {
+ OSM.loadSidebarContent(path, page.load);
+ };
+
+ function newHalo(loc, a) {
+ if (a == 'dragstart' && map.hasLayer(halo)) {
+ map.removeLayer(halo);
+ } else {
+ if (map.hasLayer(halo)) map.removeLayer(halo);
+
+ halo = L.circleMarker(loc, {
+ weight: 2.5,
+ radius: 20,
+ fillOpacity: 0.5,
+ color: "#FF6200"
+ });
+
+ map.addLayer(halo);
+ }
+ }
+
+ page.load = function () {
if (addNoteButton.hasClass("disabled")) return;
if (addNoteButton.hasClass("active")) return;
draggable: true
});
+ newNote.on("dragstart dragend", function(a) {
+ newHalo(newNote.getLatLng(), a.type);
+ });
+
newNote.addTo(noteLayer);
+ newHalo(newNote.getLatLng());
newNote.on("remove", function () {
addNoteButton.removeClass("active");
e.preventDefault();
createNote(newNote, e.target.form, '/api/0.6/notes.json');
});
- }
- page.load = function () {
- content.load(window.location.pathname + "?xhr=1", function (a, b, xhr) {
- if (xhr.getResponseHeader('X-Page-Title')) {
- document.title = xhr.getResponseHeader('X-Page-Title');
- }
- initialize();
- });
+ return map.getState();
};
page.unload = function () {
noteLayer.removeLayer(newNote);
+ map.removeLayer(halo);
addNoteButton.removeClass("active");
};