From b8fbcb4b9aa3266e72fa90934e4341151131e4c6 Mon Sep 17 00:00:00 2001 From: smuddyx Date: Wed, 1 Apr 2020 15:52:21 +0200 Subject: [PATCH] presentation zoom and legal info --- .../monitor/legal/legal.component.html | 14 +++++++++++ .../monitor/legal/legal.component.less | 10 ++++++++ .../monitor/legal/legal.component.spec.ts | 25 +++++++++++++++++++ .../monitor/legal/legal.component.ts | 11 ++++++++ .../monitor/monitor.component.html | 3 ++- .../monitor/monitor.component.less | 5 +++- .../presentation/monitor/monitor.component.ts | 2 ++ .../presentation/presentation.module.ts | 9 +++++-- .../presentation/remote/remote.component.html | 15 +++++++++-- .../presentation/remote/remote.component.ts | 24 ++++++++++++++++-- src/app/modules/shows/services/show.ts | 1 + 11 files changed, 111 insertions(+), 8 deletions(-) create mode 100644 src/app/modules/presentation/monitor/legal/legal.component.html create mode 100644 src/app/modules/presentation/monitor/legal/legal.component.less create mode 100644 src/app/modules/presentation/monitor/legal/legal.component.spec.ts create mode 100644 src/app/modules/presentation/monitor/legal/legal.component.ts diff --git a/src/app/modules/presentation/monitor/legal/legal.component.html b/src/app/modules/presentation/monitor/legal/legal.component.html new file mode 100644 index 0000000..9bd9a5e --- /dev/null +++ b/src/app/modules/presentation/monitor/legal/legal.component.html @@ -0,0 +1,14 @@ +
+

CCLI-Liednummer {{song.legalOwnerId}}

+

Liednummer {{song.legalOwnerId}}

+
+ +

{{song.artist}}

+

{{song.label}}

+

{{song.termsOfUse}}

+

{{song.origin}}

+ +
+

CCLI-Lizenznummer {{song.legalLicenseId}}

+

Lizenznummer {{song.legalLicenseId}}

