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 const { url, method } = $(e.target).data(),
46 name = $(e.target).attr("name"),
47 data = new URLSearchParams();
48 content.find("button[name]").prop("disabled", true);
50 if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") {
51 data.set("text", content.find("textarea").val());
56 headers: { ...OSM.oauth },
60 if (response.ok) return response;
61 return response.text().then(text => {
62 throw new Error(text);
66 OSM.loadSidebarContent(path, () => {
71 content.find("#comment-error")
73 .prop("hidden", false)
74 .get(0).scrollIntoView({ block: "nearest" });
79 content.find("textarea").on("input", function (e) {
80 updateButtons(e.target.form);
83 content.find("textarea").val("").trigger("input");
85 var data = $(".details").data();
88 var hashParams = OSM.parseHash(window.location.hash);
92 latLng: L.latLng(data.coordinates.split(",")),
93 icon: noteIcons[data.status]
95 if (!hashParams.center) {
96 var latLng = L.latLng(data.coordinates.split(","));
97 OSM.router.withoutMoveListener(function () {
98 map.setView(latLng, 15, { reset: true });
105 function updateButtons() {
106 var resolveButton = content.find("button[name='close']");
107 var commentButton = content.find("button[name='comment']");
109 content.find("button[name]").prop("disabled", false);
110 if (content.find("textarea").val() === "") {
111 resolveButton.text(resolveButton.data("defaultActionText"));
112 commentButton.prop("disabled", true);
114 resolveButton.text(resolveButton.data("commentActionText"));
118 page.unload = function () {