markers - add on click

This commit is contained in:
Azgaar 2021-09-25 17:24:40 +03:00
parent 43561df98b
commit 2587a1643b
2 changed files with 19 additions and 31 deletions

View file

@ -212,6 +212,7 @@ function editMarker() {
} }
function toggleAddMarker() { function toggleAddMarker() {
markerAdd.classList.toggle("pressed");
addMarker.click(); addMarker.click();
} }
@ -235,8 +236,8 @@ function editMarker() {
listeners.forEach(removeListener => removeListener()); listeners.forEach(removeListener => removeListener());
unselect(); unselect();
if (addMarker.classList.contains("pressed")) addMarker.classList.remove("pressed"); addMarker.classList.remove("pressed");
if (markerAdd.classList.contains("pressed")) markerAdd.classList.remove("pressed"); markerAdd.classList.remove("pressed");
restoreDefaultEvents(); restoreDefaultEvents();
clearMainTip(); clearMainTip();
} }

View file

@ -688,7 +688,7 @@ function addRouteOnClick() {
} }
function toggleAddMarker() { function toggleAddMarker() {
const pressed = document.getElementById("addMarker").classList.contains("pressed"); const pressed = document.getElementById("addMarker")?.classList.contains("pressed");
if (pressed) { if (pressed) {
unpressClickToAddButton(); unpressClickToAddButton();
return; return;
@ -696,46 +696,33 @@ function toggleAddMarker() {
addFeature.querySelectorAll("button.pressed").forEach(b => b.classList.remove("pressed")); addFeature.querySelectorAll("button.pressed").forEach(b => b.classList.remove("pressed"));
addMarker.classList.add("pressed"); addMarker.classList.add("pressed");
closeDialogs(".stable");
viewbox.style("cursor", "crosshair").on("click", addMarkerOnClick); viewbox.style("cursor", "crosshair").on("click", addMarkerOnClick);
tip("Click on map to add a marker. Hold Shift to add multiple", true); tip("Click on map to add a marker. Hold Shift to add multiple", true);
if (!layerIsOn("toggleMarkers")) toggleMarkers(); if (!layerIsOn("toggleMarkers")) toggleMarkers();
} }
function addMarkerOnClick() { function addMarkerOnClick() {
// TODO: rework for new markers system const {markers} = pack;
const point = d3.mouse(this); const point = d3.mouse(this);
const x = rn(point[0], 2); const x = rn(point[0], 2);
const y = rn(point[1], 2); const y = rn(point[1], 2);
const id = getNextId("marker"); const i = last(markers).i + 1;
const selected = markerSelectGroup.value; const isMarkerSelected = elSelected?.node()?.parentElement?.id === "markers";
const valid = const selectedMarker = isMarkerSelected ? markers.find(marker => marker.i === +elSelected.attr("id").slice(6)) : null;
selected && const baseMarker = selectedMarker || {icon: "❓"};
d3 const marker = {...baseMarker, i, x, y};
.select("#defs-markers")
.select("#" + selected)
.size();
const symbol = valid ? "#" + selected : "#marker0";
const added = markers.select("[data-id='" + symbol + "']").size();
let desired = valid && added ? markers.select("[data-id='" + symbol + "']").attr("data-size") : 1;
if (isNaN(desired)) desired = 1;
const size = desired * 5 + 25 / scale;
markers markers.push(marker);
.append("use") const markersElement = document.getElementById("markers");
.attr("id", id) const rescale = +markersElement.getAttribute("rescale");
.attr("xlink:href", symbol) markersElement.insertAdjacentHTML("beforeend", drawMarker(marker, rescale));
.attr("data-id", symbol)
.attr("data-x", x)
.attr("data-y", y)
.attr("x", x - size / 2)
.attr("y", y - size)
.attr("data-size", desired)
.attr("width", size)
.attr("height", size);
if (d3.event.shiftKey === false) unpressClickToAddButton(); if (d3.event.shiftKey === false) {
document.getElementById("markerAdd").classList.remove("pressed");
unpressClickToAddButton();
}
} }
function viewCellDetails() { function viewCellDetails() {