2017-09-20 14:31:06 +03:00
|
|
|
import { Component, HostBinding, OnDestroy } from '@angular/core';
|
2017-09-12 19:22:10 +03:00
|
|
|
import { NbThemeService, NbMediaBreakpoint, NbMediaBreakpointsService } from '@nebular/theme';
|
2017-07-06 19:10:31 +03:00
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'ngx-rooms',
|
|
|
|
|
styleUrls: ['./rooms.component.scss'],
|
|
|
|
|
template: `
|
2017-09-13 17:44:33 +03:00
|
|
|
<nb-card [size]="breakpoint.width >= breakpoints.sm ? 'large' : 'medium'">
|
|
|
|
|
<i (click)="collapse()" class="nb-arrow-down collapse" [hidden]="isCollapsed()"></i>
|
2017-08-06 15:51:07 +03:00
|
|
|
<ngx-room-selector (select)="select($event)"></ngx-room-selector>
|
2017-09-12 19:22:10 +03:00
|
|
|
<ngx-player [collapsed]="isCollapsed() && breakpoint.width <= breakpoints.md"></ngx-player>
|
2017-08-01 17:42:21 +03:00
|
|
|
</nb-card>
|
2017-07-06 19:10:31 +03:00
|
|
|
`,
|
|
|
|
|
})
|
2017-09-20 14:31:06 +03:00
|
|
|
export class RoomsComponent implements OnDestroy {
|
2017-08-06 15:51:07 +03:00
|
|
|
|
|
|
|
|
@HostBinding('class.expanded')
|
|
|
|
|
private expanded: boolean;
|
|
|
|
|
private selected: number;
|
|
|
|
|
|
2017-09-12 19:22:10 +03:00
|
|
|
breakpoint: NbMediaBreakpoint;
|
|
|
|
|
breakpoints: any;
|
2017-09-20 14:31:06 +03:00
|
|
|
themeSubscription: any;
|
2017-09-12 19:22:10 +03:00
|
|
|
|
|
|
|
|
constructor(private themeService: NbThemeService,
|
|
|
|
|
private breakpointService: NbMediaBreakpointsService) {
|
|
|
|
|
|
2017-12-01 18:36:24 +03:00
|
|
|
this.breakpoints = this.breakpointService.getBreakpointsMap();
|
|
|
|
|
this.themeSubscription = this.themeService.onMediaQueryChange()
|
2017-09-12 19:22:10 +03:00
|
|
|
.subscribe(([oldValue, newValue]) => {
|
|
|
|
|
this.breakpoint = newValue;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-06 15:51:07 +03:00
|
|
|
select(roomNumber) {
|
|
|
|
|
if (this.isSelected(roomNumber)) {
|
|
|
|
|
this.expand();
|
|
|
|
|
} else {
|
|
|
|
|
this.collapse();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.selected = roomNumber;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
expand() {
|
|
|
|
|
this.expanded = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
collapse() {
|
|
|
|
|
this.expanded = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isCollapsed() {
|
|
|
|
|
return !this.expanded;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private isSelected(roomNumber): boolean {
|
|
|
|
|
return this.selected === roomNumber;
|
|
|
|
|
}
|
2017-09-20 14:31:06 +03:00
|
|
|
|
|
|
|
|
ngOnDestroy() {
|
|
|
|
|
this.themeSubscription.unsubscribe();
|
|
|
|
|
}
|
2017-07-06 19:10:31 +03:00
|
|
|
}
|