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 () {
25 var data = $(".details").data();
27 var latLng = L.latLng(data.coordinates.split(","));
28 initialize(path, id, map.getBounds().contains(latLng));
32 page.load = function (path, id) {
36 function initialize(path, id, skipMoveToNote) {
37 content.find("button[name]").on("click", function (e) {
39 var data = $(e.target).data();
40 var name = $(e.target).attr("name");
46 OSM.loadSidebarContent(path, () => {
51 content.find("#comment-error")
52 .text(xhr.responseText)
53 .prop("hidden", false)
54 .get(0).scrollIntoView({ block: "nearest" });
59 if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") {
60 ajaxSettings.data = { text: content.find("textarea").val() };
63 content.find("button[name]").prop("disabled", true);
67 content.find("textarea").on("input", function (e) {
68 updateButtons(e.target.form);
71 content.find("textarea").val("").trigger("input");
73 var data = $(".details").data();
76 var hashParams = OSM.parseHash(window.location.hash);
80 latLng: L.latLng(data.coordinates.split(",")),
81 icon: noteIcons[data.status]
83 if (!hashParams.center && !skipMoveToNote) {
84 var latLng = L.latLng(data.coordinates.split(","));
85 OSM.router.withoutMoveListener(function () {
86 map.setView(latLng, 15, { reset: true });
93 function updateButtons() {
94 var resolveButton = content.find("button[name='close']");
95 var commentButton = content.find("button[name='comment']");
97 content.find("button[name]").prop("disabled", false);
98 if (content.find("textarea").val() === "") {
99 resolveButton.text(resolveButton.data("defaultActionText"));
100 commentButton.prop("disabled", true);
102 resolveButton.text(resolveButton.data("commentActionText"));
106 page.unload = function () {