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);