Fix: transfert de contenants

Le transfert de contenants faisait une copie et perdait les rangements
à cause de l'utilisation de _id
This commit is contained in:
Vincent Vandemeulebrouck 2022-04-23 00:26:56 +02:00
parent 1fdfa6a834
commit 806d44522d

View File

@ -1251,17 +1251,12 @@ export class RdDActor extends Actor {
itemsList.push({ id: itemId, conteneurId: undefined }); // Init list itemsList.push({ id: itemId, conteneurId: undefined }); // Init list
sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list
let itemMap = {};
const itemsDataToCreate = itemsList.map(it => sourceActor.getObjet(it.id)) const itemsDataToCreate = itemsList.map(it => sourceActor.getObjet(it.id))
.map(it => duplicate(Misc.data(it))) .map(it => duplicate(Misc.data(it)))
.map(it => { it.data.contenu = []; return it; }); .map(it => { it.data.contenu = []; return it; });
let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate); let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate);
for (let i = 0; i < itemsList.length; i++) {
const srcItem = itemsList[i]; let itemMap = this._buildMapOldNewId(itemsList, newItems);
const newItem = newItems[i];
console.log('New object', newItem, srcItem);
itemMap[srcItem.id] = newItem._id; // Pour garder le lien ancien / nouveau
}
for (let item of itemsList) { // Second boucle pour traiter la remise en conteneurs for (let item of itemsList) { // Second boucle pour traiter la remise en conteneurs
// gestion conteneur/contenu // gestion conteneur/contenu
@ -1282,6 +1277,14 @@ export class RdDActor extends Actor {
} }
} }
_buildMapOldNewId(itemsList, newItems) {
let itemMap = {};
for (let i = 0; i < itemsList.length; i++) {
itemMap[itemsList[i].id] = newItems[i].id; // Pour garder le lien ancien / nouveau
}
return itemMap;
}
async regrouperEquipementsSimilaires(item, dest) { async regrouperEquipementsSimilaires(item, dest) {
await dest.quantiteIncDec(Misc.templateData(item).quantite); await dest.quantiteIncDec(Misc.templateData(item).quantite);
await item.delete(); await item.delete();