Last album section with artist & link
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<nav>
|
||||
<a routerLink="/dashboard" routerLinkActive="active">Dashboard</a>
|
||||
<a routerLink="/dashboard" routerLinkActive="active"><span class="glyphicon glyphicon-home"></span></a>
|
||||
</nav>
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
@@ -88,8 +88,9 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr *ngFor="let album of lastAddedAlbums">
|
||||
<td>{{album.key}}</td>
|
||||
<td><a [routerLink]="['/album', album.key]">{{album.key}}</a></td>
|
||||
<td>{{album.doc_count}}</td>
|
||||
<td><a [routerLink]="['/artist', albumArtists[album.key]]">{{albumArtists[album.key]}}</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -3,6 +3,8 @@ import { Component, OnInit } from '@angular/core';
|
||||
import { ElsService } from './els.service';
|
||||
import { Song } from './object/song';
|
||||
import { Bucket } from './object/bucket';
|
||||
import { Album } from './object/album';
|
||||
import { Artist } from './object/artist';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dashboard',
|
||||
@@ -19,12 +21,15 @@ export class DashboardComponent implements OnInit {
|
||||
trackCountAlbum = 0;
|
||||
neverListenSong = 0;
|
||||
|
||||
albumArtistCount = 0;
|
||||
|
||||
topGenres: Bucket[] = [];
|
||||
bottomGenres: Bucket[] = [];
|
||||
|
||||
mostPlayedSongs: Song[] = [];
|
||||
|
||||
lastAddedAlbums: Bucket[] = [];
|
||||
albumArtists = [];
|
||||
|
||||
constructor(private elsService: ElsService) { }
|
||||
|
||||
@@ -54,9 +59,25 @@ export class DashboardComponent implements OnInit {
|
||||
|
||||
this.elsService.getGenres().subscribe(data => this.topGenres = data);
|
||||
this.elsService.getGenres('asc').subscribe(data => this.bottomGenres = data);
|
||||
this.elsService.getGenreCount().subscribe(data => console.log(data));
|
||||
// this.elsService.getGenreCount().subscribe(data => console.log(data));
|
||||
|
||||
this.elsService.getLastAddedAlbums().subscribe(data => this.lastAddedAlbums = data);
|
||||
this.elsService.getLastAddedAlbums().subscribe(buckets => {
|
||||
this.lastAddedAlbums = buckets;
|
||||
buckets.forEach(bucket => {
|
||||
this.elsService.getArtistFromAlbumName(bucket.key).subscribe(data => {
|
||||
if (data.length > 1) {
|
||||
data.forEach(album => {
|
||||
if (album['Track Count'] === bucket.doc_count) {
|
||||
console.log(album.Artist.toString());
|
||||
this.albumArtists[album.Name] = album.Artist.toString();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.albumArtists[data[0].Name] = data[0].Artist.toString();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -293,9 +293,31 @@ export class ElsService {
|
||||
'size': 0
|
||||
}), {headers: this.headers})
|
||||
.map(res => res.json().aggregations.album.buckets)
|
||||
// TODO Take in consideration "sum_other_doc_count"
|
||||
.map((hits: Array<any>) => this.hitsToBuckets(hits));
|
||||
}
|
||||
|
||||
getArtistFromAlbumName(albumname: string): Observable<Album[]> {
|
||||
return this.http
|
||||
.post(this.elsUrl + 'album' + ElsService.ACTION_SEARCH,
|
||||
JSON.stringify({
|
||||
'query': {
|
||||
'match_phrase' : {
|
||||
'Album' : albumname
|
||||
}
|
||||
}
|
||||
}), {headers: this.headers})
|
||||
.map(res => res.json().hits.hits)
|
||||
.map((hits: Array<any>) => {
|
||||
// TODO Use a method (duplicated code ?)
|
||||
const result: Array<Album> = [];
|
||||
hits.forEach((hit) => {
|
||||
result.push(hit._source);
|
||||
});
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
private hitsToBuckets(hits: Array<any>): Bucket[] {
|
||||
const result: Array<Bucket> = [];
|
||||
hits.forEach((bucket) => {
|
||||
|
||||
Reference in New Issue
Block a user