Controle recursif de l'encombrement lors de deplacement de contenants
This commit is contained in:
parent
543f6c2658
commit
a5311bf15e
@ -722,6 +722,25 @@ export class RdDActor extends Actor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getRecursiveEnc( objet ) {
|
||||||
|
let sumEnc = 0;
|
||||||
|
if ( objet.type == 'conteneur') {
|
||||||
|
for (let id of objet.data.data.contenu) {
|
||||||
|
let subobjet = this.items.find(objet => (id == objet._id));
|
||||||
|
if ( subobjet.type == 'conteneur') {
|
||||||
|
sumEnc += this.getRecursiveEnc( subobjet );
|
||||||
|
} else {
|
||||||
|
sumEnc += Number(subobjet.data.data.encombrement) * Number(subobjet.data.data.quantite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sumEnc += Number(objet.data.data.encombrement)
|
||||||
|
} else {
|
||||||
|
sumEnc += Number(objet.data.data.encombrement) * Number(objet.data.data.quantite);
|
||||||
|
}
|
||||||
|
return sumEnc;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** Teste si le conteneur de destination a suffisament de capacité
|
/** Teste si le conteneur de destination a suffisament de capacité
|
||||||
* pour recevoir le nouvel objet
|
* pour recevoir le nouvel objet
|
||||||
@ -731,14 +750,11 @@ export class RdDActor extends Actor {
|
|||||||
let conteneur = this.items.find(conteneur => conteneurId == conteneur._id); // recup conteneur
|
let conteneur = this.items.find(conteneur => conteneurId == conteneur._id); // recup conteneur
|
||||||
//console.log("Conteneur trouvé : ", conteneur);
|
//console.log("Conteneur trouvé : ", conteneur);
|
||||||
if (conteneur && conteneur.type == "conteneur") {
|
if (conteneur && conteneur.type == "conteneur") {
|
||||||
let currentEnc = 0; // Calculer le total actuel des contenus
|
let currentEnc = this.getRecursiveEnc( conteneur ); // Calculer le total actuel des contenus
|
||||||
for (let id of conteneur.data.data.contenu) {
|
let nouvelObjet = this.items.find(objet => (itemId == objet._id)); // On chope l'objet
|
||||||
let objet = this.items.find(objet => (id == objet._id));
|
let newEnc = (nouvelObjet) ? this.getRecursiveEnc( nouvelObjet ) : 0; // Calculer le total actuel du nouvel objet
|
||||||
currentEnc += (objet) ? objet.data.data.encombrement : 0;
|
//console.log( currentEnc, newEnc, conteneur.data.data.capacite, conteneur.name);
|
||||||
}
|
if (nouvelObjet && ( (currentEnc + newEnc) > Number(conteneur.data.data.capacite)) ) {
|
||||||
// Et gérer le nouvel objet
|
|
||||||
let nouvelObjet = this.items.find(objet => (itemId == objet._id));
|
|
||||||
if (nouvelObjet && currentEnc + nouvelObjet.data.data.encombrement > Number(conteneur.data.data.capacite)) {
|
|
||||||
ui.notifications.warn("Capacité d'encombrement insuffisante dans le conteneur !");
|
ui.notifications.warn("Capacité d'encombrement insuffisante dans le conteneur !");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user