diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 9b6c2a3..cccedd0 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -43,6 +43,8 @@ import { SlideListComponent } from './components/slides/slide-list/slide-list.co
import { SlideItemComponent } from './components/slides/slide-item/slide-item.component';
import { ServiceItemComponent } from './components/service/service-item/service-item.component';
import { ServiceListComponent } from './components/service/service-list/service-list.component';
+import { ChordViewItemComponent } from './components/chord-view/chord-view-item/chord-view-item.component';
+import { StageViewItemComponent } from './components/stage-view/stage-view-item/stage-view-item.component';
import { DisplayModeSelectorComponent } from './components/display-mode-selector/display-mode-selector.component';
@@ -51,6 +53,8 @@ import { DisplayModeSelectorComponent } from './components/display-mode-selector
AppComponent,
ChordViewComponent,
StageViewComponent,
+ StageViewItemComponent,
+ ChordViewItemComponent,
Nl2BrPipe,
MainViewComponent,
ChordProPipe,
diff --git a/src/app/components/chord-view/chord-view-item/chord-view-item.component.html b/src/app/components/chord-view/chord-view-item/chord-view-item.component.html
new file mode 100644
index 0000000..c666a35
--- /dev/null
+++ b/src/app/components/chord-view/chord-view-item/chord-view-item.component.html
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/app/components/chord-view/chord-view-item/chord-view-item.component.ts b/src/app/components/chord-view/chord-view-item/chord-view-item.component.ts
new file mode 100644
index 0000000..c8f49ee
--- /dev/null
+++ b/src/app/components/chord-view/chord-view-item/chord-view-item.component.ts
@@ -0,0 +1,22 @@
+import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
+import { Slide } from '../../../responses';
+
+@Component({
+ selector: 'app-chord-view-item',
+ templateUrl: './chord-view-item.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush
+})
+export class ChordViewItemComponent {
+ @Input() slide: Slide;
+ @Input() active = false;
+
+ chordproFormatted(slide: Slide): string {
+ if (!slide) {
+ return '';
+ }
+ let chordpro: string = slide.chords;
+ chordpro = chordpro.replace(/
/g, '\n');
+
+ return chordpro;
+ }
+}
diff --git a/src/app/components/chord-view/chord-view.component.html b/src/app/components/chord-view/chord-view.component.html
index e1ead8e..eae9fd1 100644
--- a/src/app/components/chord-view/chord-view.component.html
+++ b/src/app/components/chord-view/chord-view.component.html
@@ -4,14 +4,21 @@
{{ tag.text }}
diff --git a/src/app/components/chord-view/chord-view.component.ts b/src/app/components/chord-view/chord-view.component.ts
index 4d04be0..b3a253a 100644
--- a/src/app/components/chord-view/chord-view.component.ts
+++ b/src/app/components/chord-view/chord-view.component.ts
@@ -58,23 +58,12 @@ export class ChordViewComponent extends StageViewComponent {
const tmpTranspose = this.songTransposeMap.get(this.serviceItem.id);
this.transposeLevel = tmpTranspose;
this.openlpService.transposeSong(tmpTranspose).subscribe(transposedLyrics => {
- // Replace the chords in the currentSlides with the returned transposed chords
- if (transposedLyrics instanceof Array) {
- for (let i = 0; i < transposedLyrics.length; ++i) {
- this.currentSlides[i].chords = transposedLyrics[i].chords;
+ // Replace the chords in the currentSlides with the returned transposed chords
+ if (transposedLyrics instanceof Array) {
+ for (let i = 0; i < transposedLyrics.length; ++i) {
+ this.currentSlides[i] = {...this.currentSlides[i], chords: transposedLyrics[i].chords};
+ }
}
- }
});
}
-
-
- chordproFormatted(slide: Slide): string {
- if (!slide) {
- return '';
- }
- let chordpro: string = slide.chords;
- chordpro = chordpro.replace(/
/g, '\n');
-
- return chordpro;
- }
}
diff --git a/src/app/components/overlay.scss b/src/app/components/overlay.scss
index a620375..f71bc08 100644
--- a/src/app/components/overlay.scss
+++ b/src/app/components/overlay.scss
@@ -14,6 +14,27 @@
justify-content: flex-start;
flex-direction: row;
+ .active-slide-img {
+ /* properly size current slide thumbnail */
+ /* relative sizes might not work in real world */
+ /* If we get larger thumbnail sizes, we want to limit their size */
+ max-height: 75%;
+ min-height: 250px;
+ }
+ .active-slide-img-text {
+ font-size: 1.8rem;
+ }
+ .next-slides-img {
+ /* properly size thumbnail displayed in 2nd and subsequent slides */
+ /* If we get larger thumbnail sizes, we want to limit their size */
+ max-height: 20%;
+ min-height: 100px;
+ }
+
+ .next-slides-text {
+ font-size: 1.4rem;
+ }
+
&-content {
width: 100%;
max-width: 100%;
diff --git a/src/app/components/stage-view/stage-view-item/stage-view-item.component.html b/src/app/components/stage-view/stage-view-item/stage-view-item.component.html
new file mode 100644
index 0000000..67ec77a
--- /dev/null
+++ b/src/app/components/stage-view/stage-view-item/stage-view-item.component.html
@@ -0,0 +1,15 @@
+
+
+ {{slide?.text}}
+
+
+
+ {{ slide?.text }}
+
+
diff --git a/src/app/components/stage-view/stage-view-item/stage-view-item.component.ts b/src/app/components/stage-view/stage-view-item/stage-view-item.component.ts
new file mode 100644
index 0000000..634dda4
--- /dev/null
+++ b/src/app/components/stage-view/stage-view-item/stage-view-item.component.ts
@@ -0,0 +1,12 @@
+import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
+import { Slide } from '../../../responses';
+
+@Component({
+ selector: 'app-stage-view-item',
+ templateUrl: './stage-view-item.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush
+})
+export class StageViewItemComponent {
+ @Input() slide: Slide;
+ @Input() active = false;
+}
diff --git a/src/app/components/stage-view/stage-view.component.html b/src/app/components/stage-view/stage-view.component.html
index b443277..0567c3b 100644
--- a/src/app/components/stage-view/stage-view.component.html
+++ b/src/app/components/stage-view/stage-view.component.html
@@ -4,25 +4,9 @@
{{ tag.text }}
-
-
-
-
{{ currentSlides[activeSlide]?.text }}
-
-
- {{ currentSlides[activeSlide]?.text }}
-
-
+
-
-
-
-
{{ slide.text }}
-
-
- {{ slide.text }}
-
-
+
diff --git a/src/app/components/stage-view/stage-view.component.scss b/src/app/components/stage-view/stage-view.component.scss
index eb57666..e69de29 100644
--- a/src/app/components/stage-view/stage-view.component.scss
+++ b/src/app/components/stage-view/stage-view.component.scss
@@ -1,28 +0,0 @@
-.active-slide-img {
- /* properly size current slide thumbnail */
- /* relative sizes might not work in real world */
- /* If we get larger thumbnail sizes, we want to limit their size */
- max-height: 75%;
- min-height: 250px;
-}
-.active-slide-img-text {
- font-size: 1.8rem;
-}
-.next-slides-img {
- /* properly size thumbnail displayed in 2nd and subsequent slides */
- /* If we get larger thumbnail sizes, we want to limit their size */
- max-height: 20%;
- min-height: 100px;
-}
-
-.next-slides-text {
- font-size: 1.4rem;
-}
-
-.toolbar {
- .show-notes {
- &-disabled {
- background: white;
- }
- }
-}
diff --git a/src/app/components/stage-view/stage-view.component.ts b/src/app/components/stage-view/stage-view.component.ts
index 294b347..bf35ad4 100644
--- a/src/app/components/stage-view/stage-view.component.ts
+++ b/src/app/components/stage-view/stage-view.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { OpenLPService } from '../../openlp.service';
import { ServiceItem, Slide } from '../../responses';
@@ -10,7 +10,8 @@ interface Tag {
@Component({
selector: 'app-stage-view',
templateUrl: './stage-view.component.html',
- styleUrls: ['./stage-view.component.scss', '../overlay.scss']
+ styleUrls: ['./stage-view.component.scss', '../overlay.scss'],
+ encapsulation: ViewEncapsulation.None
})
export class StageViewComponent implements OnInit {
serviceItem: ServiceItem = null;