Let page.load proceed when zoomed out, disabling submit
Note that addNoteButton.hasClass("active") check in page.load is useless because page.unload removes this class.
This commit is contained in:
parent
17ab002c04
commit
feb7af2020
4 changed files with 78 additions and 11 deletions
|
@ -107,6 +107,14 @@ OSM.NewNote = function (map) {
|
|||
newNoteMarker = null;
|
||||
}
|
||||
|
||||
function updateControls() {
|
||||
const zoomedOut = addNoteButton.hasClass("disabled");
|
||||
const withoutText = content.find("textarea").val() === "";
|
||||
|
||||
content.find("#new-note-zoom-warning").prop("hidden", !zoomedOut);
|
||||
content.find("input[type=submit]").prop("disabled", zoomedOut || withoutText);
|
||||
}
|
||||
|
||||
page.pushstate = page.popstate = function (path) {
|
||||
OSM.loadSidebarContent(path, function () {
|
||||
page.load(path);
|
||||
|
@ -114,9 +122,6 @@ OSM.NewNote = function (map) {
|
|||
};
|
||||
|
||||
page.load = function (path) {
|
||||
if (addNoteButton.hasClass("disabled")) return;
|
||||
if (addNoteButton.hasClass("active")) return;
|
||||
|
||||
addNoteButton.addClass("active");
|
||||
|
||||
map.addLayer(noteLayer);
|
||||
|
@ -137,13 +142,9 @@ OSM.NewNote = function (map) {
|
|||
addNewNoteMarker(markerLatlng);
|
||||
|
||||
content.find("textarea")
|
||||
.on("input", disableWhenBlank)
|
||||
.on("input", updateControls)
|
||||
.focus();
|
||||
|
||||
function disableWhenBlank(e) {
|
||||
$(e.target.form.add).prop("disabled", $(e.target).val() === "");
|
||||
}
|
||||
|
||||
content.find("input[type=submit]").on("click", function (e) {
|
||||
const location = newNoteMarker.getLatLng().wrap();
|
||||
const text = content.find("textarea").val();
|
||||
|
@ -160,10 +161,14 @@ OSM.NewNote = function (map) {
|
|||
});
|
||||
});
|
||||
|
||||
addNoteButton.on("disabled enabled", updateControls);
|
||||
updateControls();
|
||||
|
||||
return map.getState();
|
||||
};
|
||||
|
||||
page.unload = function () {
|
||||
addNoteButton.off("disabled enabled", updateControls);
|
||||
removeNewNoteMarker();
|
||||
addNoteButton.removeClass("active");
|
||||
};
|
||||
|
|
|
@ -14,12 +14,19 @@ L.OSM.note = function (options) {
|
|||
map.on("zoomend", update);
|
||||
|
||||
function update() {
|
||||
var disabled = OSM.STATUS === "database_offline" || map.getZoom() < 12;
|
||||
var wasDisabled = link.hasClass("disabled"),
|
||||
isDisabled = OSM.STATUS === "database_offline" || map.getZoom() < 12;
|
||||
link
|
||||
.toggleClass("disabled", disabled)
|
||||
.attr("data-bs-original-title", I18n.t(disabled ?
|
||||
.toggleClass("disabled", isDisabled)
|
||||
.attr("data-bs-original-title", I18n.t(isDisabled ?
|
||||
"javascripts.site.createnote_disabled_tooltip" :
|
||||
"javascripts.site.createnote_tooltip"));
|
||||
|
||||
if (isDisabled && !wasDisabled) {
|
||||
link.trigger("disabled");
|
||||
} else if (wasDisabled && !isDisabled) {
|
||||
link.trigger("enabled");
|
||||
}
|
||||
}
|
||||
|
||||
update();
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
:log_in => link_to(t(".anonymous_warning_log_in"), login_path(:referer => new_note_path)),
|
||||
:sign_up => link_to(t(".anonymous_warning_sign_up"), user_new_path) %></p>
|
||||
<% end %>
|
||||
<p class="alert alert-warning" id="new-note-zoom-warning" hidden><%= t "javascripts.site.createnote_disabled_tooltip" %></p>
|
||||
<form action="#">
|
||||
<input type="hidden" name="lon" autocomplete="off">
|
||||
<input type="hidden" name="lat" autocomplete="off">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue