131 lines
3.8 KiB
TypeScript
131 lines
3.8 KiB
TypeScript
/** @file
|
|
* @author Edouard DUPIN
|
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
|
* @license PROPRIETARY (see license file)
|
|
*/
|
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
import { Album, Track } from 'app/back-api';
|
|
|
|
import { ArtistService, DataService, ArianeService, AlbumService, PlayerService, TrackService } from 'app/service';
|
|
import { NodeData } from 'common/model';
|
|
import { filter } from 'rxjs';
|
|
|
|
@Component({
|
|
selector: 'app-albums',
|
|
templateUrl: './albums.html'
|
|
})
|
|
|
|
export class AlbumsScene implements OnInit {
|
|
public name: string = '';
|
|
public description: string = undefined;
|
|
public covers: string[] = undefined;
|
|
public albums: Album[] = undefined;
|
|
public albumsSave: Album[] = undefined;
|
|
public tracks: any[] = undefined;
|
|
public countSubElement: number = undefined;
|
|
countTrack: (id: number) => Promise<Number>;
|
|
getArtistsString: (id: number) => Promise<String[]>;
|
|
|
|
constructor(
|
|
private albumService: AlbumService,
|
|
private artistService: ArtistService,
|
|
private arianeService: ArianeService,
|
|
private trackService: TrackService,
|
|
private playerService: PlayerService,
|
|
private dataService: DataService) {
|
|
|
|
}
|
|
|
|
countTrackCallback(albumId: number): Promise<Number> {
|
|
return this.trackService.countTracksWithAlbumId(albumId);
|
|
}
|
|
|
|
getArtistsStringCallback(albumId: number): Promise<String[]> {
|
|
//console.log(`request all artist for album: {albumId}`)
|
|
//return this.trackService.getAlbumIdsOfAnArtist(albumId);
|
|
return new Promise((resolve, reject) => { resolve(["a implementer pus tyar"]); });
|
|
}
|
|
ngOnInit() {
|
|
const self = this;
|
|
this.getArtistsString = (id: number) => { return self.getArtistsStringCallback(id); };
|
|
this.countTrack = (id: number) => { return self.countTrackCallback(id); };
|
|
self.name = "All Albums";
|
|
self.description = "View all albums (no specific artist)";
|
|
|
|
//console.log(`get parameter id: ${ this.idArtist}`);
|
|
this.albumService.getOrder()
|
|
.then((response: NodeData[]) => {
|
|
//console.log(`>>>> get album : ${JSON.stringify(response)}`)
|
|
self.albums = response;
|
|
self.albumsSave = [...response];
|
|
}).catch((response) => {
|
|
self.albums = undefined;
|
|
});
|
|
// TODO later: get all orfans tracks ...
|
|
/*
|
|
this.artistService.getTrack(this.idArtist)
|
|
.then((response: NodeData[]) => {
|
|
//console.log(`>>>> get track : ${JSON.stringify(response)}`)
|
|
self.tracks = response;
|
|
}).catch((response) => {
|
|
self.tracks = undefined;
|
|
});
|
|
*/
|
|
}
|
|
|
|
onSearch(value: string) {
|
|
console.log(`Search value: ${value}`);
|
|
this.albums = this.albumsSave.filter(element => {
|
|
return element.name.toLowerCase().includes(value.toLowerCase());;
|
|
})
|
|
}
|
|
|
|
onSelectAlbum(event: any, idSelected: number): void {
|
|
if (event.ctrlKey) {
|
|
this.arianeService.navigateAlbumEdit({ id: idSelected, newWindows: event.which === 2 });
|
|
} else {
|
|
this.arianeService.navigateAlbum({ albumId: idSelected, newWindows: event.which === 2 });
|
|
}
|
|
}
|
|
|
|
onSelectTrack(event: any, idSelected: number): void {
|
|
if (event.ctrlKey) {
|
|
this.arianeService.navigateTrackEdit({ id: idSelected, newWindows: event.which === 2 });
|
|
} else {
|
|
this.arianeService.navigateTrack({ trackId: idSelected, newWindows: event.which === 2 });
|
|
}
|
|
}
|
|
playAll(): void {
|
|
this.playerService.clear();
|
|
let self = this;
|
|
this.trackService.gets()
|
|
.then((response: Track[]) => {
|
|
let ids = [];
|
|
response.forEach(element => {
|
|
ids.push(element.id);
|
|
});
|
|
self.playerService.setNewPlaylist(ids);
|
|
})
|
|
.catch(() => {
|
|
console.log(`error to get list o ftrack ...`)
|
|
});
|
|
}
|
|
playShuffle(): void {
|
|
this.playerService.clear();
|
|
let self = this;
|
|
this.trackService.gets()
|
|
.then((response: Track[]) => {
|
|
let ids = [];
|
|
response.forEach(element => {
|
|
ids.push(element.id);
|
|
});
|
|
self.playerService.setNewPlaylistShuffle(ids);
|
|
})
|
|
.catch(() => {
|
|
console.log(`error to get list o ftrack ...`)
|
|
});
|
|
}
|
|
}
|
|
|