diff --git a/main.js b/main.js index 011b43d2..64ee1b4e 100644 --- a/main.js +++ b/main.js @@ -1849,7 +1849,8 @@ function addZones(number = 1) { } // Update zone types -function updateZoneType(zone, newType) { +function updateZoneType(zoneId, newType) { + const zone = document.getElementById(zoneId); if (zone) { zone.dataset.type = newType; } diff --git a/modules/ui/zones-editor.js b/modules/ui/zones-editor.js index 9526ff45..49667146 100644 --- a/modules/ui/zones-editor.js +++ b/modules/ui/zones-editor.js @@ -72,22 +72,22 @@ function editZones() { } function updateSVG() { - const value = document.getElementById("zonesFilterType").value; + const value = document.getElementById("zonesFilterType").value; - zones.selectAll("g").each(function () { - if (value == "All" || this.dataset.type == value) { - this.style.display = "block"; - } else { - this.style.display = "none"; - } - }); + zones.selectAll("g").each(function () { + if (value == "All" || this.dataset.type == value) { + this.style.display = "block"; + } else { + this.style.display = "none"; + } + }); } function getZoneTypesList(zoneId, currentType) { - let res = ``; zoneTypes.forEach(function(z, i) { - res += ``; + res += ``; }); res += ''; @@ -113,7 +113,9 @@ function editZones() { zonesFilterType.options.add(new Option(z, z, false, selectedType==z)); }); + let zoneCount=0; zones.selectAll("g").each(function () { + zoneCount++; const zoneType = this.dataset.type; if (selectedType !== "All" && (zonesFilterButton.classList.contains("pressed") && zoneType !== selectedType)) return; @@ -148,6 +150,13 @@ function editZones() { body.innerHTML = lines; + for (let i=0; i !b.removed).map(b => b.population)) * urbanization) * populationRate; @@ -401,7 +410,7 @@ function editZones() { const id = getNextId("zone"); const description = "Unknown zone"; const fill = "url(#hatch" + (id.slice(4) % 14) + ")"; - zones.append("g").attr("id", id).attr("data-description", description).attr("data-cells", "").attr("fill", fill); + zones.append("g").attr("id", id).attr("data-description", description).attr("data-cells", "").attr("fill", fill).attr("data-type", zoneTypes[0]); const unit = areaUnit.value === "square" ? " " + distanceUnitInput.value + "²" : " " + areaUnit.value; const line = `
@@ -521,19 +530,28 @@ function editZones() { function zonesTypesAddLines() { const zoneTypeListBody = document.getElementById("zonesTypesBodySection"); + let lines = ""; zoneTypes.forEach(function(z, i) { - let count=0; // Amount of zones per type - zones.selectAll("g").each(function() { if (this.dataset.type === z) count++; }); - lines += `
${z}${count}`; - if (i > 5) { - let id="removeZoneType" + i; - lines += ``; - } - lines += '
'; + let count=0; // Amount of zones per type + zones.selectAll("g").each(function() { if (this.dataset.type === z) count++; }); + + lines += `
${z}${count}`; + if (i > 5) { + let id="removeZoneType" + i; + lines += ``; + } + lines += '
'; }); zoneTypeListBody.innerHTML = lines; zonesTypesFooterNumber.innerHTML = zoneTypes.length; + + for (let i=0; i