diff --git a/index.html b/index.html
index 34b159e8..ed0a7ab5 100644
--- a/index.html
+++ b/index.html
@@ -1656,6 +1656,7 @@
+
diff --git a/modules/ui/rivers-creator.js b/modules/ui/rivers-creator.js
index 6e1b94e8..22f88b70 100644
--- a/modules/ui/rivers-creator.js
+++ b/modules/ui/rivers-creator.js
@@ -74,19 +74,22 @@ function createRiver() {
function addRiver() {
const {rivers, cells} = pack;
- const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath} = Rivers;
+ const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath, getBasin} = Rivers;
+
+ const riverCells = createRiver.cells;
+ if (riverCells.length < 2) return tip("Add at least 2 cells", false, "error");
const riverId = last(rivers).i + 1;
- const riverCells = createRiver.cells;
+ const parent = cells.r[last(riverCells)] || riverId;
riverCells.forEach(cell => {
if (!cells.r[cell]) cells.r[cell] = riverId;
});
const source = riverCells[0];
- const mouth = riverCells[riverCells.length - 1];
+ const mouth = parent === riverId ? last(riverCells) : riverCells[riverCells.length - 2];
const sourceWidth = 0.05;
- const widthFactor = 1;
+ const widthFactor = 1.2;
const meanderedPoints = addMeandering(riverCells);
@@ -94,8 +97,9 @@ function createRiver() {
const length = getApproximateLength(meanderedPoints);
const width = getWidth(getOffset(discharge, meanderedPoints.length, widthFactor, sourceWidth));
const name = getName(mouth);
+ const basin = getBasin(parent);
- rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth, parent: riverId, cells: riverCells, basin: riverId, name, type: "River"});
+ rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth, parent, cells: riverCells, basin, name, type: "River"});
// render river
lineGen.curve(d3.curveCatmullRom.alpha(0.1));
@@ -109,6 +113,7 @@ function createRiver() {
}
function closeRiverCreator() {
+ body.innerHTML = "";
debug.select("#controlCells").remove();
restoreDefaultEvents();
clearMainTip();
diff --git a/modules/ui/rivers-editor.js b/modules/ui/rivers-editor.js
index e17df410..f0ae2f2a 100644
--- a/modules/ui/rivers-editor.js
+++ b/modules/ui/rivers-editor.js
@@ -33,6 +33,11 @@ function editRiver(id) {
modules.editRiver = true;
// add listeners
+ document.getElementById("riverCreateSelectingCells").addEventListener("click", createRiver);
+ document.getElementById("riverEditStyle").addEventListener("click", () => editStyle("rivers"));
+ document.getElementById("riverElevationProfile").addEventListener("click", showElevationProfile);
+ document.getElementById("riverLegend").addEventListener("click", editRiverLegend);
+ document.getElementById("riverRemove").addEventListener("click", removeRiver);
document.getElementById("riverName").addEventListener("input", changeName);
document.getElementById("riverType").addEventListener("input", changeType);
document.getElementById("riverNameCulture").addEventListener("click", generateNameCulture);
@@ -40,10 +45,6 @@ function editRiver(id) {
document.getElementById("riverMainstem").addEventListener("change", changeParent);
document.getElementById("riverSourceWidth").addEventListener("input", changeSourceWidth);
document.getElementById("riverWidthFactor").addEventListener("input", changeWidthFactor);
- document.getElementById("riverEditStyle").addEventListener("click", () => editStyle("rivers"));
- document.getElementById("riverElevationProfile").addEventListener("click", showElevationProfile);
- document.getElementById("riverLegend").addEventListener("click", editRiverLegend);
- document.getElementById("riverRemove").addEventListener("click", removeRiver);
function getRiver() {
const riverId = +elSelected.attr("id").slice(5);