/** @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; getArtistsString: (id: number) => Promise; constructor( private albumService: AlbumService, private artistService: ArtistService, private arianeService: ArianeService, private trackService: TrackService, private playerService: PlayerService, private dataService: DataService) { } countTrackCallback(albumId: number): Promise { return this.trackService.countTracksWithAlbumId(albumId); } getArtistsStringCallback(albumId: number): Promise { //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 ...`) }); } }