diff --git a/frontend/ng-karaoqueue/src/app/app.component.ts b/frontend/ng-karaoqueue/src/app/app.component.ts
index 34a4332..53200a0 100644
--- a/frontend/ng-karaoqueue/src/app/app.component.ts
+++ b/frontend/ng-karaoqueue/src/app/app.component.ts
@@ -1,10 +1,16 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { RuntimeConfigLoaderService } from 'runtime-config-loader';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
-export class AppComponent {
+export class AppComponent implements OnInit{
+
+ constructor(private configSvc: RuntimeConfigLoaderService) {}
+ ngOnInit(): void {
+ console.log("API at ",this.configSvc.getConfigObjectKey("api"));
+ }
title = 'KaraoQueue';
}
diff --git a/frontend/ng-karaoqueue/src/app/song-search/song-search.component.html b/frontend/ng-karaoqueue/src/app/song-search/song-search.component.html
index 113315f..a6385bd 100644
--- a/frontend/ng-karaoqueue/src/app/song-search/song-search.component.html
+++ b/frontend/ng-karaoqueue/src/app/song-search/song-search.component.html
@@ -1 +1,30 @@
-
song-search works!
+
+ Suche...
+
+
+
+
+ {{song.artist.name}} - {{song.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{song.genres[0].name}} {{song.languages[0].name}}
+
+
+
+
+
+
diff --git a/frontend/ng-karaoqueue/src/app/song-search/song-search.component.ts b/frontend/ng-karaoqueue/src/app/song-search/song-search.component.ts
index 755e1ee..7a4d796 100644
--- a/frontend/ng-karaoqueue/src/app/song-search/song-search.component.ts
+++ b/frontend/ng-karaoqueue/src/app/song-search/song-search.component.ts
@@ -1,15 +1,40 @@
import { Component, OnInit } from '@angular/core';
+import { SongServiceService } from "../song-service.service";
+import { Song } from '../models/song.model';
+import { Subject } from 'rxjs';
+import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
@Component({
selector: 'app-song-search',
templateUrl: './song-search.component.html',
- styleUrls: ['./song-search.component.css']
+ styleUrls: ['./song-search.component.scss']
})
export class SongSearchComponent implements OnInit {
- constructor() { }
+ private searchSub$ = new Subject();
+
+ constructor(private songServiceService: SongServiceService) { }
+
+ songs: Array = new Array();
+
+ updateSongs(text: string) {
+ this.songServiceService.searchSongByText(text).subscribe(x => {
+ console.log(x);
+ this.songs = x;
+ });
+ }
+
+ applyFilter(filterValue: string) {
+ this.searchSub$.next(filterValue)
+ }
ngOnInit(): void {
+ this.searchSub$.pipe(
+ debounceTime(400),
+ distinctUntilChanged()
+ ).subscribe((filterValue: string) => {
+ this.updateSongs(filterValue);
+ });
}
}
diff --git a/frontend/ng-karaoqueue/src/app/song-service.service.ts b/frontend/ng-karaoqueue/src/app/song-service.service.ts
index b74723e..bd84339 100644
--- a/frontend/ng-karaoqueue/src/app/song-service.service.ts
+++ b/frontend/ng-karaoqueue/src/app/song-service.service.ts
@@ -1,17 +1,42 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { Song } from './models/song.model';
+import { Artist } from './models/artist.model';
+import { Genre } from './models/genre.model';
+import { Language } from './models/language.model';
+import { RuntimeConfigLoaderService } from 'runtime-config-loader';
+import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class SongServiceService {
+ private api: string;
constructor(
- private http: HttpClient
- ) {}
-
- searchSongByText(text:string):Array {
- return [new Song()];
+ private http: HttpClient,
+ private configSvc: RuntimeConfigLoaderService
+ ) {
+ this.api=configSvc.getConfigObjectKey("api");
}
+
+ searchSongByText(text: string): Observable> {
+
+
+ let out = new Array();
+
+ this.http.get(this.api +"/songs/compl?search="+text).subscribe((data: Observable) => {
+ data.forEach(element => {
+ out.push(new Song(element["Title"],new Artist(42,element["Artist"]),element["Id"],element["Duo"],element["Explicit"],42,[new Genre(42,element["Styles"])],[new Language(42, element["Languages"])]));
+ });
+ });
+
+ const observable = new Observable>( subscriber => {
+ subscriber.next(out);
+ })
+
+
+ return observable;
+ }
+
}
diff --git a/frontend/ng-karaoqueue/src/assets/config.json b/frontend/ng-karaoqueue/src/assets/config.json
new file mode 100644
index 0000000..51bbfff
--- /dev/null
+++ b/frontend/ng-karaoqueue/src/assets/config.json
@@ -0,0 +1,3 @@
+{
+ "api":"http://localhost:5000/api"
+}