1 OSM.Note = function (map) {
2 var content = $("#sidebar_content"),
8 iconUrl: OSM.NEW_NOTE_MARKER,
13 iconUrl: OSM.OPEN_NOTE_MARKER,
18 iconUrl: OSM.CLOSED_NOTE_MARKER,
24 function updateNote(form, method, url) {
25 $(form).find("input[type=submit]").prop("disabled", true);
31 data: { text: $(form.text).val() },
32 success: function () {
33 OSM.loadSidebarContent(window.location.pathname, page.load);
38 page.pushstate = page.popstate = function (path) {
39 OSM.loadSidebarContent(path, function () {
40 initialize(function () {
41 var data = $(".details").data(),
42 latLng = L.latLng(data.coordinates.split(","));
43 if (!map.getBounds().contains(latLng)) moveToNote();
48 page.load = function () {
49 initialize(moveToNote);
52 function initialize(callback) {
53 content.find("input[type=submit]").on("click", function (e) {
55 var data = $(e.target).data();
56 updateNote(e.target.form, data.method, data.url);
59 content.find("textarea").on("input", function (e) {
60 var form = e.target.form;
62 if ($(e.target).val() === "") {
63 $(form.close).val(I18n.t("javascripts.notes.show.resolve"));
64 $(form.comment).prop("disabled", true);
66 $(form.close).val(I18n.t("javascripts.notes.show.comment_and_resolve"));
67 $(form.comment).prop("disabled", false);
71 content.find("textarea").val("").trigger("input");
73 var data = $(".details").data(),
74 latLng = L.latLng(data.coordinates.split(","));
76 if (!map.hasLayer(halo)) {
77 halo = L.circleMarker(latLng, {
86 if (map.hasLayer(currentNote)) map.removeLayer(currentNote);
87 currentNote = L.marker(latLng, {
88 icon: noteIcons[data.status],
93 map.addLayer(currentNote);
95 if (callback) callback();
98 function moveToNote() {
99 var data = $(".details").data(),
100 latLng = L.latLng(data.coordinates.split(","));
102 if (!window.location.hash || window.location.hash.match(/^#?c[0-9]+$/)) {
103 OSM.router.withoutMoveListener(function () {
104 map.setView(latLng, 15, { reset: true });
109 page.unload = function () {
110 if (map.hasLayer(halo)) map.removeLayer(halo);
111 if (map.hasLayer(currentNote)) map.removeLayer(currentNote);