v. 0.60.12b

#144 fix2
This commit is contained in:
Azgaar 2018-09-28 23:55:42 +03:00
parent 78f95b19d7
commit f3cb6d8c73
2 changed files with 27 additions and 37 deletions

View file

@ -31,7 +31,7 @@
<script src="libs/polylabel.min.js"></script> <script src="libs/polylabel.min.js"></script>
<script src="libs/quantize.min.js" defer></script> <script src="libs/quantize.min.js" defer></script>
<script src="libs/jquery.ui.touch-punch.min.js" defer></script> <script src="libs/jquery.ui.touch-punch.min.js" defer></script>
<link rel="stylesheet" type="text/css" href="index.css?version=0.60.06b"/> <link rel="stylesheet" type="text/css" href="index.css?version=0.60.07b"/>
<link rel="stylesheet" type="text/css" href="icons.css?version=0.60.06b"/> <link rel="stylesheet" type="text/css" href="icons.css?version=0.60.06b"/>
<link rel="stylesheet" type="text/css" href="libs/jquery-ui.css"/> <link rel="stylesheet" type="text/css" href="libs/jquery-ui.css"/>
</head> </head>

View file

@ -2983,7 +2983,7 @@ function fantasyMap() {
unselect(); unselect();
closeDialogs("#routeEditor, .stable"); closeDialogs("#routeEditor, .stable");
if (this !== window) { if (this && this !== window) {
elSelected = d3.select(this); elSelected = d3.select(this);
if (!debug.select(".controlPoints").size()) debug.append("g").attr("class", "controlPoints"); if (!debug.select(".controlPoints").size()) debug.append("g").attr("class", "controlPoints");
routeDrawPoints(); routeDrawPoints();
@ -3001,7 +3001,7 @@ function fantasyMap() {
unselect(); unselect();
} }
}); });
} } else {elSelected = null;}
if (modules.editRoute) {return;} if (modules.editRoute) {return;}
modules.editRoute = true; modules.editRoute = true;
@ -3032,11 +3032,12 @@ function fantasyMap() {
} }
function routeDrawPoints() { function routeDrawPoints() {
if (!elSelected.size()) return;
const node = elSelected.node(); const node = elSelected.node();
const l = node.getTotalLength(); const l = node.getTotalLength();
const parts = (l / 5) >> 0; // number of points const parts = (l / 5) >> 0; // number of points
let inc = l / parts; // increment let inc = l / parts; // increment
if (inc === Infinity) {inc = l;} // 2 control points for short routes if (inc === Infinity) inc = l; // 2 control points for short routes
// draw control points // draw control points
for (let i = 0; i <= l; i += inc) { for (let i = 0; i <= l; i += inc) {
const p = node.getPointAtLength(i); const p = node.getPointAtLength(i);
@ -3081,41 +3082,33 @@ function fantasyMap() {
routeLength.innerHTML = rn(l * distanceScale.value) + " " + distanceUnit.value; routeLength.innerHTML = rn(l * distanceScale.value) + " " + distanceUnit.value;
} }
function addNewRoute() {
let routeType = elSelected && elSelected.node() ? elSelected.node().parentNode.id : "searoutes";
const group = routes.select("#"+routeType);
const id = routeType + "" + group.selectAll("*").size();
elSelected = group.append("path").attr("data-route", "new").attr("id", id).on("click", editRoute);
routeUpdateGroups();
$("#routeEditor").dialog({
title: "Edit Route", minHeight: 30, width: "auto", resizable: false,
close: function() {
if ($("#addRoute").hasClass('pressed')) completeNewRoute();
if ($("#routeSplit").hasClass('pressed')) $("#routeSplit").removeClass('pressed');
unselect();
}
});
}
function newRouteAddPoint() { function newRouteAddPoint() {
const point = d3.mouse(this); const point = d3.mouse(this);
const x = rn(point[0],2), y = rn(point[1],2); const x = rn(point[0],2), y = rn(point[1],2);
let routeType = routeGroup.value;
if (!elSelected) {
const index = getIndex(point);
const height = cells[index].height;
if (height < 20) routeType = "searoutes";
if (routeType === "searoutes" && height >= 20) routeType = "roads";
}
const group = routes.select("#"+routeType);
addRoutePoint({x, y}); addRoutePoint({x, y});
if (!elSelected || elSelected.attr("data-route") !== "new") { routeRedraw();
const id = routeType + "" + group.selectAll("*").size();
elSelected = group.append("path").attr("data-route", "new").attr("id", id).on("click", editRoute);
routeUpdateGroups();
$("#routeEditor").dialog({
title: "Edit Route",
minHeight: 30, width: "auto", resizable: false,
position: {my: "center top+20", at: "top", of: d3.event},
close: function() {
if ($("#addRoute").hasClass('pressed')) completeNewRoute();
if ($("#routeSplit").hasClass('pressed')) $("#routeSplit").removeClass('pressed');
unselect();
}
});
} else {
routeRedraw();
}
} }
function completeNewRoute() { function completeNewRoute() {
$("#routeNew, #addRoute").removeClass('pressed'); $("#routeNew, #addRoute").removeClass('pressed');
restoreDefaultEvents(); restoreDefaultEvents();
if (!elSelected) return; if (!elSelected.size()) return;
if (elSelected.attr("data-route") === "new") { if (elSelected.attr("data-route") === "new") {
routeRedraw(); routeRedraw();
elSelected.attr("data-route", ""); elSelected.attr("data-route", "");
@ -3138,14 +3131,10 @@ function fantasyMap() {
} }
function routeUpdateGroups() { function routeUpdateGroups() {
const group = d3.select(elSelected.node().parentNode);
const type = group.attr("data-type");
routeGroup.innerHTML = ""; routeGroup.innerHTML = "";
routes.selectAll("g").each(function(d) { routes.selectAll("g").each(function() {
const el = d3.select(this);
if (el.attr("data-type") !== type) {return;}
const opt = document.createElement("option"); const opt = document.createElement("option");
opt.value = opt.innerHTML = el.attr("id"); opt.value = opt.innerHTML = this.id;
routeGroup.add(opt); routeGroup.add(opt);
}); });
} }
@ -3189,6 +3178,7 @@ function fantasyMap() {
$(".pressed").removeClass('pressed'); $(".pressed").removeClass('pressed');
$("#routeNew, #addRoute").addClass('pressed'); $("#routeNew, #addRoute").addClass('pressed');
debug.select(".controlPoints").selectAll("*").remove(); debug.select(".controlPoints").selectAll("*").remove();
addNewRoute();
viewbox.style("cursor", "crosshair").on("click", newRouteAddPoint); viewbox.style("cursor", "crosshair").on("click", newRouteAddPoint);
tip("Click on map to add route point", true); tip("Click on map to add route point", true);
} }
@ -6302,7 +6292,7 @@ function fantasyMap() {
tip("", true); tip("", true);
} }
// add relief icon on click // add route on click
$("#addRoute").click(function() { $("#addRoute").click(function() {
if (!modules.editRoute) editRoute(); if (!modules.editRoute) editRoute();
$("#routeNew").click(); $("#routeNew").click();