* team filter added to slide list

This commit is contained in:
Dávid Danyi 2018-04-23 16:22:24 +02:00
parent 47eaae25d7
commit acd949b538
5 changed files with 41 additions and 12 deletions

View File

@ -45,6 +45,7 @@ const routes: Routes = [
// canActivate: [AuthGuardService, RoleGuardService],
resolve: {
slides: SlideService,
teams: TeamService,
}
}, {
path: 'admin/slide/new',

View File

@ -0,0 +1,3 @@
.ui.right.floated.selection {
float: right;
}

View File

@ -4,6 +4,16 @@
[routerLink]="['/admin/slide/new']"><i class="plus sign icon"></i>New slide</a>
<a class="ui button"
[routerLink]="['/dashboard']"><i class="left angle icon"></i>Back to dashboard</a>
<sui-select class="ui right floated selection"
id="team"
name="team"
[(ngModel)]="selectedTeam"
labelField="name"
[isSearchable]="true"
#select>
<sui-select-option [value]="emptyTeam"></sui-select-option>
<sui-select-option *ngFor="let team of teams" [value]="team"></sui-select-option>
</sui-select>
<table *ngIf="slides?.length" class="ui large padded celled definition table">
<thead>
<tr>

View File

@ -13,6 +13,10 @@ import { Team } from '../../shared/team';
})
export class SlideListComponent implements OnInit {
public teams: Array<Team> = [];
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<Slide>}) => this.slides = data.slides);
this.emptyTeam.name = 'All teams';
this.route.data.subscribe((data: {
slides: Array<Slide>,
teams: Array<Team>
}) => {
this.slides = data.slides;
this.teams = data.teams;
});
}
get slides(): Array<Slide> {
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<Slide>) {
@ -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) {

View File

@ -39,12 +39,8 @@ export class SlideService implements Resolve<Array<Slide>>{
: this.update(slide);
}
public moveUp(slide: Slide): Observable<Array<Slide>> {
return this.changePosition(slide, slide.position - 1);
}
public moveDown(slide: Slide): Observable<Array<Slide>> {
return this.changePosition(slide, slide.position + 1);
public moveTo(slide: Slide, position: number): Observable<Array<Slide>> {
return this.changePosition(slide, position);
}
public create(slide: Slide): Observable<Slide> {