Skip to content

Commit 6ad3d1a

Browse files
committed
bug affichage declarations
1 parent 52e65e3 commit 6ad3d1a

1 file changed

Lines changed: 26 additions & 14 deletions

File tree

frontend/src/modules/declaration/map/map_declaration.vue

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,10 @@ export default {
496496
);
497497
// ########## Cette area est déja selectionnée, on cherche donc à la retirer #################
498498
if (index > -1) {
499-
this.unselect_area(feature.properties); // Retire la zone de la déclaration
499+
// On utilise l'entrée déjà enregistrée dans areas_localisation (qui contient id_parent)
500+
// plutôt que feature.properties (issu du geojson brut, sans id_parent) pour que la
501+
// cascade de nettoyage des parents (commune, section, forêt) fonctionne correctement.
502+
this.unselect_area(this.declaration_data.areas_localisation[index]); // Retire la zone de la déclaration
500503
} else {
501504
// ######### Cette area n'est pas déja selectionnée, on cherche donc à l'ajouter #############
502505
this.select_area(feature.properties);
@@ -701,25 +704,34 @@ export default {
701704
if (
702705
!this.declaration_data.areas_localisation.some((area) => area.id_parent === this_parent)
703706
) {
707+
// Récupère l'id de la commune parente de la section avant de retirer la section
708+
const section_entry = this.declaration_data.areas_localisation.find(
709+
(area) => area.id_area === this_parent
710+
);
711+
const id_commune_parente = section_entry ? section_entry.id_parent : null;
712+
704713
this.declaration_data.areas_foret_sections =
705714
this.declaration_data.areas_foret_sections.filter((id) => id !== this_parent);
706715
707716
this.declaration_data.areas_localisation =
708717
this.declaration_data.areas_localisation.filter((area) => area.id_area !== this_parent);
709-
// si l'actual_commune n'est dans aucun id_parent des elements de areas_localisation, on le retire
710-
// Supprime de areas_localisation tous les éléments dont id_parent n'existe pas dans areas_foret_communes
711-
this.declaration_data.areas_localisation =
712-
this.declaration_data.areas_localisation.filter((area) => {
713-
return (
714-
area.id_parent == null ||
715-
this.declaration_data.areas_foret_communes.includes(area.id_parent)
718+
719+
// si la commune n'est dans aucun id_parent des elements restants de areas_localisation, on la retire
720+
if (
721+
id_commune_parente !== null &&
722+
!this.declaration_data.areas_localisation.some(
723+
(area) => area.id_parent === id_commune_parente
724+
)
725+
) {
726+
this.declaration_data.areas_localisation =
727+
this.declaration_data.areas_localisation.filter(
728+
(area) => area.id_area !== id_commune_parente
716729
);
717-
});
718-
// Met à jour areas_foret_communes pour ne garder que celles qui sont encore référencées comme parent
719-
this.declaration_data.areas_foret_communes =
720-
this.declaration_data.areas_foret_communes.filter((commune) =>
721-
this.declaration_data.areas_localisation.some((area) => area.id_parent === commune)
722-
);
730+
this.declaration_data.areas_foret_communes =
731+
this.declaration_data.areas_foret_communes.filter(
732+
(id) => id !== id_commune_parente
733+
);
734+
}
723735
}
724736
} else if (this.declaration_data.b_document == true) {
725737
// ################## CAS DES FORET DGD ##############################

0 commit comments

Comments
 (0)