* team filter added to slide list
This commit is contained in:
parent
47eaae25d7
commit
acd949b538
@ -45,6 +45,7 @@ const routes: Routes = [
|
|||||||
// canActivate: [AuthGuardService, RoleGuardService],
|
// canActivate: [AuthGuardService, RoleGuardService],
|
||||||
resolve: {
|
resolve: {
|
||||||
slides: SlideService,
|
slides: SlideService,
|
||||||
|
teams: TeamService,
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
path: 'admin/slide/new',
|
path: 'admin/slide/new',
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
.ui.right.floated.selection {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
@ -4,6 +4,16 @@
|
|||||||
[routerLink]="['/admin/slide/new']"><i class="plus sign icon"></i>New slide</a>
|
[routerLink]="['/admin/slide/new']"><i class="plus sign icon"></i>New slide</a>
|
||||||
<a class="ui button"
|
<a class="ui button"
|
||||||
[routerLink]="['/dashboard']"><i class="left angle icon"></i>Back to dashboard</a>
|
[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">
|
<table *ngIf="slides?.length" class="ui large padded celled definition table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@ -13,6 +13,10 @@ import { Team } from '../../shared/team';
|
|||||||
})
|
})
|
||||||
export class SlideListComponent implements OnInit {
|
export class SlideListComponent implements OnInit {
|
||||||
|
|
||||||
|
public teams: Array<Team> = [];
|
||||||
|
public emptyTeam: Team = new Team();
|
||||||
|
public selectedTeam: Team = this.emptyTeam;
|
||||||
|
|
||||||
constructor(private slideService: SlideService,
|
constructor(private slideService: SlideService,
|
||||||
private titleService: Title,
|
private titleService: Title,
|
||||||
private route: ActivatedRoute) {
|
private route: ActivatedRoute) {
|
||||||
@ -20,11 +24,22 @@ export class SlideListComponent implements OnInit {
|
|||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.titleService.setTitle('Slides : MTAStv');
|
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> {
|
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>) {
|
set slides(slides: Array<Slide>) {
|
||||||
@ -37,13 +52,17 @@ export class SlideListComponent implements OnInit {
|
|||||||
|
|
||||||
public moveUp(slide: Slide) {
|
public moveUp(slide: Slide) {
|
||||||
if (!this.isFirstSlide(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) {
|
public moveDown(slide: Slide) {
|
||||||
if (!this.isLastSlide(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) {
|
public isFirstSlide(slide: Slide) {
|
||||||
return slide.position === 0;
|
return this.slides.indexOf(slide) === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public isLastSlide(slide: Slide) {
|
public isLastSlide(slide: Slide) {
|
||||||
return slide.position === this.slides.length - 1;
|
return this.slides.indexOf(slide) === this.slides.length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public visibleClass(slide: Slide) {
|
public visibleClass(slide: Slide) {
|
||||||
|
|||||||
@ -39,12 +39,8 @@ export class SlideService implements Resolve<Array<Slide>>{
|
|||||||
: this.update(slide);
|
: this.update(slide);
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveUp(slide: Slide): Observable<Array<Slide>> {
|
public moveTo(slide: Slide, position: number): Observable<Array<Slide>> {
|
||||||
return this.changePosition(slide, slide.position - 1);
|
return this.changePosition(slide, position);
|
||||||
}
|
|
||||||
|
|
||||||
public moveDown(slide: Slide): Observable<Array<Slide>> {
|
|
||||||
return this.changePosition(slide, slide.position + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public create(slide: Slide): Observable<Slide> {
|
public create(slide: Slide): Observable<Slide> {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user