Commit 10dd5233 authored by Hugo NOUTS's avatar Hugo NOUTS
Browse files

Merge branch 'dev' into 'master'

feat (orientation-form)

See merge request !157
parents 74849be5 2d7ba096
Pipeline #15951 passed with stage
in 3 minutes and 50 seconds
......@@ -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>
......
......@@ -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;
......@@ -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
......@@ -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);
......
......@@ -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">
......@@ -281,13 +284,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 +305,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)="showDetails($event)"
[isMapPhone]="isMapPhone"
[searchedValue]="searchedValue"
class="right-pane deep-map"
[ngClass]="{ mapPhone: isMapPhone == true }"
></app-map>
</div>
</div>
<!-- BENEFICIARY ACCOMPANIMENT -->
......@@ -436,6 +444,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
......
......@@ -98,3 +98,59 @@
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 + 5px;
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} {
}
}
.loader-gif {
@media #{$desktop} {
width: 20%;
}
@media #{$large-desktop} {
width: 20%;
}
@media #{$large-phone} {
width: 100%;
}
@media #{$small-phone} {
width: 100%;
}
@media #{$phone} {
width: 100%;
}
}
......@@ -26,6 +26,8 @@ export class OrientationFormComponent implements OnInit {
public selectedMarkerId: string;
public locate = false;
public noPassNumeric = false;
public isMapPhone = false;
public isLoading = false;
public orientationForm: FormGroup;
......@@ -194,6 +196,7 @@ export class OrientationFormComponent implements OnInit {
}
this.currentPage--;
this.progressStatus -= 100 / this.nbPagesForm;
this.setStructuresAndCoord();
this.updatePageValid();
}
}
......@@ -341,7 +344,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) => {
......@@ -371,7 +374,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();
......@@ -379,7 +382,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;
}
......@@ -389,7 +392,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;
}
......@@ -400,31 +403,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;
......@@ -503,18 +506,25 @@ export class OrientationFormComponent implements OnInit {
this.setStructuresAndCoord();
}
public switchMapList(): void {
this.isMapPhone = !this.isMapPhone;
}
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);
}
);
......
<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>
......
......@@ -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);
});
}
}
......
......@@ -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>
......
......@@ -23,7 +23,7 @@ a {
overflow: auto;
@media #{$tablet} {
width: calc(100% - 2 * 24px);
position: fixed;
position: inherit;
height: 100%;
.printButton {
display: none !important;
......
......@@ -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" />
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment