User Tools

Site Tools


handleiding_nieuw:sub_spacematrix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
handleiding_nieuw:sub_spacematrix [2025/05/19 08:46] supporthandleiding_nieuw:sub_spacematrix [2025/05/19 10:26] (current) – external edit 127.0.0.1
Line 623: Line 623:
   const label = (txt) => `| ${txt}`.padEnd(labelWidth);   const label = (txt) => `| ${txt}`.padEnd(labelWidth);
  
 +  // DATA per woningtype (alleen types, dus zonder parkeren)
   const perc = types.map((_, i) => document.getElementById(`perc_${i}`)?.value || "0");   const perc = types.map((_, i) => document.getElementById(`perc_${i}`)?.value || "0");
-  const bvo = types.map((_, i) => document.getElementById(`bvo_${i}`)?.value || "0"); +  const bvo = types.map((_, i) => parseFloat(document.getElementById(`bvo_${i}`)?.value || "0")); 
-  const aantallen = types.map((_, i) => document.getElementById(`aantal_${i}`)?.innerText || "0"); +  const aantallen = types.map((_, i) => parseInt(document.getElementById(`aantal_${i}`)?.innerText || "0")); 
-  const bvo_tot = types.map((_, i) => document.getElementById(`totbvo_${i}`)?.innerText || "0");+  const vormfactor = types.map((_, i) => i < 5 ? 0.9 : 0.75); 
 +  const bvo_tot = bvo.map((b, i) => b * aantallen[i]); 
 +  const gbo = bvo.map((b, i) => (b * vormfactor[i]).toFixed(1));
  
 +  // PARKEERREGELS berekenen
   const pp = parseFloat(document.getElementById("pp_per_woning")?.value || 1);   const pp = parseFloat(document.getElementById("pp_per_woning")?.value || 1);
-  const woningen = aantallen.reduce((acc, val) => acc + parseInt(val || 0), 0);+  const woningen = aantallen.reduce((acc, val) => acc + (val || 0), 0); // alleen woningtypes
   const bvo_pp = parseFloat(document.getElementById("bvo_per_pp")?.value || 25);   const bvo_pp = parseFloat(document.getElementById("bvo_per_pp")?.value || 25);
   const perc_boven = parseFloat(document.getElementById("pp_bovengronds")?.value || 70);   const perc_boven = parseFloat(document.getElementById("pp_bovengronds")?.value || 70);
Line 638: Line 642:
   const bvo_onder = pp_onder * bvo_pp;   const bvo_onder = pp_onder * bvo_pp;
  
-  // Voeg parkeerdata toe +  // PARKEERGEGEVENS toevoegen 
-  perc.push("-"); perc.push("-"); +  perc.push("-""-"); 
-  bvo.push(bvo_pp.toFixed(0), bvo_pp.toFixed(0)); +  bvo.push(bvo_pp, bvo_pp); 
-  aantallen.push(pp_boven.toString()pp_onder.toString()); +  aantallen.push(pp_boven, pp_onder); 
-  bvo_tot.push(bvo_boven.toFixed(0), bvo_onder.toFixed(0));+  bvo_tot.push(bvo_bovenbvo_onder); 
 +  vormfactor.push(1.00, 1.00); 
 +  gbo.push((bvo_pp * 1.00).toFixed(1), (bvo_pp * 1.00).toFixed(1));
  
 +  // TABEL opbouwen
   const r = [];   const r = [];
   r.push(label("Type") + kolommen.map(head).join("|") + "|");   r.push(label("Type") + kolommen.map(head).join("|") + "|");
   r.push("".padEnd(labelWidth, " ") + kolommen.map(() => "-".repeat(colWidth)).join("|") + "|");   r.push("".padEnd(labelWidth, " ") + kolommen.map(() => "-".repeat(colWidth)).join("|") + "|");
   r.push(label("% totaal") + perc.map(pad).join("|") + "|");   r.push(label("% totaal") + perc.map(pad).join("|") + "|");
-  r.push(label("m² BVO/woning") + bvo.map(pad).join("|") + "|"); 
   r.push(label("Aantal woningen") + aantallen.map(pad).join("|") + "|");   r.push(label("Aantal woningen") + aantallen.map(pad).join("|") + "|");
