ngx-admin/src/app/pages/dashboard/rooms/rooms.component.ts

78 lines
2.1 KiB
TypeScript
Raw Normal View History

import { Component, HostBinding, OnDestroy } from '@angular/core';
import { NbThemeService, NbMediaBreakpoint, NbMediaBreakpointsService } from '@nebular/theme';
2019-06-18 14:59:59 +03:00
import { map } from 'rxjs/operators';
2017-07-06 19:10:31 +03:00
@Component({
selector: 'ngx-rooms',
styleUrls: ['./rooms.component.scss'],
template: `
2019-06-21 12:33:10 +03:00
<nb-card [size]="breakpoint.width >= breakpoints.sm ? 'giant' : ''">
2019-06-18 14:59:59 +03:00
<nb-icon icon="arrow-ios-downward" pack="eva"
(click)="collapse()"
class="collapse"
[hidden]="isCollapsed()">
</nb-icon>
<ngx-room-selector [class.dark-background]="isDarkTheme" (select)="select($event)"></ngx-room-selector>
<ngx-player [collapsed]="isCollapsed() && breakpoint.width <= breakpoints.md"></ngx-player>
</nb-card>
2017-07-06 19:10:31 +03:00
`,
})
export class RoomsComponent implements OnDestroy {
2017-08-06 15:51:07 +03:00
@HostBinding('class.expanded')
private expanded: boolean;
private selected: number;
2019-06-18 14:59:59 +03:00
isDarkTheme: boolean;
breakpoint: NbMediaBreakpoint;
breakpoints: any;
themeSubscription: any;
2019-06-18 14:59:59 +03:00
themeChangeSubscription: any;
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()
2019-06-18 14:59:59 +03:00
.subscribe(([, newValue]) => {
this.breakpoint = newValue;
});
2019-06-18 14:59:59 +03:00
this.themeChangeSubscription = this.themeService.onThemeChange()
.pipe(map(({ name }) => name === 'cosmic' || name === 'dark'))
.subscribe((isDark: boolean) => this.isDarkTheme = isDark);
}
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;
}
ngOnDestroy() {
this.themeSubscription.unsubscribe();
2019-06-18 14:59:59 +03:00
this.themeChangeSubscription.unsubscribe();
}
2017-07-06 19:10:31 +03:00
}