show next song in page view
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
"indexes": "firestore.indexes.json"
|
"indexes": "firestore.indexes.json"
|
||||||
},
|
},
|
||||||
"hosting": {
|
"hosting": {
|
||||||
"public": "dist/wgenerator",
|
"public": "dist/wgenerator/browser",
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"firebase.json",
|
"firebase.json",
|
||||||
"**/.*",
|
"**/.*",
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
[showText]="true"
|
[showText]="true"
|
||||||
[show]="show"
|
[show]="show"
|
||||||
></app-song>
|
></app-song>
|
||||||
|
<div class="next-song" *ngIf="getNextSong(orderedShowSongs(show), i) as next">{{next}}<fa-icon [icon]="faNextSong"></fa-icon></div>
|
||||||
</swiper-slide>
|
</swiper-slide>
|
||||||
</swiper-container>
|
</swiper-container>
|
||||||
|
|
||||||
|
|||||||
@@ -49,3 +49,14 @@
|
|||||||
top: 12px;
|
top: 12px;
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.next-song {
|
||||||
|
color: #0008;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
right: 10px;
|
||||||
|
|
||||||
|
fa-icon {
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,14 +13,15 @@ import {
|
|||||||
faArrowUpRightFromSquare,
|
faArrowUpRightFromSquare,
|
||||||
faBox,
|
faBox,
|
||||||
faBoxOpen,
|
faBoxOpen,
|
||||||
faExternalLinkAlt,
|
faChevronRight,
|
||||||
faFile,
|
faFile,
|
||||||
faFileDownload,
|
faFileDownload,
|
||||||
faFileLines,
|
faFileLines,
|
||||||
faLock,
|
faLock,
|
||||||
faMagnifyingGlassMinus,
|
faMagnifyingGlassMinus,
|
||||||
faMagnifyingGlassPlus,
|
faMagnifyingGlassPlus,
|
||||||
faSliders, faUnlock,
|
faSliders,
|
||||||
|
faUnlock,
|
||||||
faUser,
|
faUser,
|
||||||
faUsers,
|
faUsers,
|
||||||
} from '@fortawesome/free-solid-svg-icons';
|
} from '@fortawesome/free-solid-svg-icons';
|
||||||
@@ -61,6 +62,7 @@ export class ShowComponent implements OnInit, OnDestroy {
|
|||||||
public textSize = 1;
|
public textSize = 1;
|
||||||
public faFileLines = faFileLines;
|
public faFileLines = faFileLines;
|
||||||
public faFile = faFile;
|
public faFile = faFile;
|
||||||
|
public faNextSong = faChevronRight;
|
||||||
private subs: Subscription[] = [];
|
private subs: Subscription[] = [];
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
@@ -198,6 +200,12 @@ export class ShowComponent implements OnInit, OnDestroy {
|
|||||||
if (useSwiper) openFullscreen();
|
if (useSwiper) openFullscreen();
|
||||||
else closeFullscreen();
|
else closeFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getNextSong(showSongs: ShowSong[], i: number): string {
|
||||||
|
if (!showSongs || showSongs.length === 0) return '';
|
||||||
|
const song = showSongs[i + 1];
|
||||||
|
return song?.title ?? '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Swiper {
|
export interface Swiper {
|
||||||
|
|||||||
@@ -24,8 +24,9 @@
|
|||||||
*ngFor="let line of getLines(section)"
|
*ngFor="let line of getLines(section)"
|
||||||
[class.chord]="line.type === 0"
|
[class.chord]="line.type === 0"
|
||||||
[class.disabled]="checkDisabled(i)"
|
[class.disabled]="checkDisabled(i)"
|
||||||
|
[class.comment]="isComment(line.text)"
|
||||||
class="line"
|
class="line"
|
||||||
>{{ line.text }}
|
>{{ transform(line.text) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="sections.length===0" class="error">
|
<div *ngIf="sections.length===0" class="error">
|
||||||
|
|||||||
@@ -72,3 +72,10 @@
|
|||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.comment {
|
||||||
|
color: #00b;
|
||||||
|
border-left: 2px solid #00b;
|
||||||
|
padding-left: 6px;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|||||||
@@ -124,4 +124,13 @@ export class SongTextComponent implements OnInit {
|
|||||||
return 'show';
|
return 'show';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public transform(text: string): string {
|
||||||
|
if (this.isComment(text)) text = text.slice(1);
|
||||||
|
return text.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public isComment(text: string) {
|
||||||
|
return text.startsWith('#');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,5 @@
|
|||||||
@use '@angular/material' as mat;
|
@use '@angular/material' as mat;
|
||||||
|
|
||||||
// Custom Theming for Angular Material
|
|
||||||
// For more information: https://material.angular.io/guide/theming
|
|
||||||
// Plus imports for other components in your app.
|
|
||||||
|
|
||||||
// Include the common styles for Angular Material. We include this here so that you only
|
|
||||||
// have to load a single css file for Angular Material in your app.
|
|
||||||
// Be sure that you only ever include this mixin once!
|
|
||||||
// TODO(v15): As of v15 mat.legacy-core no longer includes default typography styles.
|
|
||||||
// The following line adds:
|
|
||||||
// 1. Default typography styles for all components
|
|
||||||
// 2. Styles for typography hierarchy classes (e.g. .mat-headline-1)
|
|
||||||
// If you specify typography styles for the components you use elsewhere, you should delete this line.
|
|
||||||
// If you don't need the default component typographies but still want the hierarchy styles,
|
|
||||||
// you can delete this line and instead use:
|
|
||||||
// `@include mat.legacy-typography-hierarchy(mat.define-typography-config());`
|
|
||||||
@include mat.all-component-typographies();
|
|
||||||
@include mat.elevation-classes();
|
|
||||||
@include mat.app-background();
|
|
||||||
|
|
||||||
// Define the palettes for your theme using the Material Design palettes available in palette.scss
|
|
||||||
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
|
|
||||||
// hue. Available color palettes: https://material.io/design/color/
|
|
||||||
$wgenerator-primary: mat.m2-define-palette(mat.$m2-indigo-palette);
|
|
||||||
$wgenerator-accent: mat.m2-define-palette(mat.$m2-pink-palette, A200, A100, A400);
|
|
||||||
|
|
||||||
// The warn palette is optional (defaults to red).
|
|
||||||
$wgenerator-warn: mat.m2-define-palette(mat.$m2-red-palette);
|
|
||||||
|
|
||||||
// Create the theme object (a Sass map containing all of the palettes).
|
|
||||||
$wgenerator-theme: mat.m2-define-light-theme($wgenerator-primary, $wgenerator-accent, $wgenerator-warn);
|
|
||||||
|
|
||||||
// Include theme styles for core and each component used in your app.
|
|
||||||
// Alternatively, you can import and @include the theme mixins for each component
|
|
||||||
// that you are using.
|
|
||||||
@include mat.all-component-themes($wgenerator-theme);
|
|
||||||
|
|
||||||
|
|
||||||
// Custom Theming for Angular Material
|
// Custom Theming for Angular Material
|
||||||
|
|||||||
Reference in New Issue
Block a user