From acd949b538fad3c88933faefd11870c134356791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Danyi?= Date: Mon, 23 Apr 2018 16:22:24 +0200 Subject: [PATCH] * team filter added to slide list --- src/app/admin/admin-routing.module.ts | 1 + .../admin/slide-list/slide-list.component.css | 3 ++ .../slide-list/slide-list.component.html | 10 ++++++ .../admin/slide-list/slide-list.component.ts | 31 +++++++++++++++---- src/app/shared/service/slide.service.ts | 8 ++--- 5 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/app/admin/admin-routing.module.ts b/src/app/admin/admin-routing.module.ts index 8150c0f..641706c 100644 --- a/src/app/admin/admin-routing.module.ts +++ b/src/app/admin/admin-routing.module.ts @@ -45,6 +45,7 @@ const routes: Routes = [ // canActivate: [AuthGuardService, RoleGuardService], resolve: { slides: SlideService, + teams: TeamService, } }, { path: 'admin/slide/new', diff --git a/src/app/admin/slide-list/slide-list.component.css b/src/app/admin/slide-list/slide-list.component.css index e69de29..4227dff 100644 --- a/src/app/admin/slide-list/slide-list.component.css +++ b/src/app/admin/slide-list/slide-list.component.css @@ -0,0 +1,3 @@ +.ui.right.floated.selection { + float: right; +} diff --git a/src/app/admin/slide-list/slide-list.component.html b/src/app/admin/slide-list/slide-list.component.html index 26dd9c2..bf18838 100644 --- a/src/app/admin/slide-list/slide-list.component.html +++ b/src/app/admin/slide-list/slide-list.component.html @@ -4,6 +4,16 @@ [routerLink]="['/admin/slide/new']">New slide Back to dashboard + + + + diff --git a/src/app/admin/slide-list/slide-list.component.ts b/src/app/admin/slide-list/slide-list.component.ts index 418ad8b..fb3bbea 100644 --- a/src/app/admin/slide-list/slide-list.component.ts +++ b/src/app/admin/slide-list/slide-list.component.ts @@ -13,6 +13,10 @@ import { Team } from '../../shared/team'; }) export class SlideListComponent implements OnInit { + public teams: Array = []; + public emptyTeam: Team = new Team(); + public selectedTeam: Team = this.emptyTeam; + constructor(private slideService: SlideService, private titleService: Title, private route: ActivatedRoute) { @@ -20,11 +24,22 @@ export class SlideListComponent implements OnInit { ngOnInit() { this.titleService.setTitle('Slides : MTAStv'); - this.route.data.subscribe((data: {slides: Array}) => this.slides = data.slides); + this.emptyTeam.name = 'All teams'; + this.route.data.subscribe((data: { + slides: Array, + teams: Array + }) => { + this.slides = data.slides; + this.teams = data.teams; + }); } get slides(): Array { - return this.slideService.slides; + return this.selectedTeam === this.emptyTeam + ? this.slideService.slides + : this.slideService.slides.filter( + slide => slide.team == null || slide.team.id === this.selectedTeam.id + ); } set slides(slides: Array) { @@ -37,13 +52,17 @@ export class SlideListComponent implements OnInit { public moveUp(slide: Slide) { if (!this.isFirstSlide(slide)) { - this.slideService.moveUp(slide).subscribe(slides => this.slides = slides); + const slidePosition = this.slides.indexOf(slide); + this.slideService.moveTo(slide, this.slides[slidePosition - 1].position) + .subscribe(slides => this.slides = slides); } } public moveDown(slide: Slide) { if (!this.isLastSlide(slide)) { - this.slideService.moveDown(slide).subscribe(slides => this.slides = slides); + const slidePosition = this.slides.indexOf(slide); + this.slideService.moveTo(slide, this.slides[slidePosition + 1].position) + .subscribe(slides => this.slides = slides); } } @@ -74,11 +93,11 @@ export class SlideListComponent implements OnInit { } public isFirstSlide(slide: Slide) { - return slide.position === 0; + return this.slides.indexOf(slide) === 0; } public isLastSlide(slide: Slide) { - return slide.position === this.slides.length - 1; + return this.slides.indexOf(slide) === this.slides.length - 1; } public visibleClass(slide: Slide) { diff --git a/src/app/shared/service/slide.service.ts b/src/app/shared/service/slide.service.ts index e5b8ffa..c3495ba 100644 --- a/src/app/shared/service/slide.service.ts +++ b/src/app/shared/service/slide.service.ts @@ -39,12 +39,8 @@ export class SlideService implements Resolve>{ : this.update(slide); } - public moveUp(slide: Slide): Observable> { - return this.changePosition(slide, slide.position - 1); - } - - public moveDown(slide: Slide): Observable> { - return this.changePosition(slide, slide.position + 1); + public moveTo(slide: Slide, position: number): Observable> { + return this.changePosition(slide, position); } public create(slide: Slide): Observable {