Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client
1 result
Show changes
Commits on Source (25)
Showing
with 126 additions and 102 deletions
{
"recommendations": [
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-french",
"angular.ng-template"
]
}
......@@ -2,7 +2,8 @@
"eslint.enable": true,
"javascript.format.enable": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
"source.fixAll.eslint": true,
"source.organizeImports": true
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
......@@ -25,5 +26,24 @@
"i18n-ally.localesPaths": "client/src/assets/i18n",
"i18n-ally.keystyle": "nested",
"i18n-ally.enabledFrameworks": "ngx-translate",
"typescript.preferences.importModuleSpecifier": "relative"
"typescript.preferences.importModuleSpecifier": "relative",
"cSpell.language": "fr,en",
"cSpell.words": [
"covid",
"facebook",
"friday",
"instagram",
"linkedin",
"monday",
"onespace",
"personaloffer",
"Rés'in",
"saturday",
"sunday",
"thursday",
"toastr",
"tuesday",
"ultrawide",
"wednesday"
]
}
......@@ -2,6 +2,22 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [2.0.2](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v2.0.1...v2.0.2) (2023-01-05)
### Features
* **structure:** improve user message when no structure to create ([3baf9c7](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/3baf9c702f84403a9ec18d464b81dca179a1d6db))
* **structure:** remove useless completion question in structure creation tunnel ([28340d6](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/28340d6e20e62f3ad2719617df938bb6889a263e))
### Bug Fixes
* margin top in edit structure form ([e0b5c9b](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/e0b5c9bca20e4a11b330b4a8765a818917dcc538))
* Offre personnel back button form ([2031dd3](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/2031dd339a1761ad54b0090bc12bea20612f78e0))
* scroll on firefox ([fef054d](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/fef054d2e88b400212b8f548ef1c1926c6e997a2))
* several bugs on recette ([c177ddb](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/c177ddb659dc1d4248e3627de8957f2b36a89e76))
### [2.0.1](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v2.0.0...v2.0.1) (2022-12-16)
......
{
"name": "pamn",
"version": "2.0.1",
"version": "2.0.2",
"scripts": {
"ng": "ng",
"start": "ng serve --configuration=fr --proxy-config proxy.conf.json",
......
......@@ -12,7 +12,8 @@
}
.results-column {
width: 30%;
width: 100%;
max-width: 600px;
}
.incomplete {
......
<div fxLayout="column" fxLayoutAlign="center center">
<h2>Revendication structure</h2>
<table *ngIf="isClaimedStructure" aria-describedby="demands attachment results" class="results-tab">
<thead>
<th scope="col">Utilisateur</th>
......
......@@ -2,7 +2,7 @@
<img class="loader-gif" src="/assets/gif/loader_circle_grey.gif" alt />
</div>
<div *ngIf="!isLoading" fxLayout="column" fxLayoutAlign="center center">
<H2>Gestion de l'affichage des infos Covid</H2>
<h2>Gestion de l'affichage des infos Covid</h2>
<div *ngIf="lockdownInfoDisplay">Les infos covid sont actuellement affichées dans les fiches structure.</div>
<div *ngIf="!lockdownInfoDisplay">Les infos covid ne sont actuellement pas affichées dans les fiches structure.</div>
<div *ngIf="!error" class="singleCheckbox" [ngClass]="{ checked: lockdownInfoDisplay }">
......
<div fxLayout="column" fxLayoutGap="5px" fxLayoutAlign="center center" class="userBlock">
<h3>
<h2>
Gestion des employeurs
<span *ngIf="unvalidatedEmployers && validatedEmployers">
({{ unvalidatedEmployers.length + validatedEmployers.length }})
</span>
</h3>
</h2>
</div>
<div class="tables-list">
......
<div fxLayout="column" fxLayoutGap="5px" fxLayoutAlign="center center" class="userBlock">
<h3>
<h2>
Gestion des fonctions
<span *ngIf="unvalidatedJobs && validatedJobs"> ({{ unvalidatedJobs.length + validatedJobs.length }}) </span>
</h3>
</h2>
</div>
<div class="tables-list">
......
......@@ -2,6 +2,7 @@
<img class="loader-gif" src="/assets/gif/loader_circle_grey.gif" alt />
</div>
<div *ngIf="!isLoading" fxLayout="column" fxLayoutAlign="center center">
<h2>Liste structures</h2>
<table aria-describedby="demands attachment results" class="results-tab results-column">
<thead>
<th colspan="2" scope="colgroup">
......
......@@ -50,7 +50,7 @@
>
</div>
<div class="access">
Pour accéder à l’annuaire de Résin et contacter les utilisateurs,<br />
Pour accéder à l’annuaire de Rés'in et contacter les utilisateurs,<br />
veuillez vous connecter ou vous créer un compte.
</div>
<div class="buttons">
......
......@@ -92,7 +92,7 @@
<div class="textareaBlock" fxLayout="row" fxLayoutGap="15px">
<textarea
rows="8"
placeholder="Exemple : J'aimerais avoir de l'aide sur Rés'IN."
placeholder="Exemple : J'aimerais avoir de l'aide sur Rés'in."
maxlength="500"
formControlName="message"
></textarea>
......
import { Component, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { Meta } from '@angular/platform-browser';
import { Router } from '@angular/router';
import { ContactMessage } from '../models/contact-message.model';
import { AuthService } from '../services/auth.service';
import { ContactService } from '../services/contact.service';
......@@ -43,7 +43,7 @@ export class ContactComponent implements OnInit {
this.meta.updateTag({
name: 'description',
content:
"Formulaire pour contacter Rés'IN, le Réseau des acteurs de l'inclusion numérique de la métropole de Lyon",
"Formulaire pour contacter Rés'in, le Réseau des acteurs de l'inclusion numérique de la métropole de Lyon",
});
}
......
<div
class="footerForm"
fxLayout="row"
[ngClass]="{ column: hasFinishButton() }"
fxLayoutGap="10px"
fxLayoutAlign="center center"
>
<div class="footerForm" [ngClass]="{ column: hasFinishButton() }">
<app-button
*ngIf="!isLastFormStep && !isNextFormTransition && !isStructureLastPage() && !isPersonalOfferFirstPage()"
(action)="prevPage()"
......
......@@ -3,6 +3,9 @@
@import '../../../assets/scss/breakpoint';
.footerForm {
display: flex;
justify-content: center;
gap: 1rem;
padding: 20px 0;
}
......
......@@ -62,11 +62,7 @@ export class FooterFormComponent implements OnChanges {
) {
this.isNextFormTransition = true;
}
if (
this.currentForm === formType.structure &&
(this.currentStep === structureFormStep.noStructure ||
this.currentStep === structureFormStep.StructureInfoUnknown)
) {
if (this.currentForm === formType.structure && this.currentStep === structureFormStep.noStructure) {
this.isLastFormStep = true;
}
}
......@@ -77,7 +73,7 @@ export class FooterFormComponent implements OnChanges {
}
public hasFinishButton(): boolean {
return this.btnName.length == 3;
return this.btnName.length === 3;
}
public finishedModal(): void {
this.endPage.emit();
......@@ -95,7 +91,11 @@ export class FooterFormComponent implements OnChanges {
}
public prevPage(): void {
if (!this.isEditMode && this.currentForm === formType.structure) {
if (this.isEditMode) {
history.back();
}
if (this.currentForm === formType.structure) {
if (this.currentStep === structureFormStep.structureType) {
this.changeCurrentStep.emit(structureFormStep.structureFormTime);
return;
......@@ -116,10 +116,9 @@ export class FooterFormComponent implements OnChanges {
}
return;
}
this.goToPreviousPage();
} else {
history.back();
}
this.goToPreviousPage();
}
public async nextPage(): Promise<void> {
......@@ -139,13 +138,6 @@ export class FooterFormComponent implements OnChanges {
return;
}
if (this.currentForm === formType.structure) {
if (this.currentStep === structureFormStep.structureChoiceCompletion) {
const chooseCompleteStructInfo = this.form.get('choiceCompletion').value;
if (!chooseCompleteStructInfo) {
this.changeCurrentStep.emit(structureFormStep.StructureInfoUnknown);
return;
}
}
if (this.currentStep === structureFormStep.structureAccompanimentChoice) {
const hasPlaceOfReception = this.form.get('placeOfReception').value;
if (!hasPlaceOfReception) {
......@@ -176,11 +168,11 @@ export class FooterFormComponent implements OnChanges {
return;
}
if (this.currentStep === structureFormStep.structureContactCompletion) {
//TODO Go to send mail page and send the mail
// TODO Go to send mail page and send the mail
return;
}
}
if (this.isPersonalOfferpage()) {
if (this.isPersonalOfferPage()) {
this.endForm.emit({ formType: this.currentForm });
return;
}
......@@ -211,8 +203,7 @@ export class FooterFormComponent implements OnChanges {
this.currentForm === formType.structure &&
(this.currentStep === structureFormStep.mailSentInfo ||
this.currentStep === structureFormStep.structureCreationFinishedInfo ||
this.currentStep === structureFormStep.noStructure ||
this.currentStep === structureFormStep.StructureInfoUnknown)
this.currentStep === structureFormStep.noStructure)
);
}
......@@ -220,7 +211,7 @@ export class FooterFormComponent implements OnChanges {
return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection;
}
private isPersonalOfferpage(): boolean {
private isPersonalOfferPage(): boolean {
return (
this.currentForm === formType.personaloffer &&
this.currentStep === personalOfferFormStep.personalOfferStructureChoice
......
......@@ -11,53 +11,50 @@
[nbSteps]="nbSteps"
></app-progress-bar>
<div class="page">
<ng-container *ngIf="formType[routeParam] === formType.account || formType[this.routeParam] === formType.register">
<app-account-form
[nbSteps]="nbSteps"
[accountForm]="accountForm"
[hoursForm]="hoursForm"
[currentStep]="currentPage"
[isAccountMode]="isAccountMode"
(goNext)="nextPage()"
(pageValid)="validatePage($event)"
(acceptNewsletter)="acceptReceiveNewsletter($event)"
></app-account-form>
</ng-container>
<ng-container *ngIf="formType[routeParam] === formType.profile">
<app-profile-form
[nbSteps]="nbSteps"
[profileForm]="profileForm"
[currentStep]="currentPage"
(goNext)="nextPage()"
(pageValid)="validatePage($event)"
></app-profile-form>
</ng-container>
<ng-container *ngIf="formType[routeParam] === formType.structure">
<app-structure-form
[nbSteps]="nbSteps"
[structure]="structure"
[structureForm]="structureForm"
[hoursForm]="hoursForm"
[currentStep]="currentPage"
[isEditMode]="isEditMode"
(goNext)="nextPage()"
(isNotExistingStructure)="nextPage()"
(pageValid)="validatePage($event)"
(updateHoursForm)="updateHours($event)"
(setEditStep)="setCurrentStep($event)"
></app-structure-form>
</ng-container>
<ng-container *ngIf="formType[routeParam] === formType.personaloffer">
<app-personal-offer-form
[nbSteps]="nbSteps"
[personalOfferForm]="personalOfferForm"
[currentStep]="currentPage"
[structureName]="structure.structureName"
(setHasOtherOffer)="setHasOtherPersonalOffer($event)"
(pageValid)="validatePage($event)"
></app-personal-offer-form>
</ng-container>
<app-account-form
*ngIf="formType[routeParam] === formType.account || formType[this.routeParam] === formType.register"
[nbSteps]="nbSteps"
[accountForm]="accountForm"
[hoursForm]="hoursForm"
[currentStep]="currentPage"
[isAccountMode]="isAccountMode"
(goNext)="nextPage()"
(pageValid)="validatePage($event)"
(acceptNewsletter)="acceptReceiveNewsletter($event)"
></app-account-form>
<app-profile-form
*ngIf="formType[routeParam] === formType.profile"
[nbSteps]="nbSteps"
[profileForm]="profileForm"
[currentStep]="currentPage"
(goNext)="nextPage()"
(pageValid)="validatePage($event)"
></app-profile-form>
<app-structure-form
*ngIf="formType[routeParam] === formType.structure"
[nbSteps]="nbSteps"
[structure]="structure"
[structureForm]="structureForm"
[hoursForm]="hoursForm"
[currentStep]="currentPage"
[isEditMode]="isEditMode"
(goNext)="nextPage()"
(isNotExistingStructure)="nextPage()"
(pageValid)="validatePage($event)"
(updateHoursForm)="updateHours($event)"
(setEditStep)="setCurrentStep($event)"
></app-structure-form>
<app-personal-offer-form
*ngIf="formType[routeParam] === formType.personaloffer"
[nbSteps]="nbSteps"
[personalOfferForm]="personalOfferForm"
[currentStep]="currentPage"
[structureName]="structure.structureName"
(setHasOtherOffer)="setHasOtherPersonalOffer($event)"
(pageValid)="validatePage($event)"
></app-personal-offer-form>
</div>
<app-footer-form
*ngIf="displayFooterForm()"
[currentStep]="currentPage"
......
......@@ -15,6 +15,7 @@
width: 100%;
height: 100%;
margin: 0 auto;
margin-top: 1rem;
overflow-y: auto;
color: $grey-1;
background: $white;
......
......@@ -183,8 +183,7 @@ export class FormViewComponent implements OnInit, AfterViewInit {
this.nbSteps = totalFormSteps;
this.currentPage = personalOfferFormStep.personalOfferAccompaniment;
this.currentFormType = formType.personaloffer;
const newPersonalOffer: PersonalOffer = new PersonalOffer();
this.createPersonalOfferForm(newPersonalOffer);
this.createPersonalOfferForm(new PersonalOffer());
this.currentForm = this.personalOfferForm;
}
}
......@@ -317,10 +316,6 @@ export class FormViewComponent implements OnInit, AfterViewInit {
if (type.formStep === structureFormStep.noStructure) {
this.router.navigateByUrl('/profile');
}
if (type.formStep === structureFormStep.StructureInfoUnknown) {
//Creation de coquille vide ??
this.router.navigateByUrl('/profile');
}
break;
case formType.personaloffer:
this.savePersonalOfferForm();
......@@ -332,17 +327,17 @@ export class FormViewComponent implements OnInit, AfterViewInit {
forkJoin({
employer: this.profileService.createEmployer(this.profileForm.get('employer').value).pipe(
map((res) => res),
catchError((_e) => of(this.profileForm.get('employer').value))
catchError(() => of(this.profileForm.get('employer').value))
),
job: this.profileService.createJob(this.profileForm.get('job').value).pipe(
map((res) => res),
catchError((_e) => of(this.profileForm.get('job').value))
catchError(() => of(this.profileForm.get('job').value))
),
profile: this.profileService
.updateProfile(this.profileForm.get('employer').value.name, this.profileForm.get('job').value.name)
.pipe(
map((res) => (this.profile = res)),
catchError((_e) => of())
catchError(() => of())
),
}).subscribe(async () => {
// if register a new user as a new member structure, no structure to choose
......@@ -526,7 +521,6 @@ export class FormViewComponent implements OnInit, AfterViewInit {
structureFormStep.noStructure,
structureFormStep.structureCreationFinishedInfo,
structureFormStep.mailSentInfo,
structureFormStep.StructureInfoUnknown,
];
case formType.profile:
return [profileFormStep.profileJobSelection];
......@@ -538,7 +532,7 @@ export class FormViewComponent implements OnInit, AfterViewInit {
}
public canExit(): Promise<boolean> {
// List all exit pages in order to authorise exit
// List all exit pages in order to authorize exit
const exitPages: stepType[] = this.setExitPages();
// Avoid confirmation when user submit form and leave.
if (
......
......@@ -19,7 +19,6 @@ import { ProfileJobSelectionComponent } from './profile-form/profile-job-selecti
import { ProfileStructureChoiceComponent } from './profile-form/profile-structure-choice/profile-structure-choice.component';
import { StructureAccessModalityComponent } from './structure-form/structure-access-modality/structure-access-modality.component';
import { StructureAccompanimentChoiceComponent } from './structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component';
import { StructureChoiceCompletionComponent } from './structure-form/structure-choice-completion/structure-choice-completion.component';
import { StructureConsentComponent } from './structure-form/structure-consent/structure-consent.component';
import { StructureContactCompletionComponent } from './structure-form/structure-contact-completion/structure-contact-completion.component';
import { StructureContactComponent } from './structure-form/structure-contact/structure-contact.component';
......@@ -32,12 +31,12 @@ import { StructureHoursComponent } from './structure-form/structure-hours/struct
import { StructureLabelsComponent } from './structure-form/structure-labels/structure-labels.component';
import { StructureNameAndAddressComponent } from './structure-form/structure-name-and-address/structure-name-and-address.component';
import { structureDigitalHelpingAccompanimentOtherComponent } from './structure-form/structure-public-target-other/structure-public-target-other.component';
import { StructureSolidarityMaterialComponent } from './structure-form/structure-solidarity-material/structure-solidarity-material.component';
import { StructureTrainingPriceComponent } from './structure-form/structure-training-price/structure-training-price.component';
import { StructureTrainingTypeComponent } from './structure-form/structure-training-type/structure-training-type.component';
import { StructureTypeComponent } from './structure-form/structure-type/structure-type.component';
import { StructureWebAndSocialNetworkComponent } from './structure-form/structure-web-and-social-network/structure-web-and-social-network.component';
import { StructureWifiComponent } from './structure-form/structure-wifi/structure-wifi.component';
import { StructureSolidarityMaterialComponent } from './structure-form/structure-solidarity-material/structure-solidarity-material.component';
@NgModule({
declarations: [
......@@ -55,7 +54,6 @@ import { StructureSolidarityMaterialComponent } from './structure-form/structure
StructureNameAndAddressComponent,
StructureContactComponent,
StructureAccompanimentChoiceComponent,
StructureChoiceCompletionComponent,
StructureContactCompletionComponent,
StructureAccessModalityComponent,
StructureHoursComponent,
......