diff --git a/src/3.4_pont_thermique.js b/src/3.4_pont_thermique.js index 1d7f902..2be9c08 100644 --- a/src/3.4_pont_thermique.js +++ b/src/3.4_pont_thermique.js @@ -19,7 +19,7 @@ function tv_k(di, de, du, pc_id, enveloppe) { if (desc.match(/(.+) \/ (.+)/)) { desc_1 = desc.match(/(.+) \/ (.+)/)[1]; desc_2 = desc.match(/(.+) \/ (.+)/)[2]; - } else if (desc.match(/(.+)-(.+)/)[1]) { + } else if (desc.match(/(.+)-(.+)/)) { desc_1 = desc.match(/(.+)-(.+)/)[1]; desc_2 = desc.match(/(.+)-(.+)/)[2]; } else { @@ -27,11 +27,20 @@ function tv_k(di, de, du, pc_id, enveloppe) { return; } - de.reference_1 = mur_list.find( + let ptMur = mur_list.find( (mur) => mur.donnee_entree.description.includes(desc_1) || mur.donnee_entree.description.includes(desc_2) - ).donnee_entree.reference; + ); + if (ptMur) { + de.reference_1 = ptMur.donnee_entree.reference; + } else { + console.error( + `BUG: descriptions '${desc_1}' ou '${desc_2}' du pont thermique non reconnue dans les descriptions des murs` + ); + return; + } + let list_2; switch (type_liaison) { case 'refend / mur': @@ -49,11 +58,19 @@ function tv_k(di, de, du, pc_id, enveloppe) { break; } if (list_2) { - de.reference_2 = list_2.find( + ptMur = list_2.find( (men) => men.donnee_entree.description.includes(desc_2) || men.donnee_entree.description.includes(desc_1) - ).donnee_entree.reference; + ); + if (ptMur) { + de.reference_2 = ptMur.donnee_entree.reference; + } else { + console.error( + `BUG: descriptions '${desc_1}' ou '${desc_2}' du pont thermique non reconnue dans '${type_liaison}'` + ); + return; + } } } @@ -95,6 +112,10 @@ function tv_k(di, de, du, pc_id, enveloppe) { plancher.donnee_entree.reference === de.reference_1 || plancher.donnee_entree.reference === de.reference_2 ); + if (!plancher) { + console.error('Did not find plancher reference:', de.reference_1, de.reference_2); + return; + } const isolation_plancher = requestInput( plancher.donnee_entree, plancher.donnee_utilisateur, diff --git a/src/3_deperdition.js b/src/3_deperdition.js index 13e276a..c6fd746 100644 --- a/src/3_deperdition.js +++ b/src/3_deperdition.js @@ -71,7 +71,7 @@ export default function calc_deperdition(cg, zc, th, ej, enveloppe, logement) { const porte_list = enveloppe.porte_collection.porte || []; const bv_list = enveloppe.baie_vitree_collection.baie_vitree || []; const pt_list = enveloppe.pont_thermique_collection.pont_thermique || []; - const vt_list = logement.ventilation_collection.ventilation; + const vt_list = logement.ventilation_collection.ventilation || []; mur_list.forEach((mur) => calc_mur(mur, zc, pc, ej)); pb_list.forEach((pb) => calc_pb(pb, zc, pc, ej, pb_list)); @@ -87,14 +87,14 @@ export default function calc_deperdition(cg, zc, th, ej, enveloppe, logement) { calc_ventilation(vt, cg, th, Sdep, mur_list, ph_list, porte_list, bv_list); }); - const d_mur = mur_list.reduce((acc, mur) => acc + Umur(mur), 0); - const d_pb = pb_list.reduce((acc, pb) => acc + Upb(pb), 0); - const d_ph = ph_list.reduce((acc, ph) => acc + Uph(ph), 0); - const d_bv = bv_list.reduce((acc, bv) => acc + Ubv(bv), 0); - const d_porte = porte_list.reduce((acc, porte) => acc + Uporte(porte), 0); - const d_pt = pt_list.reduce((acc, pt) => acc + Upt(pt), 0); - const hvent = vt_list.reduce((acc, vt) => acc + vt.donnee_intermediaire.hvent, 0); - const hperm = vt_list.reduce((acc, vt) => acc + vt.donnee_intermediaire.hperm, 0); + const d_mur = mur_list.reduce((acc, mur) => acc + Umur(mur) || 0, 0); + const d_pb = pb_list.reduce((acc, pb) => acc + Upb(pb) || 0, 0); + const d_ph = ph_list.reduce((acc, ph) => acc + Uph(ph) || 0, 0); + const d_bv = bv_list.reduce((acc, bv) => acc + Ubv(bv) || 0, 0); + const d_porte = porte_list.reduce((acc, porte) => acc + Uporte(porte) || 0, 0); + const d_pt = pt_list.reduce((acc, pt) => acc + Upt(pt) || 0, 0); + const hvent = vt_list.reduce((acc, vt) => acc + vt.donnee_intermediaire.hvent || 0, 0); + const hperm = vt_list.reduce((acc, vt) => acc + vt.donnee_intermediaire.hperm || 0, 0); return { hvent, diff --git a/src/engine.js b/src/engine.js index e0119ce..39772fe 100644 --- a/src/engine.js +++ b/src/engine.js @@ -36,9 +36,15 @@ export function calcul_3cl(dpe) { if (logement.enveloppe === undefined) { console.warn('vide: logement.enveloppe'); return null; - } else if (logement.enveloppe.mur_collection === undefined) { + } else if (!logement.enveloppe.mur_collection) { console.warn('vide: logement.enveloppe.mur_collection'); return null; + } else if (!logement.enveloppe.plancher_haut_collection) { + console.warn('vide: logement.enveloppe.plancher_haut_collection'); + return null; + } else if (!logement.enveloppe.plancher_bas_collection) { + console.warn('vide: logement.enveloppe.plancher_bas_collection'); + return null; } add_references(logement.enveloppe);