@open3cl/engine 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/10_besoin_fr.spec.js +1 -0
- package/10_clim.spec.js +1 -0
- package/11_besoin_ecs.spec.js +1 -0
- package/11_ecs.spec.js +1 -0
- package/12.4_pac.spec.js +1 -0
- package/13.2_generateur_combustion.js +2 -10
- package/13.2_generateur_combustion.spec.js +3 -3
- package/13.2_generateur_combustion_ch.spec.js +3 -3
- package/14_generateur_ecs.spec.js +1 -0
- package/15_conso_aux.spec.js +3 -3
- package/2021_04_13_confort_ete.spec.js +1 -0
- package/3.1_b.js +45 -33
- package/3.1_b.spec.js +1 -0
- package/3.2.1_mur.spec.js +1 -0
- package/3.2.2_plancher_bas.spec.js +1 -0
- package/3.2.3_plancher_haut.spec.js +1 -0
- package/3.3.1.4_porte.spec.js +1 -0
- package/3.3_baie_vitree.js +32 -10
- package/3.3_baie_vitree.spec.js +1 -0
- package/3.4_pont_thermique.js +21 -13
- package/3.4_pont_thermique.spec.js +2 -1
- package/4_ventilation.spec.js +1 -0
- package/5_conso_ventilation.spec.js +1 -0
- package/6.2_surface_sud_equivalente.spec.js +1 -0
- package/9_besoin_ch.spec.js +1 -0
- package/9_chauffage.spec.js +3 -3
- package/9_conso_ch.spec.js +1 -0
- package/9_emetteur_ch.spec.js +1 -0
- package/9_generateur_ch.spec.js +1 -0
- package/README.md +442 -291
- package/conso.spec.js +1 -0
- package/engine.js +3 -1
- package/engine.spec.js +1 -0
- package/ficheTechnique.js +133 -53
- package/ficheTechnique.spec.js +46 -14
- package/formula.js +251 -0
- package/formula.spec.js +99 -0
- package/package.json +15 -15
- package/utils.js +195 -44
- package/utils.spec.js +69 -0
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.spec.js +0 -222
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +0 -345
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.spec.js +0 -87
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.spec.js +0 -260
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.spec.js +0 -272
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +0 -231
- package/features/engine/domain/ch/generateur-ch.service.spec.js +0 -849
- package/features/engine/domain/conso/froid/conso-froid.service.spec.js +0 -233
- package/features/engine/domain/ecs/installation-ecs.service.spec.js +0 -337
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.spec.js +0 -607
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.spec.js +0 -550
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.spec.js +0 -82
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.spec.js +0 -542
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +0 -430
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js +0 -411
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +0 -653
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.spec.js +0 -117
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +0 -508
package/10_besoin_fr.spec.js
CHANGED
package/10_clim.spec.js
CHANGED
package/11_besoin_ecs.spec.js
CHANGED
package/11_ecs.spec.js
CHANGED
package/12.4_pac.spec.js
CHANGED
|
@@ -7,6 +7,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
7
7
|
* Le comportement de ces utilitaires n'est pas testé ici, seulement la logique du module.
|
|
8
8
|
*/
|
|
9
9
|
vi.mock('./utils.js', () => ({
|
|
10
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
10
11
|
tv: vi.fn(),
|
|
11
12
|
requestInputID: vi.fn((de, du, field) => {
|
|
12
13
|
const enumName = `enum_${field}_id`;
|
|
@@ -4,7 +4,7 @@ import { updateGenerateurBouilleurs } from './13.2_generateur_combustion_bouille
|
|
|
4
4
|
import { updateGenerateurChaudieres } from './13.2_generateur_combustion_chaudiere.js';
|
|
5
5
|
import { updateGenerateurPacs } from './13.2_generateur_pac.js';
|
|
6
6
|
import getFicheTechnique from './ficheTechnique.js';
|
|
7
|
-
import {
|
|
7
|
+
import { evaluateFormula as evaluateTvFormula } from './formula.js';
|
|
8
8
|
|
|
9
9
|
function criterePn(Pn, matcher) {
|
|
10
10
|
let critere_list = tvColumnLines('generateur_combustion', 'critere_pn', matcher);
|
|
@@ -38,15 +38,7 @@ const F_tab = {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
function evaluateFormula(formulaOrValue, pn, E, F) {
|
|
41
|
-
|
|
42
|
-
if (!isNaN(formulaOrValue)) {
|
|
43
|
-
return Number(formulaOrValue);
|
|
44
|
-
}
|
|
45
|
-
const variables = new Map();
|
|
46
|
-
variables.set('Pn', pnVariable);
|
|
47
|
-
variables.set('E', E);
|
|
48
|
-
variables.set('F', F);
|
|
49
|
-
return evaluate(formulaOrValue, variables);
|
|
41
|
+
return evaluateTvFormula(formulaOrValue, pn, E, F);
|
|
50
42
|
}
|
|
51
43
|
|
|
52
44
|
/**
|
|
@@ -14,6 +14,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
14
14
|
const state = vi.hoisted(() => ({ bug: false }));
|
|
15
15
|
|
|
16
16
|
vi.mock('./utils.js', () => ({
|
|
17
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
17
18
|
get bug_for_bug_compat() {
|
|
18
19
|
return state.bug;
|
|
19
20
|
},
|
|
@@ -51,9 +52,8 @@ vi.mock('./ficheTechnique.js', () => ({
|
|
|
51
52
|
default: vi.fn()
|
|
52
53
|
}));
|
|
53
54
|
|
|
54
|
-
const { tv_generateur_combustion, updateGenerateurCombustion } =
|
|
55
|
-
'./13.2_generateur_combustion.js'
|
|
56
|
-
);
|
|
55
|
+
const { tv_generateur_combustion, updateGenerateurCombustion } =
|
|
56
|
+
await import('./13.2_generateur_combustion.js');
|
|
57
57
|
const { tv, tvColumnLines } = await import('./utils.js');
|
|
58
58
|
const { updateGenerateurBouilleurs } = await import('./13.2_generateur_combustion_bouilleur.js');
|
|
59
59
|
const { updateGenerateurChaudieres } = await import('./13.2_generateur_combustion_chaudiere.js');
|
|
@@ -29,6 +29,7 @@ vi.mock('./enums.js', () => ({
|
|
|
29
29
|
}));
|
|
30
30
|
|
|
31
31
|
vi.mock('./utils.js', () => ({
|
|
32
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
32
33
|
get bug_for_bug_compat() {
|
|
33
34
|
return state.bug;
|
|
34
35
|
},
|
|
@@ -37,9 +38,8 @@ vi.mock('./utils.js', () => ({
|
|
|
37
38
|
requestInputID: vi.fn((de, du, field) => de[`enum_${field}_id`])
|
|
38
39
|
}));
|
|
39
40
|
|
|
40
|
-
const { tv_temp_fonc_30_100, calc_generateur_combustion_ch } =
|
|
41
|
-
'./13.2_generateur_combustion_ch.js'
|
|
42
|
-
);
|
|
41
|
+
const { tv_temp_fonc_30_100, calc_generateur_combustion_ch } =
|
|
42
|
+
await import('./13.2_generateur_combustion_ch.js');
|
|
43
43
|
const { tv } = await import('./utils.js');
|
|
44
44
|
|
|
45
45
|
beforeEach(() => {
|
package/15_conso_aux.spec.js
CHANGED
|
@@ -25,14 +25,14 @@ vi.mock('./tv.js', () => ({
|
|
|
25
25
|
}));
|
|
26
26
|
|
|
27
27
|
vi.mock('./utils.js', () => ({
|
|
28
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
28
29
|
mois_liste: ['Janvier'],
|
|
29
30
|
Njj: { Janvier: 31 },
|
|
30
31
|
Tbase: { ca1: { h1: -9 } }
|
|
31
32
|
}));
|
|
32
33
|
|
|
33
|
-
const { conso_aux_gen, conso_aux_distribution_ch, conso_aux_distribution_ecs } =
|
|
34
|
-
'./15_conso_aux.js'
|
|
35
|
-
);
|
|
34
|
+
const { conso_aux_gen, conso_aux_distribution_ch, conso_aux_distribution_ecs } =
|
|
35
|
+
await import('./15_conso_aux.js');
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* 15.1 Consommation des auxiliaires de génération
|
package/3.1_b.js
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
1
|
import enums from './enums.js';
|
|
2
2
|
import { tv, requestInput, requestInputID, bug_for_bug_compat } from './utils.js';
|
|
3
3
|
|
|
4
|
+
const RANGES = [0.25, 0.5, 0.75, 1, 1.25, 2, 2.5, 3, 3.5, 4, 6, 8, 10, 25, 50];
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Identifiants de type d'adjacence pour lesquels le ratio aiu/aue est pris en compte.
|
|
8
|
+
*/
|
|
9
|
+
const ADJACENCE_AIU_AUE_IDS = new Set([
|
|
10
|
+
'8',
|
|
11
|
+
'9',
|
|
12
|
+
'11',
|
|
13
|
+
'12',
|
|
14
|
+
'13',
|
|
15
|
+
'14',
|
|
16
|
+
'15',
|
|
17
|
+
'16',
|
|
18
|
+
'17',
|
|
19
|
+
'18',
|
|
20
|
+
'19',
|
|
21
|
+
'21'
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
const TYPE_ADJACENCE_IDS = Object.keys(enums.type_adjacence);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Formate une borne du ratio aiu/aue au format des tables de valeurs (`0,25`, `1,00`…).
|
|
28
|
+
*
|
|
29
|
+
* `toLocaleString(undefined, { minimumFractionDigits: 2, … })` construisait un
|
|
30
|
+
* `Intl.NumberFormat` à chaque appel (~29 µs), ce qui représentait l'essentiel du
|
|
31
|
+
* temps CPU de `b()`. `toFixed(2)` produit exactement les mêmes chaînes pour toutes
|
|
32
|
+
* les valeurs de `RANGES`, en ~0,2 µs, et sans dépendre de la locale de la machine —
|
|
33
|
+
* le `.replace('.', ',')` qui suivait était d'ailleurs un no-op sur une machine en
|
|
34
|
+
* locale française et une vraie conversion ailleurs.
|
|
35
|
+
*
|
|
36
|
+
* @param borne {number}
|
|
37
|
+
* @returns {string}
|
|
38
|
+
*/
|
|
39
|
+
function formatBorneAiuAue(borne) {
|
|
40
|
+
return borne.toFixed(2).replace('.', ',');
|
|
41
|
+
}
|
|
42
|
+
|
|
4
43
|
export function findRanges(inputNumber) {
|
|
5
|
-
const ranges =
|
|
44
|
+
const ranges = RANGES;
|
|
6
45
|
const result = [];
|
|
7
46
|
|
|
8
47
|
if (inputNumber < ranges[0]) {
|
|
@@ -28,7 +67,7 @@ export function findRanges(inputNumber) {
|
|
|
28
67
|
export default function b(di, de, du, zc_id) {
|
|
29
68
|
const zc = enums.zone_climatique[zc_id].slice(0, 2);
|
|
30
69
|
|
|
31
|
-
du.enum_type_adjacence_id =
|
|
70
|
+
du.enum_type_adjacence_id = TYPE_ADJACENCE_IDS;
|
|
32
71
|
const matcher = {
|
|
33
72
|
enum_type_adjacence_id: requestInputID(de, du, 'type_adjacence')
|
|
34
73
|
};
|
|
@@ -37,11 +76,7 @@ export default function b(di, de, du, zc_id) {
|
|
|
37
76
|
matcher.zone_climatique = zc;
|
|
38
77
|
matcher.enum_cfg_isolation_lnc_id = requestInputID(de, du, 'cfg_isolation_lnc');
|
|
39
78
|
/* du.enum_cfg_isolation_lnc_id = ['6', '7', '8', '9', '10', '11'] */
|
|
40
|
-
} else if (
|
|
41
|
-
['8', '9', '11', '12', '13', '14', '15', '16', '17', '18', '19', '21'].includes(
|
|
42
|
-
de.enum_type_adjacence_id.toString()
|
|
43
|
-
)
|
|
44
|
-
) {
|
|
79
|
+
} else if (ADJACENCE_AIU_AUE_IDS.has(de.enum_type_adjacence_id.toString())) {
|
|
45
80
|
if (de.surface_aue === 0) {
|
|
46
81
|
// cf page 10
|
|
47
82
|
// NOTE: bizarre de regarder aue pour un local chauffé non accessible
|
|
@@ -96,36 +131,13 @@ export default function b(di, de, du, zc_id) {
|
|
|
96
131
|
// Si le rapport des surfaces est égale à la borne inférieure, utilisation de la borne supérieure
|
|
97
132
|
// et prise en compte de l'égalité
|
|
98
133
|
if (ranges[0] === de.surface_aiu / de.surface_aue) {
|
|
99
|
-
matcher.aiu_aue_max =
|
|
100
|
-
'≤ ' +
|
|
101
|
-
ranges[0]
|
|
102
|
-
.toLocaleString(undefined, {
|
|
103
|
-
minimumFractionDigits: 2,
|
|
104
|
-
maximumFractionDigits: 2,
|
|
105
|
-
useGrouping: false
|
|
106
|
-
})
|
|
107
|
-
.replace('.', ',');
|
|
134
|
+
matcher.aiu_aue_max = '≤ ' + formatBorneAiuAue(ranges[0]);
|
|
108
135
|
} else {
|
|
109
|
-
matcher.aiu_aue_min =
|
|
110
|
-
ranges[0]
|
|
111
|
-
.toLocaleString(undefined, {
|
|
112
|
-
minimumFractionDigits: 2,
|
|
113
|
-
maximumFractionDigits: 2,
|
|
114
|
-
useGrouping: false
|
|
115
|
-
})
|
|
116
|
-
.replace('.', ',') + ' <';
|
|
136
|
+
matcher.aiu_aue_min = formatBorneAiuAue(ranges[0]) + ' <';
|
|
117
137
|
}
|
|
118
138
|
}
|
|
119
139
|
if (ranges[1]) {
|
|
120
|
-
matcher.aiu_aue_max =
|
|
121
|
-
'≤ ' +
|
|
122
|
-
ranges[1]
|
|
123
|
-
.toLocaleString(undefined, {
|
|
124
|
-
minimumFractionDigits: 2,
|
|
125
|
-
maximumFractionDigits: 2,
|
|
126
|
-
useGrouping: false
|
|
127
|
-
})
|
|
128
|
-
.replace('.', ',');
|
|
140
|
+
matcher.aiu_aue_max = '≤ ' + formatBorneAiuAue(ranges[1]);
|
|
129
141
|
}
|
|
130
142
|
}
|
|
131
143
|
}
|
package/3.1_b.spec.js
CHANGED
|
@@ -14,6 +14,7 @@ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
14
14
|
const state = vi.hoisted(() => ({ bug: false }));
|
|
15
15
|
|
|
16
16
|
vi.mock('./utils.js', () => ({
|
|
17
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
17
18
|
tv: vi.fn(),
|
|
18
19
|
requestInputID: (de, du, field) => {
|
|
19
20
|
const enumName = `enum_${field}_id`;
|
package/3.2.1_mur.spec.js
CHANGED
|
@@ -30,6 +30,7 @@ vi.mock('./3.1_b.js', () => ({
|
|
|
30
30
|
}));
|
|
31
31
|
|
|
32
32
|
vi.mock('./utils.js', () => ({
|
|
33
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
33
34
|
tv: vi.fn(),
|
|
34
35
|
requestInput: (de, du, field) => de[field],
|
|
35
36
|
getKeyByValue: (object, value) => Object.keys(object).find((key) => object[key] === value),
|
|
@@ -23,6 +23,7 @@ vi.mock('./3.1_b.js', () => ({
|
|
|
23
23
|
}));
|
|
24
24
|
|
|
25
25
|
vi.mock('./utils.js', () => ({
|
|
26
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
26
27
|
tv: vi.fn(),
|
|
27
28
|
requestInput: (de, du, field) => de[field],
|
|
28
29
|
getKeyByValue: (object, value) => Object.keys(object).find((key) => object[key] === value),
|
package/3.3.1.4_porte.spec.js
CHANGED
package/3.3_baie_vitree.js
CHANGED
|
@@ -23,6 +23,37 @@ function tv_ug(di, de, du) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Valeurs de Ug tabulées dans `uw`, indexées par (type de baie, matériau de menuiserie).
|
|
28
|
+
*
|
|
29
|
+
* Le scan des 723 lignes de `tvs.uw` — avec un `split('|')` par ligne — était refait
|
|
30
|
+
* pour chaque baie vitrée de chaque DPE, alors que la table est statique.
|
|
31
|
+
*
|
|
32
|
+
* Le tableau est partagé et `getRange()` le trie sur place : le tri par défaut de
|
|
33
|
+
* `Array#sort` étant déterministe, la première mise en cache le laisse trié et les
|
|
34
|
+
* appels suivants produisent exactement le même résultat qu'avec un tableau reconstruit.
|
|
35
|
+
*/
|
|
36
|
+
const uwUgValuesCache = new Map();
|
|
37
|
+
|
|
38
|
+
function uwUgValues(enum_type_baie_id, enum_type_materiaux_menuiserie_id) {
|
|
39
|
+
const cacheKey = `${enum_type_baie_id}${enum_type_materiaux_menuiserie_id}`;
|
|
40
|
+
let values = uwUgValuesCache.get(cacheKey);
|
|
41
|
+
if (values === undefined) {
|
|
42
|
+
values = tvs.uw
|
|
43
|
+
.filter((row) => {
|
|
44
|
+
return (
|
|
45
|
+
row.enum_type_baie_id.split('|').includes(enum_type_baie_id) &&
|
|
46
|
+
row.enum_type_materiaux_menuiserie_id
|
|
47
|
+
.split('|')
|
|
48
|
+
.includes(enum_type_materiaux_menuiserie_id)
|
|
49
|
+
);
|
|
50
|
+
})
|
|
51
|
+
.map((row) => parseFloat(row.ug));
|
|
52
|
+
uwUgValuesCache.set(cacheKey, values);
|
|
53
|
+
}
|
|
54
|
+
return values;
|
|
55
|
+
}
|
|
56
|
+
|
|
26
57
|
function tv_uw(di, de) {
|
|
27
58
|
const enum_type_baie_id = de.enum_type_baie_id;
|
|
28
59
|
const matcher = { enum_type_baie_id };
|
|
@@ -46,16 +77,7 @@ function tv_uw(di, de) {
|
|
|
46
77
|
matcher.enum_type_materiaux_menuiserie_id = enum_type_materiaux_menuiserie_id;
|
|
47
78
|
|
|
48
79
|
// Récupération de toutes les valeurs de Ug présentes dans les tables Uw pour le type de baie et matériaux de la baie vitrée
|
|
49
|
-
const ugValues =
|
|
50
|
-
.filter((row) => {
|
|
51
|
-
return (
|
|
52
|
-
row.enum_type_baie_id.split('|').includes(enum_type_baie_id) &&
|
|
53
|
-
row.enum_type_materiaux_menuiserie_id
|
|
54
|
-
.split('|')
|
|
55
|
-
.includes(enum_type_materiaux_menuiserie_id)
|
|
56
|
-
);
|
|
57
|
-
})
|
|
58
|
-
.map((row) => parseFloat(row.ug));
|
|
80
|
+
const ugValues = uwUgValues(enum_type_baie_id, enum_type_materiaux_menuiserie_id);
|
|
59
81
|
|
|
60
82
|
/**
|
|
61
83
|
* 3.3.2 Coefficients Uw des fenêtres / portes-fenêtres
|
package/3.3_baie_vitree.spec.js
CHANGED
package/3.4_pont_thermique.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import enums from './enums.js';
|
|
2
2
|
import { isNil } from 'lodash-es';
|
|
3
|
-
import { tv, requestInput,
|
|
3
|
+
import { tv, requestInput, cleanReference, bug_for_bug_compat } from './utils.js';
|
|
4
4
|
|
|
5
5
|
function defaultValue(type_liaison, pt_di, de) {
|
|
6
6
|
if (pt_di.k === 0) {
|
|
@@ -115,10 +115,20 @@ function tv_k(pt_di, di, de, du, pc_id, logement) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Références du pont thermique nettoyées une seule fois : elles sont confrontées à toutes les
|
|
120
|
+
* parois de plusieurs listes ci-dessous, et `compareReferences` les renettoyait à chaque
|
|
121
|
+
* comparaison. Les affectations de `de.reference_1` / `de.reference_2` ont toutes eu lieu
|
|
122
|
+
* au-dessus, dans le bloc de récupération par description.
|
|
123
|
+
*/
|
|
124
|
+
const cleaned_reference_1 = cleanReference(de.reference_1);
|
|
125
|
+
const cleaned_reference_2 = cleanReference(de.reference_2);
|
|
126
|
+
|
|
118
127
|
let mur = mur_list.find((mur, murIndex) => {
|
|
128
|
+
const cleaned_mur_reference = cleanReference(mur.donnee_entree.reference);
|
|
119
129
|
if (
|
|
120
|
-
|
|
121
|
-
|
|
130
|
+
cleaned_mur_reference === cleaned_reference_1 ||
|
|
131
|
+
cleaned_mur_reference === cleaned_reference_2
|
|
122
132
|
) {
|
|
123
133
|
return true;
|
|
124
134
|
}
|
|
@@ -190,11 +200,10 @@ function tv_k(pt_di, di, de, du, pc_id, logement) {
|
|
|
190
200
|
case 'plancher bas / mur':
|
|
191
201
|
case 'plancher haut lourd / mur': {
|
|
192
202
|
const plancher_list = ph_list.concat(pb_list);
|
|
193
|
-
const plancher = plancher_list.find(
|
|
194
|
-
(plancher)
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
);
|
|
203
|
+
const plancher = plancher_list.find((plancher) => {
|
|
204
|
+
const cleaned = cleanReference(plancher.donnee_entree.reference);
|
|
205
|
+
return cleaned === cleaned_reference_1 || cleaned === cleaned_reference_2;
|
|
206
|
+
});
|
|
198
207
|
if (!plancher) {
|
|
199
208
|
di.k = defaultValue(type_liaison, pt_di, de);
|
|
200
209
|
console.error(
|
|
@@ -331,11 +340,10 @@ function tv_k(pt_di, di, de, du, pc_id, logement) {
|
|
|
331
340
|
}
|
|
332
341
|
|
|
333
342
|
const menuiserie_list = bv_list.concat(porte_list);
|
|
334
|
-
const menuiserie = menuiserie_list.find(
|
|
335
|
-
(men)
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
);
|
|
343
|
+
const menuiserie = menuiserie_list.find((men) => {
|
|
344
|
+
const cleaned = cleanReference(men.donnee_entree.reference);
|
|
345
|
+
return cleaned === cleaned_reference_1 || cleaned === cleaned_reference_2;
|
|
346
|
+
});
|
|
339
347
|
if (!menuiserie) {
|
|
340
348
|
di.k = defaultValue(type_liaison, pt_di, de);
|
|
341
349
|
console.error(
|
|
@@ -27,9 +27,10 @@ vi.mock('lodash-es', () => ({
|
|
|
27
27
|
const state = vi.hoisted(() => ({ bug: false }));
|
|
28
28
|
|
|
29
29
|
vi.mock('./utils.js', () => ({
|
|
30
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
30
31
|
tv: vi.fn(),
|
|
31
32
|
requestInput: (de, du, field) => de[field],
|
|
32
|
-
|
|
33
|
+
cleanReference: (reference) => reference,
|
|
33
34
|
get bug_for_bug_compat() {
|
|
34
35
|
return state.bug;
|
|
35
36
|
}
|
package/4_ventilation.spec.js
CHANGED
|
@@ -8,6 +8,7 @@ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
8
8
|
* - `calc_pvent` (5_conso_ventilation.js) : espion, la conso de ventilation est testée ailleurs.
|
|
9
9
|
*/
|
|
10
10
|
vi.mock('./utils.js', () => ({
|
|
11
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
11
12
|
tv: vi.fn(),
|
|
12
13
|
requestInput: (de, du, field) => de[field],
|
|
13
14
|
requestInputID: (de, du, field) => de[`enum_${field}_id`],
|
|
@@ -5,6 +5,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
5
5
|
* d'entrée `de` pour le champ demandé. Cela isole `calc_pvent` de la logique de `utils`.
|
|
6
6
|
*/
|
|
7
7
|
vi.mock('./utils.js', () => ({
|
|
8
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
8
9
|
requestInput: (de, du, field) => de[field]
|
|
9
10
|
}));
|
|
10
11
|
|
package/9_besoin_ch.spec.js
CHANGED
package/9_chauffage.spec.js
CHANGED
|
@@ -15,6 +15,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
15
15
|
* hybride) et répartition des auxiliaires.
|
|
16
16
|
*/
|
|
17
17
|
vi.mock('./utils.js', () => ({
|
|
18
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
18
19
|
requestInput: vi.fn(),
|
|
19
20
|
tv: vi.fn(),
|
|
20
21
|
tvColumnIDs: vi.fn(),
|
|
@@ -52,9 +53,8 @@ vi.mock('./enums.js', () => ({
|
|
|
52
53
|
const { default: calc_chauffage, tauxChargeForGenerator } = await import('./9_chauffage.js');
|
|
53
54
|
const { requestInput, tv, tvColumnIDs } = await import('./utils.js');
|
|
54
55
|
const { calc_emetteur_ch } = await import('./9_emetteur_ch.js');
|
|
55
|
-
const { calc_generateur_ch, checkForGeneratorType, hasConsoForAuxDistribution } =
|
|
56
|
-
'./9_generateur_ch.js'
|
|
57
|
-
);
|
|
56
|
+
const { calc_generateur_ch, checkForGeneratorType, hasConsoForAuxDistribution } =
|
|
57
|
+
await import('./9_generateur_ch.js');
|
|
58
58
|
const { tv_generateur_combustion } = await import('./13.2_generateur_combustion.js');
|
|
59
59
|
const { tv_temp_fonc_30_100 } = await import('./13.2_generateur_combustion_ch.js');
|
|
60
60
|
|
package/9_conso_ch.spec.js
CHANGED
|
@@ -13,6 +13,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
|
13
13
|
* propre au module (choix des coefficients, prorata de surface, base+appoint).
|
|
14
14
|
*/
|
|
15
15
|
vi.mock('./utils.js', () => ({
|
|
16
|
+
set_bug_for_bug_compat: vi.fn(),
|
|
16
17
|
mois_liste: ['Janvier', 'Février'],
|
|
17
18
|
requestInputID: vi.fn()
|
|
18
19
|
}));
|
package/9_emetteur_ch.spec.js
CHANGED