diff --git a/src/app/animations.ts b/src/app/animations.ts
index d3613cf..618905d 100644
--- a/src/app/animations.ts
+++ b/src/app/animations.ts
@@ -5,17 +5,13 @@ export const fade = [
trigger('fade', [
// the "in" style determines the "resting" state of the element when it is visible.
- state('in', style({opacity: 1, display: 'block', transform: 'translateY(0px)'})),
+ state('in', style({opacity: 1, transform: 'translateY(0px)'})),
// fade in when created. this could also be written as transition('void => *')
transition(':enter', [
- style({opacity: 0, display: 'block', transform: 'translateY(-20px)'}),
- animate(300)
+ style({opacity: 0, transform: 'translateY(-10px)'}),
+ animate(200)
]),
-
- // fade out when destroyed. this could also be written as transition('void => *')
- transition(':leave',
- animate(300, style({opacity: 0, display: 'block', transform: 'translateY(-20px)'})))
])
];
@@ -29,7 +25,7 @@ export const fader =
left: 0,
width: '100%',
opacity: 0,
- transform: 'scale(0.96) translateY(-10px)',
+ transform: 'scale(1) translateY(-10px)',
}),
], {optional: true}),
// Animate the new page in
diff --git a/src/app/modules/presentation/remote/remote.component.html b/src/app/modules/presentation/remote/remote.component.html
index 1630994..8ed66d4 100644
--- a/src/app/modules/presentation/remote/remote.component.html
+++ b/src/app/modules/presentation/remote/remote.component.html
@@ -1,9 +1,9 @@
- Es ist derzeit keine Veranstaltung vorhanden
+ Es ist derzeit keine Veranstaltung vorhanden
- 0" appearance="outline">
+ 0" @fade appearance="outline">
Veranstaltung
@@ -12,7 +12,7 @@
-
+
diff --git a/src/app/modules/presentation/remote/remote.component.ts b/src/app/modules/presentation/remote/remote.component.ts
index 2e6a0b9..c24ea94 100644
--- a/src/app/modules/presentation/remote/remote.component.ts
+++ b/src/app/modules/presentation/remote/remote.component.ts
@@ -11,6 +11,7 @@ import {ShowSong} from '../../shows/services/show-song';
import {GlobalSettingsService} from '../../../services/global-settings.service';
import {FormControl} from '@angular/forms';
import {distinctUntilChanged, map} from 'rxjs/operators';
+import {fade} from '../../../animations';
export interface PresentationSong {
id: string;
@@ -21,7 +22,8 @@ export interface PresentationSong {
@Component({
selector: 'app-remote',
templateUrl: './remote.component.html',
- styleUrls: ['./remote.component.less']
+ styleUrls: ['./remote.component.less'],
+ animations: [fade]
})
export class RemoteComponent {
public shows$: Observable
;
diff --git a/src/app/modules/songs/services/song.ts b/src/app/modules/songs/services/song.ts
index eafe951..d4f1437 100644
--- a/src/app/modules/songs/services/song.ts
+++ b/src/app/modules/songs/services/song.ts
@@ -8,6 +8,7 @@ export interface Song {
text: string;
title: string;
type: string;
+ flags: string;
legalType: string;
legalLink: string;
diff --git a/src/app/modules/songs/services/text-rendering.service.ts b/src/app/modules/songs/services/text-rendering.service.ts
index 7fc02e9..f298a89 100644
--- a/src/app/modules/songs/services/text-rendering.service.ts
+++ b/src/app/modules/songs/services/text-rendering.service.ts
@@ -41,6 +41,7 @@ export class TextRenderingService {
}
public parse(text: string): Section[] {
+ if (!text) return [];
const arrayOfLines = text.split(/\r?\n/).filter(_ => _);
const indices = {
[SectionType.Bridge]: 0,
diff --git a/src/app/modules/songs/song-list/song-list.component.html b/src/app/modules/songs/song-list/song-list.component.html
index 04c84aa..b402bae 100644
--- a/src/app/modules/songs/song-list/song-list.component.html
+++ b/src/app/modules/songs/song-list/song-list.component.html
@@ -1,3 +1,7 @@
-
-
-
+
diff --git a/src/app/modules/songs/song-list/song-list.module.ts b/src/app/modules/songs/song-list/song-list.module.ts
index 38343d9..c8d59e2 100644
--- a/src/app/modules/songs/song-list/song-list.module.ts
+++ b/src/app/modules/songs/song-list/song-list.module.ts
@@ -5,6 +5,7 @@ import {ListItemComponent} from './list-item/list-item.component';
import {CardModule} from '../../../widget-modules/components/card/card.module';
import {RouterModule} from '@angular/router';
import {LegalTypeTranslatorModule} from '../../../widget-modules/pipes/legal-type-translator/legal-type-translator.module';
+import {ListHeaderModule} from '../../../widget-modules/components/list-header/list-header.module';
@NgModule({
@@ -15,7 +16,8 @@ import {LegalTypeTranslatorModule} from '../../../widget-modules/pipes/legal-typ
RouterModule,
CardModule,
- LegalTypeTranslatorModule
+ LegalTypeTranslatorModule,
+ ListHeaderModule
]
})
export class SongListModule {
diff --git a/src/app/modules/songs/song/edit/edit-song/edit-song.component.html b/src/app/modules/songs/song/edit/edit-song/edit-song.component.html
index 1515a78..ff0d850 100644
--- a/src/app/modules/songs/song/edit/edit-song/edit-song.component.html
+++ b/src/app/modules/songs/song/edit/edit-song/edit-song.component.html
@@ -35,6 +35,20 @@
+
+
+
+ {{flag}}
+
+
+
+
+
Rechtlicher Status
diff --git a/src/app/modules/songs/song/edit/edit-song/edit-song.component.ts b/src/app/modules/songs/song/edit/edit-song/edit-song.component.ts
index 28f0ede..25c19c0 100644
--- a/src/app/modules/songs/song/edit/edit-song/edit-song.component.ts
+++ b/src/app/modules/songs/song/edit/edit-song/edit-song.component.ts
@@ -6,6 +6,9 @@ import {SongService} from '../../../services/song.service';
import {EditService} from '../edit.service';
import {first, map, switchMap} from 'rxjs/operators';
import {KEYS} from '../../../services/key.helper';
+import {COMMA, ENTER} from '@angular/cdk/keycodes';
+import {MatChipInputEvent} from '@angular/material/chips';
+import {faTimesCircle} from '@fortawesome/free-solid-svg-icons/faTimesCircle';
@Component({
selector: 'app-edit-song',
@@ -19,6 +22,9 @@ export class EditSongComponent implements OnInit {
public types = SongService.TYPES;
public legalOwner = SongService.LEGAL_OWNER;
public legalType = SongService.LEGAL_TYPE;
+ public flags: string[] = [];
+ readonly separatorKeysCodes: number[] = [ENTER, COMMA];
+ public faRemove = faTimesCircle;
constructor(
private activatedRoute: ActivatedRoute,
@@ -36,6 +42,8 @@ export class EditSongComponent implements OnInit {
).subscribe(song => {
this.song = song;
this.form = this.editService.createSongForm(song);
+ this.form.controls.flags.valueChanges.subscribe(_ => this.onFlagsChanged(_))
+ this.onFlagsChanged(this.form.controls.flags.value);
});
}
@@ -45,4 +53,31 @@ export class EditSongComponent implements OnInit {
await this.router.navigateByUrl('songs/' + this.song.id);
}
+ public removeFlag(flag: string): void {
+ const flags = this.flags.filter(_ => _ !== flag);
+ this.form.controls.flags.setValue(flags.reduce((a, b) => `${a};${b}`, ''));
+ }
+
+ public addFlag(event: MatChipInputEvent): void {
+ const input = event.input;
+ const value = event.value;
+
+ // Add our fruit
+ if ((value || '').trim()) {
+ const flags = [...this.flags, value.trim()];
+ this.form.controls.flags.setValue(flags.reduce((a, b) => `${a};${b}`, ''));
+ }
+
+ if (input) input.value = '';
+ }
+
+ private onFlagsChanged(flagArray: string): void {
+ console.log(flagArray);
+ if (!flagArray) {
+ this.flags = [];
+ return;
+ }
+
+ this.flags = flagArray.split(';').filter(_ => !!_);
+ }
}
diff --git a/src/app/modules/songs/song/edit/edit.module.ts b/src/app/modules/songs/song/edit/edit.module.ts
index 0a6c465..fabd832 100644
--- a/src/app/modules/songs/song/edit/edit.module.ts
+++ b/src/app/modules/songs/song/edit/edit.module.ts
@@ -17,6 +17,8 @@ import {FileComponent} from './edit-file/file/file.component';
import {LegalOwnerTranslatorModule} from '../../../../widget-modules/pipes/legal-owner-translator/legal-owner-translator.module';
import {LegalTypeTranslatorModule} from '../../../../widget-modules/pipes/legal-type-translator/legal-type-translator.module';
import {KeyTranslatorModule} from '../../../../widget-modules/pipes/key-translator/key-translator.module';
+import {MatChipsModule} from '@angular/material/chips';
+import {FontAwesomeModule} from '@fortawesome/angular-fontawesome';
@NgModule({
@@ -39,6 +41,8 @@ import {KeyTranslatorModule} from '../../../../widget-modules/pipes/key-translat
LegalOwnerTranslatorModule,
LegalTypeTranslatorModule,
KeyTranslatorModule,
+ MatChipsModule,
+ FontAwesomeModule,
]
})
diff --git a/src/app/modules/songs/song/edit/edit.service.ts b/src/app/modules/songs/song/edit/edit.service.ts
index 07892c7..03693cf 100644
--- a/src/app/modules/songs/song/edit/edit.service.ts
+++ b/src/app/modules/songs/song/edit/edit.service.ts
@@ -15,6 +15,7 @@ export class EditService {
text: new FormControl(song.text),
title: new FormControl(song.title),
comment: new FormControl(song.comment),
+ flags: new FormControl(song.flags),
key: new FormControl(song.key),
tempo: new FormControl(song.tempo),
type: new FormControl(song.type),
diff --git a/src/app/modules/songs/song/song.component.html b/src/app/modules/songs/song/song.component.html
index 01412a3..ac84817 100644
--- a/src/app/modules/songs/song/song.component.html
+++ b/src/app/modules/songs/song/song.component.html
@@ -19,6 +19,10 @@
+
+ {{flag}}
+
+
{{song.comment}}
Anhänge
diff --git a/src/app/modules/songs/song/song.component.ts b/src/app/modules/songs/song/song.component.ts
index 090cf57..be86d5e 100644
--- a/src/app/modules/songs/song/song.component.ts
+++ b/src/app/modules/songs/song/song.component.ts
@@ -41,4 +41,9 @@ export class SongComponent implements OnInit {
}
+ public getFlags = (flags: string): string[] => {
+ if (!flags) return [];
+ return flags.split(';').filter(_ => !!_);
+ };
+
}
diff --git a/src/app/modules/songs/song/song.module.ts b/src/app/modules/songs/song/song.module.ts
index 918484c..7e0f2dc 100644
--- a/src/app/modules/songs/song/song.module.ts
+++ b/src/app/modules/songs/song/song.module.ts
@@ -8,6 +8,7 @@ import {ButtonRowModule} from '../../../widget-modules/components/button-row/but
import {RouterModule} from '@angular/router';
import {LegalOwnerTranslatorModule} from '../../../widget-modules/pipes/legal-owner-translator/legal-owner-translator.module';
import {SongTextModule} from '../../../widget-modules/components/song-text/song-text.module';
+import {MatChipsModule} from '@angular/material/chips';
@NgModule({
@@ -23,6 +24,7 @@ import {SongTextModule} from '../../../widget-modules/components/song-text/song-
ButtonRowModule,
LegalOwnerTranslatorModule,
SongTextModule,
+ MatChipsModule,
]
})
export class SongModule {
diff --git a/src/styles/styles.less b/src/styles/styles.less
index 47a66dd..c4d2246 100644
--- a/src/styles/styles.less
+++ b/src/styles/styles.less
@@ -81,3 +81,7 @@ perfect-scrollbar.scroll > .ps .ps__rail-y:hover {
background-color: #222;
opacity: .3;
}
+
+.mat-chip.mat-standard-chip {
+ background: #fffa;
+}