+
diff --git a/src/app/modules/presentation/monitor/legal/legal.component.less b/src/app/modules/presentation/monitor/legal/legal.component.less new file mode 100644 index 0000000..cb8839f --- /dev/null +++ b/src/app/modules/presentation/monitor/legal/legal.component.less @@ -0,0 +1,10 @@ +p { + font-size: 15px; + margin: 10px 0 0 0; + + &.terms-of-use { + font-size: 13px; + font-style: italic; + margin: 0; + } +} diff --git a/src/app/modules/presentation/monitor/legal/legal.component.spec.ts b/src/app/modules/presentation/monitor/legal/legal.component.spec.ts new file mode 100644 index 0000000..2489fd0 --- /dev/null +++ b/src/app/modules/presentation/monitor/legal/legal.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {LegalComponent} from './legal.component'; + +describe('LegalComponent', () => { + let component: LegalComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [LegalComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LegalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/modules/presentation/monitor/legal/legal.component.ts b/src/app/modules/presentation/monitor/legal/legal.component.ts new file mode 100644 index 0000000..26c2738 --- /dev/null +++ b/src/app/modules/presentation/monitor/legal/legal.component.ts @@ -0,0 +1,11 @@ +import {Component, Input} from '@angular/core'; +import {Song} from '../../../songs/services/song'; + +@Component({ + selector: 'app-legal', + templateUrl: './legal.component.html', + styleUrls: ['./legal.component.less'] +}) +export class LegalComponent { + @Input() public song: Song; +} diff --git a/src/app/modules/presentation/monitor/monitor.component.html b/src/app/modules/presentation/monitor/monitor.component.html index 43cc45b..98a0ed2 100644 --- a/src/app/modules/presentation/monitor/monitor.component.html +++ b/src/app/modules/presentation/monitor/monitor.component.html @@ -1,5 +1,6 @@ -
+
+
diff --git a/src/app/modules/presentation/monitor/monitor.component.less b/src/app/modules/presentation/monitor/monitor.component.less index a6eca77..db62d57 100644 --- a/src/app/modules/presentation/monitor/monitor.component.less +++ b/src/app/modules/presentation/monitor/monitor.component.less @@ -10,5 +10,8 @@ padding: 50px; color: white; - font-size: 30px; + + display: flex; + flex-direction: column; + justify-content: space-between; } diff --git a/src/app/modules/presentation/monitor/monitor.component.ts b/src/app/modules/presentation/monitor/monitor.component.ts index 063340c..344f0d4 100644 --- a/src/app/modules/presentation/monitor/monitor.component.ts +++ b/src/app/modules/presentation/monitor/monitor.component.ts @@ -14,6 +14,7 @@ import {Song} from '../../songs/services/song'; export class MonitorComponent implements OnInit { public song: Song; private index: number; + private zoom: number; private sections: Section[]; constructor( @@ -29,6 +30,7 @@ export class MonitorComponent implements OnInit { map(_ => _.showId), switchMap(_ => this.showService.read$(_)), tap(_ => this.index = _.presentationSection), + tap(_ => this.zoom = _.presentationZoom ?? 30), switchMap(_ => this.songService.read(_.presentationSongId)) ).subscribe(_ => { this.song = _; diff --git a/src/app/modules/presentation/presentation.module.ts b/src/app/modules/presentation/presentation.module.ts index 0efce3c..d2e5998 100644 --- a/src/app/modules/presentation/presentation.module.ts +++ b/src/app/modules/presentation/presentation.module.ts @@ -10,10 +10,13 @@ import {MatSelectModule} from '@angular/material/select'; import {ShowTypeTranslaterModule} from '../../widget-modules/pipes/show-type-translater/show-type-translater.module'; import {SectionTypeTranslatorModule} from '../../widget-modules/pipes/section-type-translator/section-type-translator.module'; import {SongTextModule} from '../../widget-modules/components/song-text/song-text.module'; +import {LegalComponent} from './monitor/legal/legal.component'; +import {MatButtonModule} from '@angular/material/button'; +import {FontAwesomeModule} from '@fortawesome/angular-fontawesome'; @NgModule({ - declarations: [MonitorComponent, RemoteComponent], + declarations: [MonitorComponent, RemoteComponent, LegalComponent], imports: [ CommonModule, PresentationRoutingModule, @@ -22,7 +25,9 @@ import {SongTextModule} from '../../widget-modules/components/song-text/song-tex MatSelectModule, ShowTypeTranslaterModule, SectionTypeTranslatorModule, - SongTextModule + SongTextModule, + MatButtonModule, + FontAwesomeModule ] }) export class PresentationModule { diff --git a/src/app/modules/presentation/remote/remote.component.html b/src/app/modules/presentation/remote/remote.component.html index f65668d..9b48d65 100644 --- a/src/app/modules/presentation/remote/remote.component.html +++ b/src/app/modules/presentation/remote/remote.component.html @@ -11,7 +11,7 @@
{{song.title}}
-
+
@@ -21,8 +21,19 @@
- Presenter öffnen +
+ + + {{show.presentationZoom}}px + +
diff --git a/src/app/modules/presentation/remote/remote.component.ts b/src/app/modules/presentation/remote/remote.component.ts index 091df09..78e49ab 100644 --- a/src/app/modules/presentation/remote/remote.component.ts +++ b/src/app/modules/presentation/remote/remote.component.ts @@ -7,6 +7,9 @@ import {ShowSongService} from '../../shows/services/show-song.service'; import {SongService} from '../../songs/services/song.service'; import {Song} from '../../songs/services/song'; import {Section, TextRenderingService} from '../../songs/services/text-rendering.service'; +import {faSearchPlus} from '@fortawesome/free-solid-svg-icons/faSearchPlus'; +import {faSearchMinus} from '@fortawesome/free-solid-svg-icons/faSearchMinus'; +import {faDesktop} from '@fortawesome/free-solid-svg-icons/faDesktop'; export interface PresentationSong { id: string; @@ -21,11 +24,15 @@ export interface PresentationSong { }) export class RemoteComponent { public shows$: Observable; - public show$: Observable; + public show: Show; public songs: Song[]; public presentationSongs: PresentationSong[]; public currentShowId: string; + public faZoomIn = faSearchPlus; + public faZoomOut = faSearchMinus; + public faDesktop = faDesktop; + constructor( private showDataService: ShowDataService, private showSongService: ShowSongService, @@ -38,7 +45,7 @@ export class RemoteComponent { public onShowChanged(change: MatSelectChange): void { this.currentShowId = change.value; - this.show$ = this.showDataService.read$(change.value); + this.showDataService.read$(change.value).subscribe(_ => this.show = _); this.showSongService.list$(change.value).subscribe(_ => { this.presentationSongs = _ .map(song => this.songs.filter(f => f.id == song.songId)[0]) @@ -60,4 +67,17 @@ export class RemoteComponent { presentationSection: index }) } + + public async onZoomIn() { + debugger + await this.showDataService.update(this.currentShowId, { + presentationZoom: (this.show.presentationZoom ?? 30) + 2, + }); + } + + public async onZoomOut() { + await this.showDataService.update(this.currentShowId, { + presentationZoom: (this.show.presentationZoom ?? 30) - 2, + }); + } } diff --git a/src/app/modules/shows/services/show.ts b/src/app/modules/shows/services/show.ts index a7636d0..c95ed99 100644 --- a/src/app/modules/shows/services/show.ts +++ b/src/app/modules/shows/services/show.ts @@ -11,6 +11,7 @@ export interface Show { presentationSongId: string; presentationSection: number; + presentationZoom: number; }