-  r.push(label("Totaal BVO") + bvo_tot.map(pad).join("|") + "|");+  r.push(label("Totaal BVO") + bvo_tot.map(b => pad(b.toFixed(0))).join("|") + "|")
 +  r.push(label("m² BVO/woning") + bvo.map(b => pad(b.toFixed(0))).join("|") + "|"); 
 +  r.push(label("m² GBO/woning") + gbo.map(pad).join("|") + "|"); 
 +  r.push(label("Vormfactor") + vormfactor.map(f => pad(f.toFixed(2))).join("|") + "|"); 
 + 
 +  // GEMIDDELDES (alleen woningtypes, dus index 0 t/m 9) 
 +  const woningtypes = [...Array(10).keys()]; 
 +  const totale_bvo = woningtypes.reduce((sum, i) => sum + bvo[i] * aantallen[i], 0); 
 +  const totale_gbo = woningtypes.reduce((sum, i) => sum + parseFloat(gbo[i]) * aantallen[i], 0); 
 +  const totaal_woningen = woningtypes.reduce((sum, i) => sum + aantallen[i], 0); 
 + 
 +  const gemiddelde_bvo = totaal_woningen > 0 ? (totale_bvo / totaal_woningen).toFixed(1) : "0"; 
 +  const gemiddelde_gbo = totaal_woningen > 0 ? (totale_gbo / totaal_woningen).toFixed(1) : "0";
  
   r.push("");   r.push("");
-  r.push(`Totale aantal woningen: ${woningen}`); +  r.push(`Totale aantal woningen: ${totaal_woningen}`); 
-  r.push(`Gemiddelde BVO per woning: 110.0`);+  r.push(`Gemiddelde BVO per woning: ${gemiddelde_bvo}`); 
 +  r.push(`Gemiddelde GBO per woning: ${gemiddelde_gbo}`);
  
   return r.join("\n");   return r.join("\n");
-} 
- 
- 
-function buildVoorzieningenTable() { 
-  const voorzieningen = [ 
-    { naam: "Huisarts" }, { naam: "Fysiotherapie" }, { naam: "Tandarts" }, 
-    { naam: "Kinderopvang" }, { naam: "Basisschool" }, { naam: "Bibliotheek" }, 
-    { naam: "Buurtcentrum" }, { naam: "Sporthal" }, { naam: "Zwemmen (overdekt)" }, 
-    { naam: "Winkels dagelijks goed." } 
-  ]; 
-  let rows = ["Type | Oppervlak (m²)"]; 
- 
-  voorzieningen.forEach((v, i) => { 
-    const row = document.getElementById(`vchk_${i}`); 
-    if (row && row.checked) { 
-      const el = document.querySelector(`#voorziening_summary_tabel tr:nth-child(${rows.length}) td:last-child`); 
-      const m2 = el ? el.innerText : "-"; 
-      rows.push(`${v.naam} | ${m2}`); 
-    } 
-  }); 
- 
-  return rows.join("\n"); 
-} 
- 
-function buildPlankaartTable() { 
-  const getVal = (id) => parseFloat(document.getElementById(id)?.innerText?.replace(" m²", "") || 0); 
-  const getInput = (id) => parseFloat(document.getElementById(id)?.value || 0); 
- 
-  const ids = ["opp", "m2_groen", "m2_water", "m2_tuinen", "m2_rijbanen", "m2_trottoirs", "m2_parkeren", "m2_pleinen"]; 
-  const labels = ["Totaal bruto plangebied", "Groen", "Water", "Tuinen", "Rijbanen", "Trottoirs", "Parkeren (bovengr.)", "Pleinen"]; 
- 
-  const opp = getInput("opp"); 
-  const gsi = getInput("gsi"); 
-  const footprint = gsi * opp; 
-  const tuin = getVal("m2_tuinen"); 
-  const uitgeefbaar = Number(footprint.toFixed(0)) + Number(tuin.toFixed(0)); 
-  const verharding = getVal("m2_rijbanen") + getVal("m2_trottoirs") + getVal("m2_parkeren") + getVal("m2_pleinen"); 
- 
-  const col1 = 30; 
-  const col2 = 16; 
-  const pad = (txt, len) => txt.toString().padEnd(len); 
-  const val = (v) => v.toString().padStart(col2); 
- 
-  let rows = []; 
-  rows.push("Omschrijving".padEnd(col1) + "| Oppervlak (m²)"); 
-  rows.push("-".repeat(col1) + "|" + "-".repeat(col2)); 
- 
-  ids.forEach((id, i) => { 
-    const el = document.getElementById(id); 
-    const waarde = el?.value || el?.innerText || "-"; 
-    rows.push(pad(labels[i], col1) + "|" + val(waarde)); 
-  }); 
- 
-  rows.push("-".repeat(col1) + "|" + "-".repeat(col2)); 
-  rows.push(pad("Footprint (GSI x opp)", col1) + "|" + val(footprint.toFixed(0))); 
-  rows.push(pad("Totaal uitgeefbaar", col1) + "|" + val(uitgeefbaar.toFixed(0))); 
-  rows.push(pad("Rijbanen", col1) + "|" + val(getVal("m2_rijbanen"))); 
-  rows.push(pad("Trottoirs", col1) + "|" + val(getVal("m2_trottoirs"))); 
-  rows.push(pad("Parkeren (bovengr.)", col1) + "|" + val(getVal("m2_parkeren"))); 
-  rows.push(pad("Pleinen", col1) + "|" + val(getVal("m2_pleinen"))); 
-  rows.push("-".repeat(col1) + "|" + "-".repeat(col2)); 
-  rows.push(pad("Totaal verharding", col1) + "|" + val(verharding.toFixed(0))); 
-  rows.push(pad("Groen", col1) + "|" + val(getVal("m2_groen"))); 
-  rows.push(pad("Water", col1) + "|" + val(getVal("m2_water"))); 
- 
-  return rows.join("\n"); 
-} 
- 
- 
-function buildGrexTable() { 
-  const getVal = id => parseFloat(document.getElementById(id)?.innerText?.replace(' m²', '') || 0); 
-  const rijbanen = getVal("m2_rijbanen"); 
-  const trottoirs = getVal("m2_trottoirs"); 
-  const parkeren = getVal("m2_parkeren"); 
-  const pleinen = getVal("m2_pleinen"); 
-  const groen = getVal("m2_groen"); 
-  const water = getVal("m2_water"); 
-  const totaalopp = parseFloat(document.getElementById("opp")?.value || 0); 
-  const nazorg = rijbanen * 0.10; 
- 
-  return [ 
-    "Categorie | Omschrijving | Oppervlak (m²)", 
-    `Verwerving | Percelen te verwerven of in te brengen | ${totaalopp.toFixed(0)}`, 
-    `Grondwerk | Graven watergangen | ${water.toFixed(0)}`, 
-    `Bouwrijp maken | Bouwstraten | ${rijbanen.toFixed(0)}`, 
-    `Woonrijp maken | Rijbanen | ${rijbanen.toFixed(0)}`, 
-    `Woonrijp maken | Trottoirs | ${trottoirs.toFixed(0)}`, 
-    `Woonrijp maken | Parkeren | ${parkeren.toFixed(0)}`, 
-    `Woonrijp maken | Pleinen | ${pleinen.toFixed(0)}`, 
-    `Woonrijp maken | Groen | ${groen.toFixed(0)}`, 
-    "Woonrijp maken | Bomen en groenstructuur |", 
-    "Woonrijp maken | Verdere aankleding openbare ruimte |", 
-    `Nazorg | Herstraten bestratingen (10% rijbanen) | ${nazorg.toFixed(0)}`, 
-    "Onvoorzien | Onvoorzien (5-15%) |" 
-  ].join("\n"); 
 } }
  
