User Tools

Site Tools


handleiding_nieuw:sub_spacematrix

This is an old revision of the document!


<div id=“summary”>

      <h3>Samenvatting</h3>
      <table>
          <tr><td>Laadvermogen (FSI × opp)</td><td id="summary_bvo">-</td></tr>
          <tr><td>Voorzieningenruimte totaal (m²)</td><td id="summary_voorz_tot">-</td></tr>
          <tr><td>Voorzieningenruimte per woning (m²)</td><td id="summary_voorz_per_won">-</td></tr>
          <tr><td>Woonruimte (m²)</td><td id="summary_wonen">-</td></tr>
          <tr><td>Totaal aantal woningen</td><td id="summary_woningen">-</td></tr>
      </table>
  </div>

</div>

<div id=“voorzieningen” class=“tabcontent”>

  <div class="inputrow">
      <label>Aantal bewoners per woning:</label>
      <input id="bewoners_per_woning" type="number" step="0.1" value="2.2">
  </div>
  <table>
      <thead>
          <tr><th>Voorziening</th><th>Norm (m² per 1000)</th><th>Selecteer</th></tr>
      </thead>
      <tbody id="voorzieningentabel"></tbody>
  </table>
  <div class="inputrow">
      <button onclick="berekenVoorzieningenruimte()">Toepassen in rekenblok</button>
      <div id="voorziening_resultaat"></div>
  </div>

</div>

<script> function updateStipje(fsi, gsi) {

  const stip = document.getElementById("stipje");
  const x = Math.min(100, Math.max(0, gsi * 190));
  const y = Math.max(0, Math.min(100, (3 - fsi) * 35));
  stip.style.left = `${x}%`;
  stip.style.top = `${y}%`;

} document.addEventListener(“DOMContentLoaded”, () ⇒ {

  const updateSummary = (bvoTot, voorzTot, voorzPerWoning, woonruimte, woningen) => {
      document.getElementById("summary_bvo").innerText = `${bvoTot.toFixed(0)} m²`;
      document.getElementById("summary_voorz_tot").innerText = `${voorzTot.toFixed(0)} m²`;
      document.getElementById("summary_voorz_per_won").innerText = `${voorzPerWoning.toFixed(1)} m²`;
      document.getElementById("summary_wonen").innerText = `${woonruimte.toFixed(0)} m²`;
      document.getElementById("summary_woningen").innerText = `${woningen}`;
  };
  window.updateLaadvermogen = function() {
      const opp = parseFloat(document.getElementById("opp").value);
      const fsi = parseFloat(document.getElementById("fsi").value);
      const gsi = parseFloat(document.getElementById("gsi").value);
      const bvoTot = opp * fsi;
      const voorzieningenruimte = parseFloat(document.getElementById("voorzieningenruimte").value);
      updateStipje(fsi, gsi);
      let gewogenBVO = 0;
      let totalPerc = 0;
      const details = [];
      for (let i = 0; i < 10; i++) {
          const perc = parseFloat(document.getElementById(`perc_${i}`).value) || 0;
          const bvo = parseFloat(document.getElementById(`bvo_${i}`).value) || 0;
          gewogenBVO += (perc / 100) * bvo;
          totalPerc += perc;
          details.push({ i, perc, bvo });
      }
      if (gewogenBVO === 0) return;
      let woningen = Math.floor(bvoTot / (gewogenBVO + voorzieningenruimte));
      let sumWon = 0;
      let sumBVO = 0;
      let wonPerType = [];
      let restant = woningen;
      for (let i = 0; i < details.length; i++) {
          const { perc } = details[i];
          let aant = (perc / 100) * woningen;
          let afgerond = Math.floor(aant);
          wonPerType.push(afgerond);
          restant -= afgerond;
      }
      const decimaalSort = details.map((d, i) => ({ i, rest: ((d.perc / 100) * woningen) % 1 }))
          .sort((a, b) => b.rest - a.rest);
      for (let j = 0; j < restant; j++) {
          wonPerType[decimaalSort[j].i]++;
      }
      for (let i = 0; i < details.length; i++) {
          const aant = wonPerType[i];
          const bvoTot = aant * details[i].bvo;
          document.getElementById(`aantal_${i}`).innerText = aant;
          document.getElementById(`totbvo_${i}`).innerText = bvoTot.toFixed(0);
          sumWon += aant;
          sumBVO += bvoTot;
      }
      document.getElementById("totaal_perc").innerText = `${totalPerc.toFixed(1)}%`;
      document.getElementById("totaal_gewbvo").innerText = `${gewogenBVO.toFixed(1)} m²`;
      document.getElementById("totaal_won").innerText = sumWon;
      document.getElementById("totaal_bvo").innerText = sumBVO.toFixed(0);
      document.getElementById("output").innerHTML =
          `<p><b>Gewogen BVO/ehd:</b> ${gewogenBVO.toFixed(1)} m²<br><b>Totaal aantal woningen:</b> ${sumWon}</p>`;
      const voorzieningenTot = sumWon * voorzieningenruimte;
      const wonenRuimte = bvoTot - voorzieningenTot;
      updateSummary(bvoTot, voorzieningenTot, voorzieningenruimte, wonenRuimte, sumWon);
  };

});

</script>

</body> </html>

handleiding_nieuw/sub_spacematrix.1746610552.txt.gz · Last modified: 2025/05/07 09:35 by support