From 1a713410491a810f0b54b663dcbe9aee4c657f33 Mon Sep 17 00:00:00 2001 From: Hugo <hnouts.dev@gmail.com> Date: Fri, 9 Jul 2021 15:41:02 +0200 Subject: [PATCH 1/6] css fixes -> map / list switch & footer nav --- .../structure-detail-print.component.scss | 2 +- .../orientation-form.component.html | 60 +++++++++++++------ .../orientation-form.component.scss | 38 ++++++++++++ .../orientation-form.component.ts | 7 ++- .../structure-details.component.scss | 2 +- 5 files changed, 89 insertions(+), 20 deletions(-) diff --git a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss index 67ce48453..5edae1720 100644 --- a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss +++ b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss @@ -21,7 +21,7 @@ a { padding: 10px 24px; @media #{$tablet} { width: calc(100% - 2 * 24px); - position: fixed; + position: inherit; height: 100%; .printButton { display: none !important; diff --git a/src/app/form/orientation-form/orientation-form.component.html b/src/app/form/orientation-form/orientation-form.component.html index 5c163c2a6..ec209f992 100644 --- a/src/app/form/orientation-form/orientation-form.component.html +++ b/src/app/form/orientation-form/orientation-form.component.html @@ -281,13 +281,13 @@ </div> </div> <div fxLayout="row" class="content-container"> - <div class="nbStructure-panel"> + <div class="nbStructure-panel left-pane" [ngClass]="{ mapPhone: isMapPhone == true }"> <div class="nbStructuresLabel" [ngPlural]="structuresList.length"> <ng-template ngPluralCase="0">0 structure trouvée</ng-template> <ng-template ngPluralCase="1">1 structure trouvée</ng-template> <ng-template ngPluralCase="other">{{ structuresList.length }} structures trouvées</ng-template> </div> - <div id="listCard" class="left-pane" (mouseleave)="mouseLeave()"> + <div id="listCard" (mouseleave)="mouseLeave()"> <app-card *ngFor="let structure of structuresList" [structure]="structure" @@ -302,22 +302,27 @@ </p> </div> </div> - <div class="right-pane"> - <div class="deep-map"> - <app-map - [structures]="structuresList" - [structuresToPrint]="structuresToPrint" - [toogleToolTipId]="displayMapMarkerId" - [selectedMarkerId]="selectedMarkerId" - [locate]="locate" - (locatationTrigger)="locatationTrigger($event)" - (selectedStructure)="showDetailStructure($event)" - [isMapPhone]="isMapPhone" - [searchedValue]="searchedValue" - [ngClass]="{ mapPhone: isMapPhone == true }" - ></app-map> - </div> + <div class="btnSwitch"> + <app-button + [style]="'roundedButton'" + [text]="isMapPhone ? 'Liste' : 'Carte'" + [iconBtn]="isMapPhone ? 'liste' : 'map-marker'" + (action)="switchMapList()" + ></app-button> </div> + <app-map + [structures]="structuresList" + [structuresToPrint]="structuresToPrint" + [toogleToolTipId]="displayMapMarkerId" + [selectedMarkerId]="selectedMarkerId" + [locate]="locate" + (locatationTrigger)="locatationTrigger($event)" + (selectedStructure)="showDetailStructure($event)" + [isMapPhone]="isMapPhone" + [searchedValue]="searchedValue" + class="right-pane deep-map" + [ngClass]="{ mapPhone: isMapPhone == true }" + ></app-map> </div> </div> <!-- BENEFICIARY ACCOMPANIMENT --> @@ -436,6 +441,27 @@ ></app-footer-form> </div> </div> + + <div *ngIf="currentPage != 0 && currentPage != pageTypeEnum.printResults" class="footer phone"> + <div fxLayout="row" fxLayoutAlign="center center"> + <app-footer-form + [btnName]="['Précédent', 'Suivant']" + (previousPage)="previousPage()" + (nextPage)="nextPage()" + [isValid]="isPageValid" + ></app-footer-form> + </div> + </div> + <div *ngIf="currentPage == pageTypeEnum.printResults" class="footer phone"> + <div fxLayout="row" fxLayoutAlign="center center"> + <app-footer-form + [btnName]="['Précédent', 'Imprimer']" + (previousPage)="previousPage()" + (nextPage)="runMultiPrint(true)" + [isValid]="isPageValid" + ></app-footer-form> + </div> + </div> </div> <app-structure-list-print diff --git a/src/app/form/orientation-form/orientation-form.component.scss b/src/app/form/orientation-form/orientation-form.component.scss index ced3349a7..7fd2cb3df 100644 --- a/src/app/form/orientation-form/orientation-form.component.scss +++ b/src/app/form/orientation-form/orientation-form.component.scss @@ -98,3 +98,41 @@ padding-left: 9px; width: 100%; } + +.footer { + padding: 17px 0; + width: 100%; + max-width: 960px; + margin: 20px auto; + text-align: center; + &.desktop { + @media #{$tablet} { + display: none; + } + } + + &.phone { + display: none; + @media #{$tablet} { + margin: 0 auto; + border-top: 1px solid $grey-4; + display: block; + } + } +} + +.btnSwitch { + position: fixed; + left: 50%; + bottom: $footer-height; + transform: translate(-50%, -50%); + margin: 0 auto; + display: none; + @media #{$tablet} { + display: block; + opacity: 0.8; + z-index: $btn-phone-switch-map-list-z-index; + } + @media #{$large-phone} { + } +} diff --git a/src/app/form/orientation-form/orientation-form.component.ts b/src/app/form/orientation-form/orientation-form.component.ts index 83a83bf27..e2563d09f 100644 --- a/src/app/form/orientation-form/orientation-form.component.ts +++ b/src/app/form/orientation-form/orientation-form.component.ts @@ -26,6 +26,7 @@ export class OrientationFormComponent implements OnInit { public selectedMarkerId: string; public locate = false; public noPassNumeric = false; + public isMapPhone = false; public orientationForm: FormGroup; @@ -341,7 +342,7 @@ export class OrientationFormComponent implements OnInit { public searchStructures(): void { this.filters = []; if (this.orientationForm.value.passNumeric) { - this.filters.push(new Filter('labelsQualifications', 'passNumerique', 'Passe Numérique')); + this.filters.push(new Filter('labelsQualifications', 'passNumerique', 'Pass Numérique')); } if (this.orientationForm.value.specificProfile) { this.orientationForm.get('specificProfile').value.forEach((element) => { @@ -503,6 +504,10 @@ export class OrientationFormComponent implements OnInit { this.setStructuresAndCoord(); } + public switchMapList(): void { + this.isMapPhone = !this.isMapPhone; + } + public getAddress(): void { navigator.geolocation.getCurrentPosition((position) => { this.geoJsonService.getAddressByCoord(position.coords.longitude, position.coords.latitude).subscribe( diff --git a/src/app/structure-list/components/structure-details/structure-details.component.scss b/src/app/structure-list/components/structure-details/structure-details.component.scss index a5f963488..8942e91a9 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.scss +++ b/src/app/structure-list/components/structure-details/structure-details.component.scss @@ -23,7 +23,7 @@ a { overflow: auto; @media #{$tablet} { width: calc(100% - 2 * 24px); - position: fixed; + position: inherit; height: 100%; .printButton { display: none !important; -- GitLab From 7226fe231867ffef6e6b03296e89c7ea6fb18627 Mon Sep 17 00:00:00 2001 From: Hugo <hnouts.dev@gmail.com> Date: Mon, 26 Jul 2021 15:26:16 +0200 Subject: [PATCH 2/6] sonar fix + loader circle while locating user --- .../structure-print-header.component.ts | 2 +- .../orientation-form.component.html | 7 +++-- .../orientation-form.component.scss | 4 +++ .../orientation-form.component.ts | 26 +++++++++++-------- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.ts b/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.ts index 5e6ed970b..20c827dec 100644 --- a/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.ts +++ b/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.ts @@ -36,7 +36,7 @@ export class StructurePrintHeaderComponent implements OnInit { minute: 'numeric', }); - this.filters.map((elem) => { + this.filters.forEach((elem) => { switch (elem.name) { case 'proceduresAccompaniment': this.assistances.push(elem); diff --git a/src/app/form/orientation-form/orientation-form.component.html b/src/app/form/orientation-form/orientation-form.component.html index ec209f992..bcb1bfd7d 100644 --- a/src/app/form/orientation-form/orientation-form.component.html +++ b/src/app/form/orientation-form/orientation-form.component.html @@ -229,15 +229,18 @@ (selectedAddress)="setAddressBeneficiary($event)" ></app-address-autocomplete> <app-svg-icon - *ngIf="getOrientationControl('address').valid" + *ngIf="getOrientationControl('address').valid && !isLoading" [iconClass]="'validation'" [type]="'form'" [icon]="'validate'" class="validateIcon" ></app-svg-icon> - <div *ngIf="!getOrientationControl('address').valid" (click)="getAddress()"> + <div *ngIf="!getOrientationControl('address').valid && !isLoading" (click)="getAddress()"> <app-svg-icon [type]="'ico'" [icon]="'locateMe'" class="markerIcon"></app-svg-icon> </div> + <div *ngIf="isLoading"> + <img class="loader-gif" src="/assets/gif/loader_circle.gif" alt /> + </div> </div> </div> <div class="title"> diff --git a/src/app/form/orientation-form/orientation-form.component.scss b/src/app/form/orientation-form/orientation-form.component.scss index 7fd2cb3df..315456fee 100644 --- a/src/app/form/orientation-form/orientation-form.component.scss +++ b/src/app/form/orientation-form/orientation-form.component.scss @@ -136,3 +136,7 @@ @media #{$large-phone} { } } + +.loader-gif { + width: 20%; +} diff --git a/src/app/form/orientation-form/orientation-form.component.ts b/src/app/form/orientation-form/orientation-form.component.ts index e2563d09f..c5c8c8d35 100644 --- a/src/app/form/orientation-form/orientation-form.component.ts +++ b/src/app/form/orientation-form/orientation-form.component.ts @@ -27,6 +27,7 @@ export class OrientationFormComponent implements OnInit { public locate = false; public noPassNumeric = false; public isMapPhone = false; + public isLoading = false; public orientationForm: FormGroup; @@ -372,7 +373,7 @@ export class OrientationFormComponent implements OnInit { } public removeDoublonFilters(): void { - this.uncheckedFilters.map((elem) => { + this.uncheckedFilters.forEach((elem) => { this.filters = this.filters.filter((filter) => filter.value != elem.value); }); this.setStructuresAndCoord(); @@ -380,7 +381,7 @@ export class OrientationFormComponent implements OnInit { public findEquipmentName(equipment): string { let name; - this.equipmentReferentiel.modules.map((elem) => { + this.equipmentReferentiel.modules.forEach((elem) => { if (elem.id === equipment) { name = elem.text; } @@ -390,7 +391,7 @@ export class OrientationFormComponent implements OnInit { public findAssistanceName(skill): string { let name; - this.assistanceReferentiel.modules.map((elem) => { + this.assistanceReferentiel.modules.forEach((elem) => { if (elem.id === skill) { name = elem.text; } @@ -401,31 +402,31 @@ export class OrientationFormComponent implements OnInit { public findTrainingCategoryForSkill(skill): any { let infos = { categ: '', name: '' }; - this.baseSkillssReferentiel.modules.map((elem) => { + this.baseSkillssReferentiel.modules.forEach((elem) => { if (elem.id === skill) { infos.categ = this.baseSkillssReferentiel.id; infos.name = elem.text; } }); - this.accessRightsReferentiel.modules.map((elem) => { + this.accessRightsReferentiel.modules.forEach((elem) => { if (elem.id === skill) { infos.categ = this.accessRightsReferentiel.id; infos.name = elem.text; } }); - this.parentingHelpsReferentiel.modules.map((elem) => { + this.parentingHelpsReferentiel.modules.forEach((elem) => { if (elem.id === skill) { infos.categ = this.parentingHelpsReferentiel.id; infos.name = elem.text; } }); - this.socialAndProfessionalsReferentiel.modules.map((elem) => { + this.socialAndProfessionalsReferentiel.modules.forEach((elem) => { if (elem.id === skill) { infos.categ = this.socialAndProfessionalsReferentiel.id; infos.name = elem.text; } }); - this.digitalCultureSecuritysReferentiel.modules.map((elem) => { + this.digitalCultureSecuritysReferentiel.modules.forEach((elem) => { if (elem.id === skill) { infos.categ = this.digitalCultureSecuritysReferentiel.id; infos.name = elem.text; @@ -510,16 +511,19 @@ export class OrientationFormComponent implements OnInit { public getAddress(): void { navigator.geolocation.getCurrentPosition((position) => { + this.isLoading = true; this.geoJsonService.getAddressByCoord(position.coords.longitude, position.coords.latitude).subscribe( (location) => { - location.properties.housenumber - ? this.getOrientationControl('address').get('numero').setValue(location.properties.housenumber) - : null; + if (location.properties.housenumber) { + this.getOrientationControl('address').get('numero').setValue(location.properties.housenumber); + } this.getOrientationControl('address').get('street').setValue(location.properties.street); this.getOrientationControl('address').get('commune').setValue(location.properties.city); this.setValidationsForm(); + this.isLoading = false; }, (err) => { + this.isLoading = false; throw new Error(err); } ); -- GitLab From 2cf998e5f46e8680a575f39144d80f0b27118c68 Mon Sep 17 00:00:00 2001 From: Hugo <hnouts@grandlyon.com> Date: Tue, 27 Jul 2021 16:41:59 +0200 Subject: [PATCH 3/6] update & fixes - Opening and closing hours displayed as column for mobile & row for desktop / tablet - Fix structureDetails opening panel from tooltip - Check opening hours before formating them to avoid undefined errors in structure-detail-print --- .../structure-detail-print.component.html | 4 ++-- .../structure-detail-print.component.scss | 21 +++++++++++++++++++ .../orientation-form.component.html | 2 +- .../orientation-form.component.scss | 18 ++++++++++++++-- .../structure-details.component.html | 2 +- 5 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.html b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.html index d47786172..b6e592955 100644 --- a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.html +++ b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.html @@ -10,7 +10,7 @@ <h3>{{ structure.getLabelTypeStructure() }}</h3> </div> </div> - <div fxLayout="row" class="mobile-column"> + <div class="mobile-column"> <div fxLayout="column" fxFlex="50%"> <div *ngIf="structure.address" fxLayout="row" fxLayoutAlign="none flex-end" fxLayoutGap="13px"> <app-svg-icon [type]="'ico'" [icon]="'adress'" [title]="'Adresse'"></app-svg-icon> @@ -119,7 +119,7 @@ <h4>{{ day.key | day }}</h4> <div class="opening-time" fxLayout="row" fxLayoutAlign="none flex-end"> <div *ngFor="let timeRange of day.value.time; let isFirst = first"> - <p *ngIf="isFirst">de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }}</p> + <p *ngIf="isFirst && timeRange.opening">de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }}</p> <p *ngIf="!isFirst && timeRange.opening"> et de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }} </p> diff --git a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss index 5edae1720..664e18f7a 100644 --- a/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss +++ b/src/app/form/orientation-form/component/structure-detail-print/structure-detail-print.component.scss @@ -137,3 +137,24 @@ p, margin-top: 15px; background: #348899; } + +.mobile-column { + @media #{$tablet} { + flex-direction: row; + } + @media #{$desktop} { + flex-direction: row; + } + @media #{$large-desktop} { + flex-direction: row; + } + @media #{$phone} { + flex-direction: column; + } + @media #{$small-phone} { + flex-direction: column; + } + @media #{$large-phone} { + flex-direction: column; + } +} \ No newline at end of file diff --git a/src/app/form/orientation-form/orientation-form.component.html b/src/app/form/orientation-form/orientation-form.component.html index bcb1bfd7d..02e379de3 100644 --- a/src/app/form/orientation-form/orientation-form.component.html +++ b/src/app/form/orientation-form/orientation-form.component.html @@ -320,7 +320,7 @@ [selectedMarkerId]="selectedMarkerId" [locate]="locate" (locatationTrigger)="locatationTrigger($event)" - (selectedStructure)="showDetailStructure($event)" + (selectedStructure)="showDetails($event)" [isMapPhone]="isMapPhone" [searchedValue]="searchedValue" class="right-pane deep-map" diff --git a/src/app/form/orientation-form/orientation-form.component.scss b/src/app/form/orientation-form/orientation-form.component.scss index 315456fee..dbeffc59d 100644 --- a/src/app/form/orientation-form/orientation-form.component.scss +++ b/src/app/form/orientation-form/orientation-form.component.scss @@ -124,7 +124,7 @@ .btnSwitch { position: fixed; left: 50%; - bottom: $footer-height; + bottom: $footer-height + 5px; transform: translate(-50%, -50%); margin: 0 auto; display: none; @@ -138,5 +138,19 @@ } .loader-gif { - width: 20%; + @media #{$desktop} { + width: 20%; + } + @media #{$large-desktop} { + width: 20%; + } + @media #{$large-phone} { + width: 100%; + } + @media #{$small-phone} { + width: 100%; + } + @media #{$phone} { + width: 100%; + } } diff --git a/src/app/structure-list/components/structure-details/structure-details.component.html b/src/app/structure-list/components/structure-details/structure-details.component.html index 5d5fcd8d6..14d8b2826 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.html +++ b/src/app/structure-list/components/structure-details/structure-details.component.html @@ -187,7 +187,7 @@ <h4>{{ day.key | day }}</h4> <div class="opening-time" fxLayout="row" fxLayoutAlign="none flex-end"> <div *ngFor="let timeRange of day.value.time; let isFirst = first"> - <p *ngIf="isFirst">de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }}</p> + <p *ngIf="isFirst && timeRange.opening">de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }}</p> <p *ngIf="!isFirst && timeRange.opening"> et de {{ timeRange.formatOpeningDate() }} à {{ timeRange.formatClosingDate() }} </p> -- GitLab From 1293fd198fdbe032666ff1a48b787349a250e5a5 Mon Sep 17 00:00:00 2001 From: Hugo <hnouts@grandlyon.com> Date: Fri, 30 Jul 2021 13:52:46 +0200 Subject: [PATCH 4/6] changed meta title & description --- src/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/index.html b/src/index.html index 19f2458a1..d27d89378 100644 --- a/src/index.html +++ b/src/index.html @@ -8,19 +8,19 @@ <title>Réseau des Acteurs de l'Inclusion Numérique de la Métropole de Lyon</title> <!-- Search Engine --> - <meta name="title" content="Réseau des acteurs de la médiation numérique" /> + <meta name="title" content="Rés'in : plateforme à destination des acteurs de l'inclusion numérique de la métropole de Lyon" /> <meta name="description" - content="Plateforme à destination des acteurs de l'inclusion numérique de la métropole de Lyon" + content="Retrouver tous les lieux de la médiation numérique de la métropole mais aussi les actualités, projets, ressources, études et appels à projet liès à l'inclusion numérique..." /> <meta name="image" content="https://resin.grandlyon.com/assets/logos/logo_1200.jpg" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- Open Graph general --> - <meta property="og:title" content="Réseau des Acteurs de la Médiation" /> + <meta property="og:title" content="Rés'in : plateforme à destination des acteurs de l'inclusion numérique de la métropole de Lyon" /> <meta property="og:description" - content="Plateforme à destination des acteurs de l'inclusion numérique de la métropole de Lyon" + content="Retrouver tous les lieux de la médiation numérique de la métropole mais aussi les actualités, projets, ressources, études et appels à projet liès à l'inclusion numérique..." /> <meta property="og:image" content="https://resin.grandlyon.com/assets/logos/logo_1200.jpg" /> <meta property="og:image:type" content="image/jpeg" /> @@ -33,7 +33,7 @@ <meta name="twitter:title" content="Réseau des Acteurs de la Médiation" /> <meta name="twitter:description" - content="Plateforme à destination des acteurs de l'inclusion numérique de la métropole de Lyon" + content="Retrouver tous les lieux de la médiation numérique de la métropole mais aussi les actualités, projets, ressources, études et appels à projet liès à l'inclusion numérique..." /> <meta name="twitter:image" content="https://resin.grandlyon.com/assets/logos/logo_1200.jpg" /> <meta name="twitter:url" content="https://resin.grandlyon.com" /> -- GitLab From 0e653933cf7029d8c0948c8b661ae3baba26bae2 Mon Sep 17 00:00:00 2001 From: Hugo <hnouts@grandlyon.com> Date: Tue, 14 Sep 2021 14:29:40 +0200 Subject: [PATCH 5/6] fix (orientationform): navigating pages keeps selected structure markers on map component, selected structure to print have their own marker. Marker persist when map is reloaded from navigating form pages. --- src/app/form/orientation-form/orientation-form.component.ts | 1 + src/app/map/components/map.component.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/app/form/orientation-form/orientation-form.component.ts b/src/app/form/orientation-form/orientation-form.component.ts index c5c8c8d35..a76082df7 100644 --- a/src/app/form/orientation-form/orientation-form.component.ts +++ b/src/app/form/orientation-form/orientation-form.component.ts @@ -196,6 +196,7 @@ export class OrientationFormComponent implements OnInit { } this.currentPage--; this.progressStatus -= 100 / this.nbPagesForm; + this.setStructuresAndCoord(); this.updatePageValid(); } } diff --git a/src/app/map/components/map.component.ts b/src/app/map/components/map.component.ts index e432b027e..d3871abcf 100644 --- a/src/app/map/components/map.component.ts +++ b/src/app/map/components/map.component.ts @@ -141,6 +141,10 @@ export class MapComponent implements OnChanges { } else if (this.structures) { this.map = this.mapService.cleanMap(this.map); this.getStructuresPositions(this.structures); + this.structuresToPrint.forEach((structure: Structure) => { + this.mapService.setAddedToListMarker(structure._id); + }); + } } -- GitLab From 00b118f8b1042d91e2dcd0c29dbf9d530e55fd9a Mon Sep 17 00:00:00 2001 From: Hugo <hnouts@grandlyon.com> Date: Thu, 16 Sep 2021 14:42:57 +0200 Subject: [PATCH 6/6] fix (legal-notice): added data retention length --- src/app/legal-notice/legal-notice.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/legal-notice/legal-notice.component.html b/src/app/legal-notice/legal-notice.component.html index aca06d1cc..a806bda88 100644 --- a/src/app/legal-notice/legal-notice.component.html +++ b/src/app/legal-notice/legal-notice.component.html @@ -1,7 +1,7 @@ <div fxLayout="column" class="content-container"> <h1 style="display: none">Mentions légales</h1> <div class="section-container"> - <h2>Mentions légales du réseau des acteurs de la médiation numérique sur le territoire de la métropole de Lyon</h2> + <h1>Mentions légales du réseau des acteurs de la médiation numérique sur le territoire de la métropole de Lyon</h1> <p> Métropole de Lyon - 20 rue du Lac – CS 33569 - 69505 Lyon cedex 03<br /> Tél : (33) 4 78 63 40 40<br /> @@ -37,7 +37,7 @@ numérique de la Métropole de Lyon. </p> <p> - Elles sont conservées tant que leurs utilisations nous est indispensables et sont destinées aux administrateurs de + Elles sont conservées jusqu'à 18 mois tant que leurs utilisations nous est indispensables et sont destinées aux administrateurs de la plateforme de la Métropole de Lyon. </p> <p> -- GitLab