Line 830: Line 754:
  
 function buildPlankaartTableTXT() { function buildPlankaartTableTXT() {
 +  const opp = parseFloat(document.getElementById("opp").value) || 0;
 +  const gsi = parseFloat(document.getElementById("gsi").value) || 0;
 +  const footprint = gsi * opp;
 +  const tuin = getVal("m2_tuinen");
 +  const uitgeefbaar = tuin + footprint;
 +
   return `Omschrijving                | Oppervlak (m²)   return `Omschrijving                | Oppervlak (m²)
 ----------------------------|---------------- ----------------------------|----------------
-Totaal bruto plangebied     | ${document.getElementById("opp").value}+Totaal bruto plangebied     | ${opp}
 ----------------------------|---------------- ----------------------------|----------------
-Tuinen                      | ${getVal("m2_tuinen")+Tuinen                      | ${tuin
-Footprint (GSI x opp)       | ${(parseFloat(document.getElementById("gsi").value) * parseFloat(document.getElementById("opp").value)).toFixed(0)}+Footprint (GSI x opp)       | ${footprint.toFixed(0)}
 ----------------------------|---------------- ----------------------------|----------------
-Totaal uitgeefbaar          | ${getVal("m2_tuinen") + (parseFloat(document.getElementById("gsi").value) * parseFloat(document.getElementById("opp").value)).toFixed(0)}+Totaal uitgeefbaar          | ${uitgeefbaar.toFixed(0)}
 Rijbanen                    | ${getVal("m2_rijbanen")} Rijbanen                    | ${getVal("m2_rijbanen")}
 Trottoirs                   | ${getVal("m2_trottoirs")} Trottoirs                   | ${getVal("m2_trottoirs")}
Line 843: Line 773:
 Pleinen                     | ${getVal("m2_pleinen")} Pleinen                     | ${getVal("m2_pleinen")}
 ----------------------------|---------------- ----------------------------|----------------
-Totaal verharding           | ${getVal("m2_rijbanen") + getVal("m2_trottoirs") + getVal("m2_parkeren") + getVal("m2_pleinen")}+Totaal verharding           | ${(getVal("m2_rijbanen") + getVal("m2_trottoirs") + getVal("m2_parkeren") + getVal("m2_pleinen")).toFixed(0)}
 Groen                       | ${getVal("m2_groen")} Groen                       | ${getVal("m2_groen")}
 Water                       | ${getVal("m2_water")}`; Water                       | ${getVal("m2_water")}`;
handleiding_nieuw/sub_spacematrix.1747644407.txt.gz · Last modified: 2025/05/19 08:46 by support