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
Select Git revision

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client
1 result
Select Git revision
Show changes
Commits on Source (8)
Showing
with 70 additions and 45 deletions
......@@ -2,6 +2,34 @@
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.
### [1.6.1](https://forge.grandlyon.com///compare/v1.6.0...v1.6.1) (2021-04-01)
### Features
* admin deletion pannel ([bd598ff](https://forge.grandlyon.com///commit/bd598ff25e2982e46aa134c261beeb61e78b3d7e))
### Bug Fixes
* **news:** change map for foreach ([65a71fa](https://forge.grandlyon.com///commit/65a71fad4a5b94f3f10e5380d8dfe19a9d5d46ec))
* add protection in case of no tag ([21083b6](https://forge.grandlyon.com///commit/21083b60917f9bcf4e02698b29094ead02deedea))
* broken link ([eef433a](https://forge.grandlyon.com///commit/eef433ac66e01595b2d9c400ec834d87cc003130))
* display all workshop categories ([42d5b06](https://forge.grandlyon.com///commit/42d5b064b60481ffc203f1daedba98f63aefe5f5))
* edit reset password page (waiting for official design) ([3a67662](https://forge.grandlyon.com///commit/3a676624b9f888d5e8849d715a31da378c3ad387))
* modal background to fixed ([2e3d6be](https://forge.grandlyon.com///commit/2e3d6beb506c566af88a6d22a8b4b1a646321b07))
* new condition for display ([18c3700](https://forge.grandlyon.com///commit/18c37001e2ea64f0d8ce7c8d5388d00243106e16))
* news layout + update news routing navigation ([86621e0](https://forge.grandlyon.com///commit/86621e0d408c74e9dd561f428a69499a6196d2f1))
* og update image size ([31e159a](https://forge.grandlyon.com///commit/31e159a182bb6dd3303ea667ece5080adc44b168))
* remove admin guard from news ([57b9e0e](https://forge.grandlyon.com///commit/57b9e0ed6e7d912b0fb000522ad0643511bca002))
* sonar issues ([bce0381](https://forge.grandlyon.com///commit/bce0381e516d422614e2cf9254cd5e6e13425694))
* typo + news navigation issue ([9facb15](https://forge.grandlyon.com///commit/9facb1584aab72b298731bfc68c351936aeb4695))
* typo in legal notice ([b7f9f38](https://forge.grandlyon.com///commit/b7f9f38491c7d6817da3e403081e2ecc1cf1fa2e))
* update display of hours details title ([8f90f32](https://forge.grandlyon.com///commit/8f90f320f020056f1a0230bef1c54fe9e590072a))
* update meta tag ([00ac466](https://forge.grandlyon.com///commit/00ac466f5e0f621c80e088a23a11223fc5d02047))
* user-verification feedback form ([cd1ac48](https://forge.grandlyon.com///commit/cd1ac48abed6b399a365e7169e46e290ee49f59c))
* workshop price and closures hours ([bcded9a](https://forge.grandlyon.com///commit/bcded9a8238f113cb8fa330a14363344e4e00205))
## [1.6.0](https://forge.grandlyon.com///compare/v1.5.0...v1.6.0) (2021-03-15)
......
{
"name": "pamn",
"version": "1.6.0",
"version": "1.6.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......
{
"name": "pamn",
"version": "1.6.0",
"version": "1.6.1",
"scripts": {
"ng": "ng",
"start": "ng serve --configuration=fr --proxy-config proxy.conf.json",
......
import { HttpClientModule } from '@angular/common/http';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { of } from 'rxjs';
import { AdminService } from '../../services/admin.service';
import { DeleteUserComponent } from './delete-user.component';
......@@ -13,9 +12,9 @@ describe('DeleteUserComponent', () => {
beforeEach(async () => {
USERS = [
{email: "paula@test.com", name: "paula"},
{email: "jeanpaul@test.com", name: "jeanpaul"},
{email: "admin@test.com", name: "admin"},
{ email: 'paula@test.com', name: 'paula' },
{ email: 'jeanpaul@test.com', name: 'jeanpaul' },
{ email: 'admin@test.com', name: 'admin' },
];
await TestBed.configureTestingModule({
imports: [HttpClientModule],
......@@ -28,7 +27,7 @@ describe('DeleteUserComponent', () => {
component = fixture.componentInstance;
fixture.detectChanges();
service = jasmine.createSpyObj(['searchUsers', 'deleteUser'])
service = jasmine.createSpyObj(['searchUsers', 'deleteUser']);
component = new DeleteUserComponent(service);
});
......@@ -37,16 +36,16 @@ describe('DeleteUserComponent', () => {
});
it('should searchUsers', () => {
let searchString = "paula"
service.searchUsers.and.returnValue(of(USERS.filter(item => item.email.indexOf(searchString) !== -1)));
let searchString = 'paula';
service.searchUsers.and.returnValue(of(USERS.filter((item) => item.email.indexOf(searchString) !== -1)));
component.users = USERS;
component.searchUsers(searchString);
expect(component.users.length).toBe(1);
});
it('should searchUsers all users', () => {
let searchString = ""
service.searchUsers.and.returnValue(of(USERS.filter(item => item.email.indexOf(searchString) !== -1)));
let searchString = '';
service.searchUsers.and.returnValue(of(USERS.filter((item) => item.email.indexOf(searchString) !== -1)));
component.users = USERS;
component.searchUsers(searchString);
expect(component.users.length).toBe(USERS.length);
......@@ -54,7 +53,14 @@ describe('DeleteUserComponent', () => {
it('should delete user', () => {
component.users = USERS;
service.deleteUser.and.returnValue(of(USERS.splice(USERS.findIndex(e => e.email === USERS[0].email),1)));
service.deleteUser.and.returnValue(
of(
USERS.splice(
USERS.findIndex((e) => e.email === USERS[0].email),
1
)
)
);
component.deleteUser(component.users[0]);
expect(component.users.length).toBe(2);
});
......
......@@ -3,7 +3,7 @@
<div fxLayout="row" fxLayoutGap="20px" fxLayoutAlign="center center">
<button (click)="changeActiveFeature(features.pendingStructures)">Gestion structure</button>
<button (click)="changeActiveFeature(features.deleteUsers)">Suppression d'utilisateurs</button>
<button routerLink="/blog/ghost/">Ghost</button>
<a target="_blank" class="custom-link" rel="noopener noreferrer" [href]="ghostLink">Ghost</a>
</div>
<div *ngIf="selectedFeature === features.deleteUsers">
<app-admin-delete-user></app-admin-delete-user>
......
import { Component, OnInit } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { environment } from '../../../../environments/environment';
import { AdminPannelEnum } from '../../../shared/enum/adminPanel.enum';
@Component({
......@@ -7,14 +7,15 @@ import { AdminPannelEnum } from '../../../shared/enum/adminPanel.enum';
templateUrl: './panel.component.html',
})
export class PanelComponent implements OnInit {
public features = AdminPannelEnum;
public ghostLink = environment.ghostAdmin;
public selectedFeature;
constructor() {}
ngOnInit(): void {
this.selectedFeature = this.features.pendingStructures;
console.log(this.ghostLink);
}
public changeActiveFeature(newFeature: AdminPannelEnum) {
......
import { HttpClient } from '@angular/common/http';
import { stringify } from '@angular/compiler/src/util';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { User } from '../../models/user.model';
......@@ -24,7 +23,6 @@ export class AdminService {
public searchUsers(searchString: string): Observable<User[]> {
return this.http.post<User[]>(`api/admin/searchUsers`, { searchString });
}
public deleteUser(id: string): Observable<User> {
return this.http.delete<User>(`api/admin/user/` + id);
......
......@@ -1144,7 +1144,7 @@
<button
*ngIf="currentPage == nbPagesForm && !profile"
class="btn-primary validate unique"
routerLink="/home"
routerLink="/acteurs"
[routerLinkActive]="'active'"
>
Ok
......@@ -1152,7 +1152,7 @@
<button
*ngIf="currentPage == nbPagesForm && profile"
class="btn-primary unique"
routerLink="/home"
routerLink="/acteurs"
[queryParams]="{ id: createdStructure._id }"
[state]="{ data: createdStructure }"
>
......@@ -1187,7 +1187,7 @@
<button
*ngIf="currentPage == nbPagesForm && !profile"
class="btn-primary validate unique"
routerLink="/home"
routerLink="/acteurs"
[routerLinkActive]="'active'"
>
Ok
......@@ -1195,7 +1195,7 @@
<button
*ngIf="currentPage == nbPagesForm && profile"
class="btn-primary unique"
routerLink="/home"
routerLink="/acteurs"
[queryParams]="{ id: createdStructure._id }"
[state]="{ data: createdStructure }"
>
......
......@@ -855,10 +855,10 @@ export class FormComponent implements OnInit {
}
private createStructure(structure: Structure, user: User): void {
this.structureService.createStructure(structure, user).subscribe((structure) => {
this.structureService.createStructure(structure, user).subscribe((newStructure) => {
this.currentPage++;
this.progressStatus += 100 / this.nbPagesForm;
this.createdStructure = structure;
this.createdStructure = newStructure;
});
}
public toggleMenu(): void {
......
......@@ -10,7 +10,7 @@
</div>
<div fxLayout="row" class="right-header" fxLayoutAlign="center center" fxLayoutGap="3vw">
<a routerLink="/news" [routerLinkActive]="'active'" i18n>Actualités</a>
<a routerLink="/acteurs" [routerLinkActive]="'active'" i18n>Cartographie de acteurs</a>
<a routerLink="/acteurs" [routerLinkActive]="'active'" i18n>Cartographie des acteurs</a>
<a routerLink="/about" [routerLinkActive]="'active'" i18n>Qui sommes-nous ?</a>
<a *ngIf="isAdmin" routerLink="/admin" [routerLinkActive]="'active'">Administration</a>
<button *ngIf="isLoggedIn" class="red" routerLink="/profile" [routerLinkActive]="'active'">
......@@ -29,7 +29,7 @@
</div>
<div fxLayout="column" class="right-header" fxLayoutAlign="none baseline" fxLayoutGap="5vw">
<a routerLink="/news" [routerLinkActive]="'active'" (click)="closeMenu()" i18n>Actualités</a>
<a routerLink="/home" [routerLinkActive]="'active'" (click)="closeMenu()" i18n>Cartographie de acteurs</a>
<a routerLink="/acteurs" [routerLinkActive]="'active'" (click)="closeMenu()" i18n>Cartographie de acteurs</a>
<a routerLink="/about" [routerLinkActive]="'active'" i18n>Qui sommes-nous ?</a>
<a *ngIf="isAdmin" routerLink="/admin" [routerLinkActive]="'active'" (click)="closeMenu()">Administration</a>
</div>
......
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { Tag } from '../../models/tag.model';
import { TagWithMeta } from '../../models/tagWithMeta.model';
import * as _ from 'lodash';
import { TypeModalNews } from '../../enum/typeModalNews.enum';
import { ActivatedRoute, Router } from '@angular/router';
import { TagEnum } from '../../enum/tag.enum';
......@@ -28,7 +27,9 @@ export class PostHeaderComponent implements OnInit {
if (data.tags) {
this.tags = data.tags;
this.tags.others.forEach((tag) => {
tag.slug == TagEnum.aLaUne ? (tag.name = 'Les + récentes') : tag.name;
if (tag.slug == TagEnum.aLaUne) {
tag.name = 'Les + récentes';
}
});
this.tags.commune.sort((tagA, tagB) => {
return this.sortArray(tagA, tagB);
......@@ -107,7 +108,7 @@ export class PostHeaderComponent implements OnInit {
}
private setQueryParam(): void {
this.router.navigate([], {
this.router.navigate(['/news'], {
relativeTo: this.route,
queryParams: {
mainTag: this.mainActiveTag.slug == this.tagEnum.etudes ? this.mainActiveTag.name : this.mainActiveTag.slug,
......
......@@ -48,7 +48,7 @@ export class PostListComponent implements OnInit {
this.isLoading = true;
// Init APP news list
this.postService.getPosts(1, [TagEnum.appels]).subscribe((news) => {
let projectNews = news.posts.map((news) => (news = this.addAuthorToPost(news)));
let projectNews = news.posts.map((newsData) => this.addAuthorToPost(newsData));
this.projectsNew = projectNews;
});
this.postService.getPosts(1, [TagEnum.aLaUne]).subscribe((news) => {
......
<app-post-header (filterTags)="setFilters($event)"></app-post-header>
<div class="section-container">
<!-- <app-post-list [filters]="filters"></app-post-list> -->
<router-outlet></router-outlet>
</div>
......@@ -4,7 +4,6 @@ import { Tag } from './models/tag.model';
@Component({
selector: 'app-news',
templateUrl: './news.component.html',
styleUrls: ['./news.component.scss'],
})
export class NewsComponent implements OnInit {
public filters: Tag[];
......
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';
import { Resolve, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { TagWithMeta } from '../models/tagWithMeta.model';
......
......@@ -5,7 +5,6 @@ import { map } from 'rxjs/operators';
import { Post } from '../models/post.model';
import { TagEnum } from '../enum/tag.enum';
import { PostWithMeta } from '../models/postWithMeta.model';
import { Tag } from '../models/tag.model';
import { TagWithMeta } from '../models/tagWithMeta.model';
@Injectable({
......@@ -18,9 +17,7 @@ export class PostService {
public getPost(idPost: string): Observable<PostWithMeta> {
return this.http.get<PostWithMeta>(`${this.baseUrl}/` + idPost).pipe(
map((item: PostWithMeta) => {
item.posts.forEach((post) => {
post = this.addAuthorToPost(post);
});
item.posts.forEach((post) => this.addAuthorToPost(post));
return new PostWithMeta(item);
})
);
......
......@@ -28,7 +28,7 @@
<div class="structureCard" *ngFor="let s of structures; let i = index">
<div class="structureInfo" fxLayout="column" fxLayoutGap="14px">
<div fxLayout="row" fxLayoutAlign="space-between start" fxLayoutGap="20px">
<a class="structureName" routerLink="/home" [state]="{ data: s.structure }">{{
<a class="structureName" routerLink="/acteurs" [state]="{ data: s.structure }">{{
s.structure.structureName
}}</a>
<app-structure-options-modal [structure]="s" (closed)="ngOnInit()"></app-structure-options-modal>
......
......@@ -20,10 +20,10 @@ export class StructureJoinComponent implements OnInit {
.validateStructureJoin(params.get('id'), params.get('userId'), params.get('status') === 'true' ? true : false)
.subscribe(
(res) => {
this.router.navigateByUrl('/home');
this.router.navigateByUrl('/acteurs');
},
(err) => {
this.router.navigateByUrl('/home');
this.router.navigateByUrl('/acteurs');
}
);
}
......
......@@ -24,10 +24,6 @@
@include cn-bold-18;
padding-bottom: 5px;
width: 100%;
text-transform: lowercase;
&::first-letter {
text-transform: uppercase;
}
}
.distanceStructure {
@include cn-regular-16;
......