1 OSM.Note = function (map) {
2 var content = $("#sidebar_content"),
7 iconUrl: OSM.NEW_NOTE_MARKER,
12 iconUrl: OSM.OPEN_NOTE_MARKER,
17 iconUrl: OSM.CLOSED_NOTE_MARKER,
23 page.pushstate = page.popstate = function (path, id) {
24 OSM.loadSidebarContent(path, function () {
27 var data = $(".details").data();
29 var latLng = L.latLng(data.coordinates.split(","));
30 if (!map.getBounds().contains(latLng)) {
31 OSM.router.withoutMoveListener(function () {
32 map.setView(latLng, 15, { reset: true });
38 page.load = function (path, id) {
42 function initialize(path, id) {
43 content.find("button[name]").on("click", function (e) {
45 var data = $(e.target).data();
46 var name = $(e.target).attr("name");
52 OSM.loadSidebarContent(path, () => {
57 content.find("#comment-error")
58 .text(xhr.responseText)
59 .prop("hidden", false)
60 .get(0).scrollIntoView({ block: "nearest" });
65 if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") {
66 ajaxSettings.data = { text: content.find("textarea").val() };
69 content.find("button[name]").prop("disabled", true);
73 content.find("textarea").on("input", function (e) {
74 updateButtons(e.target.form);
77 content.find("textarea").val("").trigger("input");
79 var data = $(".details").data();
82 var hashParams = OSM.parseHash(window.location.hash);
86 latLng: L.latLng(data.coordinates.split(",")),
87 icon: noteIcons[data.status]
89 if (!hashParams.center) {
90 var latLng = L.latLng(data.coordinates.split(","));
91 OSM.router.withoutMoveListener(function () {
92 map.setView(latLng, 15, { reset: true });
99 function updateButtons() {
100 var resolveButton = content.find("button[name='close']");
101 var commentButton = content.find("button[name='comment']");
103 content.find("button[name]").prop("disabled", false);
104 if (content.find("textarea").val() === "") {
105 resolveButton.text(resolveButton.data("defaultActionText"));
106 commentButton.prop("disabled", true);
108 resolveButton.text(resolveButton.data("commentActionText"));
112 page.unload = function () {