Draft: Fix calcul encTotal #473
@ -1143,6 +1143,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
computeEncombrement() {
|
||||
this.encTotal = this.filterItemsData(it => it.data.encombrement != undefined)
|
||||
.filter(it => !it.estContenu)
|
||||
.map(it => it.data.encTotal)
|
||||
.reduce(Misc.sum(), 0);
|
||||
return this.encTotal;
|
||||
|
@ -94,7 +94,7 @@ export class RdDItem extends Item {
|
||||
case 'herbe':
|
||||
return encBrin;
|
||||
}
|
||||
return itemData.data.encombrement
|
||||
return itemData.data.encombrement ?? 0;
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
|
@ -339,25 +339,32 @@ export class RdDUtility {
|
||||
// Attribution des objets aux conteneurs
|
||||
for (let conteneur of conteneurs) {
|
||||
conteneur.subItems = [];
|
||||
conteneur.data.encTotal = conteneur.data.encombrement;
|
||||
//conteneur.data.encTotal = ; Deja calculé
|
||||
if (conteneur.data.contenu) {
|
||||
for (let id of conteneur.data.contenu) {
|
||||
for (let id of conteneur.data.contenu ?? []) {
|
||||
let objet = objets.find(objet => (id == objet._id));
|
||||
if (objet) {
|
||||
if (!objet.data.encombrement)
|
||||
objet.data.encombrement = 0; // Auto-fix
|
||||
objet.estContenu = true; // Permet de filtrer ce qifui est porté dans le template
|
||||
objet.estContenu = true; // Permet de filtrer ce qui est porté dans le template
|
||||
objetVersConteneur[id] = conteneur._id;
|
||||
conteneur.data.encTotal += Number(objet.data.encombrement) * Number(((objet.data.quantite) ? objet.data.quantite : 1));
|
||||
conteneur.subItems.push(objet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
RdDUtility.calculEncObjets(objets);
|
||||
return objetVersConteneur;
|
||||
}
|
||||
|
||||
static calculEncObjets(objets) {
|
||||
for (let objet of objets) {
|
||||
objet.data.encTotal = RdDUtility.calculEnc(objet, objets);
|
||||
}
|
||||
}
|
||||
|
||||
static calculEnc(objet, objets) {
|
||||
const contenu = objet.data.contenu ?? [];
|
||||
return contenu.map(id => objets.find(objet => (id == objet._id)))
|
||||
.map(inside => RdDUtility.calculEnc(inside, objets))
|
||||
.reduce(Misc.sum(), Number(objet.data.encombrement ?? 0) * Number(objet.data.quantite ?? 1));
|
||||
}
|
||||
|
||||
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
||||
static conteneursRacine(conteneurs) {
|
||||
return conteneurs.filter((conteneur, index, arr) => !conteneur.estContenu);
|
||||
|
Loading…
Reference in New Issue
Block a user