Skip to content

Commit

Permalink
Merge pull request #42 from IGNF/texte-synthese
Browse files Browse the repository at this point in the history
feat(shared-thematic) : ajout d'un texte quand aucun élément intersecté dans une ou plusieurs thématique - ajout d'une ébauche de synthèse
  • Loading branch information
cboucheIGN authored Dec 16, 2024
2 parents 93eb9db + 423de47 commit 9dcf237
Show file tree
Hide file tree
Showing 9 changed files with 103 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export const REGLEMENTATION_LIST = [
thematicName: 'Biodiversité',
layerName: 'Natura 2000 Habitats',
title: 'Sites Natura 2000 au titre de la Directive Habitats',
description: '<p>Espace désigné à l\'échelle européenne pour la rareté ou la fragilité des habitats et des espèces animales et végétales quil abrite.</p>',
description: '<p>Espace désigné à l\'échelle européenne pour la rareté ou la fragilité des habitats et des espèces animales et végétales qu\'il abrite.</p>',
impactReglementaire: '<p>Les créations de voies forestières, de places de dépôt de bois et les premiers boisements sont susceptibles d\'être soumis à une évaluation des incidences.</p><p>Elle doit également être réalisée pour tous autres travaux (notamment les coupes), s\'ils sont soumis à une autorisation administrative.</p>',
impactProcedure: '<p>L\'évaluation des incidences a pour but de déterminer si le projet peut avoir un impact significatif sur les habitats, les espèces végétales et les espèces animales ayant justifié la désignation du site Natura 2000. </p>',
referenceUrl: 'https://www.natura2000.fr/',
Expand All @@ -16,7 +16,7 @@ export const REGLEMENTATION_LIST = [
layerName: 'Natura 2000 Oiseaux',
title: 'Sites Natura 2000 au titre de la Directive Oiseaux',
description: '<p>Espace désigné à l\'échelle européenne pour son intérêt dans la reproduction, de migration et d\'hivernage d\'espèces d\'oiseaux.</p>',
impactReglementaire: '<p>Les créations de voies forestières, de places de dépôt de bois et les premiers boisements dune surface supérieure à 1 ha, doivent faire l\'objet d\'une une évaluation des incidences.</p><p> Elle doit également être réalisée pour tous autres travaux (notamment les coupes), s\'ils sont soumis à une autorisation administrative.</p>',
impactReglementaire: '<p>Les créations de voies forestières, de places de dépôt de bois et les premiers boisements d\'une surface supérieure à 1 ha, doivent faire l\'objet d\'une une évaluation des incidences.</p><p> Elle doit également être réalisée pour tous autres travaux (notamment les coupes), s\'ils sont soumis à une autorisation administrative.</p>',
impactProcedure: '<p>L\'évaluation des incidences a pour but de déterminer si le projet peut avoir un impact significatif sur les habitats, les espèces végétales et les espèces animales ayant justifié la désignation du site Natura 2000. </p>',
referenceUrl: 'https://www.natura2000.fr/',
contact: 'Direction départementale des territoires'
Expand Down Expand Up @@ -65,7 +65,7 @@ export const REGLEMENTATION_LIST = [
thematicName: 'Biodiversité',
layerName: 'Biotopes d\'espèces protégées',
title: 'Arrêtés de protection de biotope',
description: '<p>Les arrêtés de protection de biotope visent à protéger les habitats nécessaires à l\'alimentation, à la reproduction, au repos ou à la survie d\'espèces protégées. Il concernent souvent des milieux très remarques, sur des surfaces limitées.</p>',
description: '<p>Les arrêtés de protection de biotope visent à protéger les habitats nécessaires à l\'alimentation, à la reproduction, au repos ou à la survie d\'espèces protégées. Il concernent souvent des milieux très remarqués, sur des surfaces limitées.</p>',
impactReglementaire: '<p>Une règlementation spécifique à chaque espace est applicable.</p>',
impactProcedure: '<p>Les activités forestières peuvent être règlementées. La présence probable d\'espèces protégées nécessite une grande prudence avant tous travaux ou exploitation.</p>',
referenceUrl: '',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
@if(noFeatureAtAll) {

<p>
Pour le périmètre saisi, aucun zonage à caractère environnemental ou patrimonial
n'a été identifié parmi ceux intégrés à l'outil FOREG :
</p>
<ul>
<li>les aires protégées en faveur de la protection de l'environnement et de la préservation de la biodiversité</li>
<li>les sites et les abords des monuments historiques inscrits ou classés</li>
</ul>
<p>
La version actuelle de FOREG ne permet pas de déterminer si le périmètre saisi est concerné par d'autres
réglementations.
</p>

} @else {

<h3 class="fr-h6">Conseils pour instruire vos travaux</h3>

<ul>
Expand All @@ -6,3 +23,42 @@ <h3 class="fr-h6">Conseils pour instruire vos travaux</h3>
un ordre sera à respecter pour éviter les allers-retours.
</li>
</ul>

@for (thematicTab of thematicTabs; track $index; let first = $first) {

@if (!first) {
<h3 class="fr-h6">{{thematicTab.label}}</h3>
@if (thematicTab.hasFeature) {
<p>Le périmètre saisi est concerné par les zones suivantes :</p>
<ul>
@for (layer of thematicTab.layers; track $index) {
@if (layer.features.length) {
<li>{{layer.title}}</li>
}
}
</ul>
}
@else {
@if (thematicTab.name === 'biodiversite') {
<p>
Pour le périmètre saisi, aucun zonage à caractère environnemental
n'a été identifié parmi ceux intégrés à l'outil FOREG.
</p>
<p>
La version actuelle de FOREG ne permet pas de déterminer si le périmètre saisi
est concerné par d'autres réglementations.
</p>
} @else {
<p>
Pour le périmètre saisi, aucun zonage à caractère patrimonial n'a été identifié
parmi ceux intégrés à l'outil FOREG.
</p>
<p>
La version actuelle de FOREG ne permet pas de déterminer si le périmètre saisi
est concerné par d'autres réglementations.
</p>
}
}
}
}
}
16 changes: 14 additions & 2 deletions src/app/shared-thematic/components/synthese/synthese.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
import { Component } from '@angular/core';
import { Component, Input, OnInit } from '@angular/core';

@Component({
selector: 'app-synthese',
templateUrl: './synthese.component.html',
styleUrl: './synthese.component.css'
})
export class SyntheseComponent {
export class SyntheseComponent implements OnInit {

@Input() features!: any[];

@Input() thematicTabs!: any[];

noFeatureAtAll: boolean = false;

constructor() { }

ngOnInit(): void {
this.noFeatureAtAll = this.thematicTabs && !this.thematicTabs[1].hasFeature && !this.thematicTabs[2].hasFeature;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@if (thematic.active) {
<div>
@if (first) {
<app-synthese></app-synthese>
<app-synthese [features]="responseFeatures"></app-synthese>
} @else {
<app-thematic-view [thematic]="thematic"></app-thematic-view>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<dsfr-tab [tabId]="thematicTab.name" [label]="thematicTab.label">

@if (first) {
<app-synthese></app-synthese>
<app-synthese [features]="responseFeatures" [thematicTabs]="thematicTabs"></app-synthese>
} @else {
<app-thematic-view [thematic]="thematicTab"></app-thematic-view>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ export class ThematicTabsComponent implements OnInit {
private updateFiche() {
this.thematicTabs = this.thematicTabs.map((fiche) => {
fiche.layers = fiche.layers.map((layer: LayerFiche) => this.updateFicheLayer(layer));
fiche.setHasFeature();
return fiche;
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

<h3 class="fr-h6">{{ thematic.title }}</h3>

@if(!thematic.hasFeature) {
<p>Pour le périmètre saisi, aucun élément n'a été identifié parmi ceux intégrés à l'outil FOREG pour cette thématique.</p>
<p>La version actuelle de FOREG ne permet pas de déterminer si le périmètre saisi est concerné par d'autres réglementations sur cette thématique.</p>
}

@for (layer of thematic.layers; track layer) {

<app-layer-fiche-view [layer]="layer" [displaySituationMap]="layer.flatview"></app-layer-fiche-view>
Expand Down
15 changes: 15 additions & 0 deletions src/app/shared-thematic/models/thematic.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ export class Thematic implements Serializable {

layers: LayerFiche[] = [];

hasFeature : boolean = false;

// uniquement a l'execution du front (permet de suivre la sélection par l'utilisateur)
active: boolean = true;

Expand Down Expand Up @@ -42,4 +44,17 @@ export class Thematic implements Serializable {
};
}

setHasFeature() {
let res = false;

for(let i = 0; i < this.layers.length; i++) {
if(this.layers[i].features.length) {
res = true;
break;
}
}

this.hasFeature = res;
}

}
9 changes: 7 additions & 2 deletions src/app/shared-thematic/models/wfs-request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@ import { Serializable } from "../../core/models/serializable.model";
export class WfsRequest implements Serializable {

service: string = 'WFS';

version: string = '2.0.0';

request: string = 'GetFeature';

srsName: string = 'CRS:84';

outputFormat: string = 'application/json';

maxFeatures: number = 50;

typeName: string = '';

cqlFilters: string[] = [];

deserialise(input: any) {
Expand All @@ -25,7 +32,6 @@ export class WfsRequest implements Serializable {
return this;
}


serialise(): any {
const filter = this.cqlFilters.join(' AND ');
return {
Expand All @@ -40,5 +46,4 @@ export class WfsRequest implements Serializable {
};
}


}

0 comments on commit 9dcf237

Please sign in to comment.