{"version":3,"sources":["./src/app/artists/artistEditor.ts","./src/app/artists/artistEditor.html","./src/app/business/userInfo.ts","./src/app/common/login.ts","./src/app/common/login.html","./src/app/common/focusDirective.ts","./src/environments/environment.ts","./src/app/albums/albumList.ts","./src/app/albums/albumList.html","./src/app/albums/albumEditor.ts","./src/app/albums/albumEditor.html","./src/app/albums/albumService.ts","./src/app/artists/artistList.ts","./src/app/artists/artistList.html","./src/app/common/animations.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/common/appFooter.ts","./src/app/common/appFooter.html","./src/app/albums/albumSongList.ts","./src/app/albums/albumSongList.html","./src/app/common/appHeader.ts","./src/app/common/appHeader.html","./src/app/app.module.ts","./src/app/artists/artistDisplay.ts","./src/app/artists/artistDisplay.html","./src/app/artists/artistService.ts","./src/app/common/errorDisplay.ts","./src/app/business/appConfiguration.ts","./src/app/business/entities.ts","./src/app/albums/albumDisplay.ts","./src/app/albums/albumDisplay.html","./src/app/options/options.ts","./src/app/options/options.html","./src/app/options/about.ts","./src/app/options/about.html","./src/app/app-routing.module.ts","./src/app/business/httpRequestInterceptor.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import {Component, OnInit, Input, ViewChild, ElementRef, TemplateRef} from '@angular/core';\r\nimport {ArtistService} from \"./artistService\";\r\nimport {Artist, Album} from \"../business/entities\";\r\n\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {UserInfo} from \"../business/userInfo\";\r\n\r\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\r\nimport {BsModalRef, BsModalService, ModalModule} from 'ngx-bootstrap/modal';\r\n\r\n//import {NgbModal, ModalDismissReasons} from 'ngx-bootstrap/utils';\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'artist-editor',\r\n templateUrl: 'artistEditor.html'\r\n})\r\nexport class ArtistEditor implements OnInit {\r\n @Input() artist: Artist = new Artist();\r\n @ViewChild('ModalEditorTemplate') public modalEditorTemplate;\r\n @ViewChild('ArtistName') artistName:ElementRef;\r\n\r\n albums: Album[] = [];\r\n formActive = false;\r\n error: ErrorInfo = new ErrorInfo();\r\n\r\n // keep track of the modal as a reference so we can close it\r\n modalRef: BsModalRef | null;\r\n\r\n constructor(private artistService: ArtistService,\r\n private config: AppConfiguration,\r\n private user:UserInfo,\r\n private modalService: BsModalService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.config.isSearchAllowed = false;\r\n }\r\n\r\n open() {\r\n this.modalRef = this.modalService.show(this.modalEditorTemplate,\r\n {ariaLabelledBy: 'modal-basic-title'})\r\n }\r\n close() {\r\n this.modalRef.hide();\r\n this.modalRef = null;\r\n }\r\n\r\n saveArtist(artist) {\r\n this.artistService.saveArtist(artist)\r\n .subscribe( result => {\r\n this.artist = result.Artist;\r\n this.albums = result.Albums;\r\n\r\n this.close();\r\n\r\n this.formActive = false;\r\n setTimeout(()=> {\r\n this.formActive = true;\r\n }, 0);\r\n\r\n this.error.info(\"Artist has been saved\");\r\n },\r\n err => {\r\n this.error.error(err);\r\n\r\n if (err.response && err.response.status == 401) {\r\n window.location.hash=\"login\";\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","\r\n
\r\n\r\n
\r\n

Edit Artist

\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {AppConfiguration} from \"./appConfiguration\";\r\n\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { map,catchError } from 'rxjs/operators';\r\n\r\n\r\nimport {ErrorInfo, ErrorDisplay} from \"../common/errorDisplay\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserInfo {\r\n\r\n isAdmin = false;\r\n userName: string = null;\r\n sessionStarted = new Date();\r\n expires = new Date();\r\n requestedUrl = \"\";\r\n\r\n private _isAuthenticated = false;\r\n set isAuthenticated(val) {\r\n this._isAuthenticated = val || false;\r\n // cache authentication\r\n if (this._isAuthenticated)\r\n localStorage.setItem('av_token', this._token);\r\n else\r\n localStorage.removeItem('av_token');\r\n }\r\n get isAuthenticated() {\r\n return this._isAuthenticated;\r\n };\r\n\r\n\r\n private _token = \"\";\r\n get token() { \r\n return this._token\r\n }\r\n set token(value) {\r\n this._token = value;\r\n localStorage.setItem('av_token',value);\r\n }\r\n\r\n\r\n constructor(private http: HttpClient,\r\n private config: AppConfiguration) {\r\n // initialize isAuthenticate from localstorage\r\n let token = localStorage.getItem(\"av_token\");\r\n if(token)\r\n {\r\n this._isAuthenticated = true;\r\n this.token = token; \r\n }\r\n else{\r\n this._isAuthenticated = false;\r\n this.token = null;\r\n }\r\n }\r\n\r\n /*\r\n Cookie Auth\r\n */\r\n login(username, password) {\r\n return this.http.post(this.config.urls.url(\"login\"), {\r\n username: username,\r\n password: password\r\n },this.config.requestHeaders)\r\n .pipe(catchError((response) => {\r\n if (response.status === 401)\r\n this.isAuthenticated = false;\r\n\r\n return new ErrorInfo().parseObservableResponseError(response);\r\n }));\r\n }\r\n\r\n /*\r\n Token Auth\r\n */\r\n authenticate(username, password) {\r\n return this.http.post(this.config.urls.url(\"authenticate\"), {\r\n username: username,\r\n password: password\r\n },this.config.requestHeaders)\r\n .pipe(\r\n map( (tokenInfo) => {\r\n this.token = tokenInfo.token;\r\n this.expires = new Date(tokenInfo.expires);\r\n return true;\r\n }),\r\n catchError((response) => {\r\n if (response.status === 401)\r\n this.isAuthenticated = false;\r\n\r\n return new ErrorInfo().parseObservableResponseError(response);\r\n }));\r\n }\r\n\r\n logout() {\r\n return this.http.get(this.config.urls.url(\"logout\"))\r\n .pipe(\r\n map(\r\n (success) => {\r\n this.isAuthenticated = false;\r\n return true;\r\n }\r\n ));\r\n }\r\n\r\n /**\r\n * Calls to the server to check authentication and then\r\n * updates the local isAuthenticated flag\r\n * @returns {Observable}\r\n */\r\n checkAuthentication() {\r\n const url = this.config.urls.url(\"isAuthenticated\");\r\n console.log(url);\r\n return this.http.get(url)\r\n .pipe(\r\n map((result) => {\r\n this.isAuthenticated = result;\r\n return result;\r\n }),\r\n catchError((response) => { \r\n this.isAuthenticated = false; \r\n var err = new ErrorInfo().parseObservableResponseError(response)\r\n return throwError(err);\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport class TokenInfo {\r\n token: \"\";\r\n expires: Date;\r\n displayName: \"\";\r\n\r\n constructor()\r\n {\r\n this.expires = new Date();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {UserInfo} from \"../business/userInfo\";\r\nimport {ErrorInfo} from \"./errorDisplay\";\r\n\r\ndeclare var toastr:any;\r\n\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'login',\r\n templateUrl: 'login.html'\r\n})\r\nexport class LoginComponent implements OnInit {\r\n username:string = \"\";\r\n password:string = \"\";\r\n error: ErrorInfo = new ErrorInfo();\r\n\r\n constructor(public user:UserInfo,\r\n private route:ActivatedRoute,\r\n private router: Router)\r\n { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.route.snapshot.url[0].path == \"logout\")\r\n this.logout();\r\n }\r\n\r\n // login() {\r\n // this.user.login(this.username,this.password)\r\n // .subscribe(() => {\r\n // this.user.isAuthenticated = true;\r\n // toastr.success(\"You are logged in.\");\r\n // this.router.navigate([\"/albums\"]);\r\n // },\r\n // (err)=> {\r\n // this.error.error(err);\r\n // this.password=\"\";\r\n // toastr.warning(\"Login failed: \" + err.message);\r\n // });\r\n // }\r\n\r\n login() {\r\n this.user.authenticate(this.username,this.password)\r\n .subscribe(() => {\r\n this.user.isAuthenticated = true;\r\n toastr.success(\"You are logged in.\");\r\n var url = \"/albums\";\r\n if (this.user.requestedUrl)\r\n url = this.user.requestedUrl;\r\n\r\n this.router.navigate([url]);\r\n },\r\n (err)=> {\r\n this.error.error(err);\r\n this.password=\"\";\r\n toastr.warning(\"Login failed: \" + err.message);\r\n });\r\n }\r\n\r\n\r\n logout() {\r\n this.user.logout()\r\n .subscribe((success) => {\r\n toastr.success(\"Logged out.\");\r\n this.router.navigate([\"/albums\"]);\r\n });\r\n }\r\n\r\n}\r\n","
\r\n\r\n
\r\n AlbumViewer Login\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n Please sign in\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
You can use: uid: test / pwd: test
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import { Directive, Input, ElementRef, OnChanges } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector : '[focus]' // [focus]=\"true|false\"\r\n})\r\nexport class FocusDirective implements OnChanges {\r\n\t@Input() focus : boolean;\r\n\r\n\tconstructor(private element : ElementRef) {\r\n\t\t\r\n\t}\r\n\t\r\n\tngOnChanges() {\r\n\t\tif (this.focus)\r\n\t\t\tsetTimeout( ()=> this.element.nativeElement.focus() ,200);\r\n\t}\r\n}","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n","import {Component, OnInit } from '@angular/core';\r\nimport { AlbumService } from './albumService';\r\nimport { Album } from '../business/entities';\r\n\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {Router} from \"@angular/router\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {slideIn, slideInLeft} from \"../common/animations\";\r\nimport { UserInfo } from \"../business/userInfo\";\r\n\r\ndeclare var $:any;\r\n\r\n@Component({\r\n selector: 'album-list',\r\n templateUrl: './albumList.html',\r\n animations: [ slideIn ]\r\n})\r\nexport class AlbumList implements OnInit {\r\n\r\n constructor(private router:Router,\r\n private albumService: AlbumService,\r\n private config: AppConfiguration) {\r\n }\r\n\r\n albumList: Album[] = [];\r\n busy: boolean = true;\r\n error:ErrorInfo = new ErrorInfo();\r\n\r\n\r\n ngOnInit() {\r\n this.getAlbums();\r\n\r\n this.config.isSearchAllowed = true;\r\n this.config.activeTab = \"albums\";\r\n this.config.searchText = \"\";\r\n\r\n // ??? Non-DOM way to do this?\r\n setTimeout(() => {\r\n $(\"#SearchBox\").focus();\r\n },200);\r\n }\r\n\r\n get filteredAlbumList() {\r\n if (this.config.searchText && this.config.searchText.length > 1) {\r\n var lsearchText = this.config.searchText.toLowerCase();\r\n\r\n return this.albumList.filter((a) => {\r\n const title = a.Title;\r\n const artist = a.Artist;\r\n let artistName = null;\r\n if (artist)\r\n artistName = artist.ArtistName;\r\n\r\n return (title && title.toLowerCase().includes(lsearchText)) ||\r\n (artistName && artistName.toLowerCase().includes(lsearchText));\r\n });\r\n }\r\n\r\n return this.albumList;\r\n }\r\n\r\n getAlbums() {\r\n this.busy = true;\r\n this.albumList = [];\r\n this.albumService.getAlbums()\r\n .subscribe(albums => {\r\n this.albumList = albums;\r\n this.busy = false;\r\n\r\n // reset to last scroll position of the list\r\n setTimeout(()=> $(\"#MainView\").scrollTop(this.albumService.listScrollPos), 100);\r\n }, err => {\r\n if (!err.message)\r\n this.error.error(\"Unable to load albums right now. Most likely the server is not responding.\");\r\n else\r\n this.error.error(err);\r\n this.busy = false;\r\n });\r\n }\r\n\r\n albumClick(album: Album) {\r\n // save scroll position before navigation\r\n this.albumService.listScrollPos = $(\"#MainView\").scrollTop();\r\n\r\n this.router.navigate(['/album', album.Id]);\r\n }\r\n\r\n\r\n addAlbum() {\r\n\r\n }\r\n\r\n deleteAlbum(album: Album) {\r\n\r\n }\r\n}\r\n","
\r\n\r\n \r\n\r\n Add Album\r\n
\r\n \r\n Album {{filteredAlbumList.length}}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n  \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
{{album.Title}}
\r\n
by {{album.Artist.ArtistName}} {{(album.Year ? 'in ' + album.Year : '')}}
\r\n
{{album.Description}}
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, OnInit, ElementRef} from '@angular/core';\r\nimport {Album, Artist} from \"../business/entities\";\r\nimport {AlbumService} from \"./albumService\";\r\nimport {Router, ActivatedRoute} from \"@angular/router\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport { UserInfo } from \"../business/userInfo\";\r\n\r\nimport {Observable, of, Subscriber} from 'rxjs';\r\nimport {debounceTime, distinctUntilChanged, switchMap, catchError, mergeMap} from 'rxjs/operators';\r\n\r\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\r\n\r\n//declare var $:any ;\r\ndeclare var $:any;\r\ndeclare var toastr:any;\r\ndeclare var window:any;\r\n\r\nimport { slideInLeft, slideIn } from \"../common/animations\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'album-editor',\r\n templateUrl: 'albumEditor.html',\r\n animations: [ slideIn ]\r\n})\r\nexport class AlbumEditor implements OnInit {\r\n constructor(private route: ActivatedRoute,\r\n private router: Router,\r\n private albumService: AlbumService,\r\n private config:AppConfiguration,\r\n private user: UserInfo,\r\n private toastr:ToastrService\r\n ) { }\r\n\r\n album: Album = new Album();\r\n error: ErrorInfo = new ErrorInfo();\r\n loaded = false;\r\n aniFrame = 'in';\r\n\r\n searchTerm: string;\r\n searchResults:Observable;\r\n\r\n public searchData: any = {};\r\n\r\n ngOnInit() {\r\n if (!this.user.isAuthenticated) {\r\n this.user.requestedUrl = this.router.url;\r\n this.router.navigate(['/login']);\r\n return;\r\n }\r\n\r\n this.config.isSearchAllowed = false;\r\n\r\n var id = this.route.snapshot.params[\"id\"];\r\n if (id < 1) {\r\n this.loaded = true;\r\n this.album = this.albumService.newAlbum();\r\n return;\r\n }\r\n\r\n this.albumService.getAlbum(id)\r\n .subscribe(result => {\r\n this.album = result;\r\n this.loaded = true;\r\n },\r\n err => {\r\n this.error.error(err);\r\n });\r\n\r\n this.configureTypeAhead();\r\n }\r\n\r\n configureTypeAhead() {\r\n // https://valor-software.com/ngx-bootstrap/#/typeahead\r\n // set up the observable for type ahead\r\n this.searchResults = new Observable((observer: Subscriber) => {\r\n // search term comes from artist name typed\r\n var searchTerm = this.album.Artist.ArtistName;\r\n\r\n // Min Lookup for 2 characters - list is small so allow\r\n // if (!searchTerm || searchTerm.length < 3)\r\n // return;\r\n\r\n observer.next(searchTerm);\r\n })\r\n .pipe(\r\n // retrieve from service and map result to observable\r\n mergeMap((searchTerm: string) =>this.albumService.artistLookup(searchTerm))\r\n );\r\n }\r\n\r\n saveAlbum(album) {\r\n return this.albumService.saveAlbum(album)\r\n .subscribe((album: Album) => {\r\n var msg = album.Title + \" has been saved.\";\r\n this.error.info(msg);\r\n this.toastr.success(msg);\r\n window.document.getElementById(\"MainView\").scrollTop = 0;\r\n\r\n setTimeout(()=> {\r\n this.router.navigate([\"/album\", album.Id]);\r\n }, 1500)\r\n },\r\n err => {\r\n let msg = `Unable to save album: ${err.message}`;\r\n this.error.error(msg);\r\n this.toastr.error(msg);\r\n\r\n if (err.response && err.response.status == 401) {\r\n this.user.isAuthenticated = false;\r\n this.router.navigate([\"/login\"]);\r\n }\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Returns a list of Artist Lookup items and pipes them\r\n * into the look up list. Result format is:\r\n * [ {name: \"band\", id: \"band\"}]\r\n *\r\n * Called from ngb-TypeAhead with the search term observable\r\n */\r\n search = (text$: Observable) => {\r\n return text$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n // switchMap allows returning an observable rather than the final array instance\r\n switchMap( (searchText) => this.albumService.artistLookup(searchText) ),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n changeTypeaheadLoading(e: boolean): void {\r\n\r\n }\r\n /**\r\n * Used to format the result data from the lookup into the\r\n * display and list values\r\n * @param value For\r\n */\r\n resultFormatBandListValue(value: any) {\r\n return value.name;\r\n }\r\n inputFormatBandListValue(value: any) {\r\n if(value.name)\r\n return value.name;\r\n return value;\r\n }\r\n}\r\n","
\r\n\r\n
\r\n List\r\n View\r\n Buy\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n

Preview

\r\n \r\n
\r\n

{{album.Title}}

\r\n
by {{album.Artist.ArtistName}} {{(album.Year ? 'in ' + album.Year : '')}}\r\n - Buy on Amazon\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n","import {Injectable} from '@angular/core';\r\nimport {Album, Artist, Track} from '../business/entities';\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map, catchError, tap} from \"rxjs/operators\";\r\n\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n\r\n// import 'rxjs/Operator/map';\r\n// import 'rxjs/add/operator/catch';\r\n// import 'rxjs/add/observable/throw';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlbumService {\r\n constructor( private httpClient: HttpClient,\r\n private config: AppConfiguration) {\r\n }\r\n\r\n albumList: Album[] = [];\r\n album: Album = new Album();\r\n\r\n //artistList: Artist[] = [];\r\n listScrollPos = 0;\r\n\r\n getAlbums(): Observable {\r\n return this.httpClient.get(this.config.urls.url(\"albums\"))\r\n .pipe(\r\n map(albumList => this.albumList = albumList),\r\n catchError( new ErrorInfo().parseObservableResponseError)\r\n );\r\n\r\n }\r\n\r\n getAlbum(id): Observable {\r\n return this.httpClient.get(this.config.urls.url(\"album\", id))\r\n .pipe(\r\n map(album => {\r\n this.album = album;\r\n\r\n if (!this.albumList || this.albumList.length < 1)\r\n this.getAlbums(); // load up albums in background\r\n\r\n return this.album;\r\n }),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n newAlbum(): Album {\r\n this.album = new Album();\r\n return this.album;\r\n }\r\n\r\n saveAlbum(album): Observable {\r\n return this.httpClient.post(this.config.urls.url(\"album\"),\r\n album)\r\n .pipe(map(album => {\r\n this.album = album;\r\n\r\n // explicitly update the list with the updated data\r\n this.updateAlbum(this.album);\r\n return this.album;\r\n }),\r\n catchError( new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n deleteAlbum(album: Album): Observable {\r\n return this.httpClient.delete(this.config.urls.url(\"album\", album.Id))\r\n .pipe(\r\n map(result => {\r\n if (result)\r\n this.removeAlbum(album); // client side remove\r\n }),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Updates the .albumList property by updating the actual\r\n * index entry in the existing list, adding new entries and\r\n * removing 0 entries.\r\n * @param album - the album to update\r\n */\r\n updateAlbum(album) {\r\n var i = this.albumList.findIndex((a) => (a.Id == album.Id));\r\n if (i > -1)\r\n this.albumList[i] = album;\r\n else {\r\n this.albumList.push(album);\r\n this.albumList.sort((a: Album, b: Album) => {\r\n var aTitle = a.Title.toLocaleLowerCase();\r\n var bTitle = b.Title.toLocaleLowerCase();\r\n if (aTitle > bTitle)\r\n return 1;\r\n if (aTitle < bTitle)\r\n return -1;\r\n return 0;\r\n })\r\n }\r\n\r\n this.albumList = this.albumList.filter((a) => a.Id != 0);\r\n }\r\n\r\n removeAlbum(album) {\r\n this.albumList = this.albumList.filter((a) => a.Id != album.Id);\r\n }\r\n\r\n addSong(track: Track) {\r\n this.album.Tracks.push(track);\r\n }\r\n\r\n removeSong(track: Track) {\r\n var idx = this.album.Tracks.findIndex((t) => track.Id == t.Id);\r\n if (idx > -1)\r\n this.album.Tracks.splice(idx, 1);\r\n }\r\n\r\n artistLookup(searchTerm: String):Observable {\r\n let url = this.config.urls.url(\"artistLookup\") + searchTerm;\r\n return this.httpClient.get( url)\r\n .pipe(\r\n // return only .name rather than id and name since we're not using it here\r\n map( kv=> kv.map( k=> k.name) ),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n}\r\n\r\nexport class ArtistSearchResult {\r\n\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport { Artist } from '../business/entities';\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport { ArtistService } from './artistService';\r\nimport {Router} from \"@angular/router\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\n\r\nimport {slideIn, slideInLeft} from \"../common/animations\";\r\n\r\ndeclare var $:any;\r\n\r\n@Component({\r\n selector: 'artist-list',\r\n templateUrl: 'artistList.html',\r\n animations: [ slideInLeft ]\r\n})\r\nexport class ArtistList implements OnInit {\r\n constructor(private router:Router,\r\n private artistService: ArtistService,\r\n private config: AppConfiguration) {\r\n\r\n }\r\n\r\n artistList: Artist[] = [];\r\n error:ErrorInfo = new ErrorInfo();\r\n\r\n ngOnInit() {\r\n this.getArtists();\r\n\r\n this.config.searchText = \"\";\r\n this.config.isSearchAllowed = true;\r\n this.config.activeTab = \"artists\";\r\n\r\n setTimeout(() => {\r\n $(\"#SearchBox\").focus();\r\n },200);\r\n }\r\n\r\n get filteredArtistList() {\r\n if(this.config.searchText && this.config.searchText.length > 1) {\r\n var lsearchText = this.config.searchText.toLowerCase();\r\n return this.artistList.filter((a) =>\r\n a.ArtistName.toLowerCase().includes(lsearchText)\r\n );\r\n }\r\n return this.artistList;\r\n }\r\n\r\n getArtists() {\r\n this.artistService.getArtists()\r\n .subscribe( artists => {\r\n this.artistList = artists;\r\n \r\n setTimeout(() => {\r\n $(\"#MainView\").scrollTop(this.artistService.listScrollPos);\r\n this.artistService.listScrollPos = 0;\r\n }, 20);\r\n return this.artistList;\r\n },\r\n err => {\r\n if (!err.message)\r\n this.error.error(\"Unable to load artists right now. Most likely the server is not responding.\");\r\n else\r\n this.error.error(err) \r\n }\r\n );\r\n }\r\n\r\n artistClick(artist:Artist) {\r\n // Manual Navigation\r\n this.router.navigate(['/artist', artist.Id]);\r\n this.artistService.listScrollPos = $(\"#MainView\").scrollTop();\r\n }\r\n}\r\n","
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n Artists\r\n
{{artistList.length}}
\r\n
\r\n\r\n \r\n \r\n  \r\n {{artist.AlbumCount}}\r\n {{artist.ArtistName}}\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n","import { trigger, state, style, transition, animate } from '@angular/animations';\r\n\r\nexport const slideIn = trigger('slideIn', [\r\n state('*', style({\r\n transform: 'translateX(100%)',\r\n })),\r\n state('in', style({\r\n transform: 'translateX(0)',\r\n })),\r\n state('out', style({\r\n transform: 'translateX(-100%)',\r\n })),\r\n transition('* => in', animate('400ms ease-in')),\r\n transition('in => out', animate('400ms ease-out'))\r\n]);\r\n\r\nexport const slideInLeft = trigger('slideInLeft', [\r\n state('*', style({\r\n transform: 'translateX(-100%)',\r\n })),\r\n state('in', style({\r\n transform: 'translateX(0)',\r\n })),\r\n state('out', style({\r\n transform: 'translateX(100%)',\r\n })),\r\n transition('* => in', animate('300ms ease-in')),\r\n transition('in => out', animate('300ms ease-out'))\r\n]);\r\n","import {Component} from '@angular/core';\r\nimport {UserInfo} from \"./business/userInfo\";\r\n\r\ndeclare var toastr:any;\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'Test Application';\r\n\r\n constructor(private user: UserInfo) {\r\n // check authentication when the page is loaded\r\n // fire and forget - service updates the auth\r\n // status model\r\n this.user.checkAuthentication()\r\n .subscribe();\r\n\r\n // re-check infrequently - once every 2 minutes\r\n setInterval( ()=> {\r\n var previousStatus = user.isAuthenticated;\r\n this.user.checkAuthentication()\r\n .subscribe((isAuthenticated)=> {\r\n if (!isAuthenticated && previousStatus)\r\n toastr.warning(\"Your session has expired. Please log in again.\");\r\n });\r\n },120000)\r\n }\r\n}\r\n","\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n © West Wind Technologies\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'app-footer',\r\n templateUrl: 'appFooter.html'\r\n})\r\nexport class AppFooter implements OnInit {\r\n constructor(public config:AppConfiguration) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","\r\n","import {Component, OnInit, Input} from '@angular/core';\r\nimport {Track} from \"../business/entities\";\r\nimport {AlbumService} from \"./albumService\";\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'album-songlist',\r\n templateUrl: 'albumSongList.html'\r\n})\r\nexport class AlbumSongList implements OnInit {\r\n constructor(private albumService:AlbumService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n @Input() tracks: Track[] = [];\r\n @Input() allowEditing: boolean = false;\r\n isSongVisible = false;\r\n track:Track = new Track();\r\n\r\n addTrack(track){\r\n this.track = new Track();\r\n this.isSongVisible = true;\r\n }\r\n cancelTrack() {\r\n this.track = new Track();\r\n this.isSongVisible = false;\r\n }\r\n\r\n saveTrack(track){\r\n this.albumService.addSong(track);\r\n this.isSongVisible = false;\r\n }\r\n\r\n removeTrack(track: Track) {\r\n this.albumService.removeSong(track);\r\n }\r\n\r\n}\r\n","
\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{track.SongName}}{{track.Length}}\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'app-header',\r\n templateUrl: 'appHeader.html'\r\n})\r\nexport class AppHeader implements OnInit {\r\n constructor(public config:AppConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n \r\n
\r\n
","import {NgModule, Injectable} from '@angular/core'\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from \"./app.component\";\r\n\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\nimport {HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http'; // use this\r\n\r\n\r\n// components\r\nimport {AppHeader} from './common/appHeader';\r\nimport {AppFooter} from \"./common/appFooter\";\r\n\r\nimport {AlbumList} from './albums/albumList';\r\nimport {AlbumDisplay} from './albums/albumDisplay';\r\nimport {AlbumEditor} from './albums/albumEditor';\r\nimport {ArtistList} from './artists/artistList';\r\nimport {ArtistDisplay} from './artists/artistDisplay';\r\n\r\nimport {LocationStrategy, HashLocationStrategy} from '@angular/common';\r\nimport {AlbumSongList} from \"./albums/albumSongList\";\r\n\r\n// directives and shared components\r\nimport {ErrorDisplay, ErrorInfo} from './common/errorDisplay';\r\nimport {ArtistEditor} from \"./artists/artistEditor\";\r\nimport {LoginComponent} from './common/login';\r\n\r\nimport {AboutComponent} from './options/about';\r\nimport { OptionsComponent } from './options/options';\r\n\r\n/* Custom Components or overrides */\r\nimport {HttpRequestInterceptor} from './business/httpRequestInterceptor'\r\nimport { FocusDirective } from './common/focusDirective';\r\nimport {ToastrModule} from \"ngx-toastr\";\r\nimport {ModalModule} from \"ngx-bootstrap/modal\";\r\nimport {TypeaheadModule} from \"ngx-bootstrap/typeahead\";\r\n\r\n// Enable production mode\r\n// import { enableProdMode } from '@angular/core';\r\n// enableProdMode();\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n HttpClientModule,\r\n AppRoutingModule,\r\n\r\n ToastrModule.forRoot({\r\n timeOut: 5000,\r\n closeButton: true,\r\n positionClass: 'toast-bottom-right'\r\n }),\r\n\r\n // ngx-bootstrap components\r\n ModalModule.forRoot(),\r\n TypeaheadModule.forRoot()\r\n ],\r\n\r\n // components\r\n declarations: [\r\n AppComponent,\r\n AppHeader,\r\n AppFooter,\r\n\r\n OptionsComponent,\r\n AboutComponent,\r\n AlbumList,\r\n AlbumDisplay,\r\n AlbumEditor,\r\n AlbumSongList,\r\n ArtistList,\r\n ArtistDisplay,\r\n ArtistEditor,\r\n ErrorDisplay,\r\n LoginComponent,\r\n\r\n FocusDirective\r\n ],\r\n // services, pipes and providers\r\n providers: [\r\n\r\n // make sure you use this for Hash Urls rather than HTML 5 routing\r\n //{ provide: LocationStrategy, useClass: HashLocationStrategy },\r\n\r\n // {\r\n // provide: XHRBackend,\r\n // useFactory: (xhr, opts, strategy, user) => {\r\n // return new CoreXHRBackend(xhr, opts, strategy, user);\r\n // },\r\n // deps: [BrowserXhr, ResponseOptions, XSRFStrategy, UserInfo],\r\n // }\r\n\r\n // Http Interceptor(s) - this one adds with Client Credentials\r\n [\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpRequestInterceptor, multi: true }\r\n ],\r\n ],\r\n\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n\r\n}\r\n","import { Component, OnInit, ViewChild} from '@angular/core';\r\nimport { ArtistService} from \"./artistService\";\r\nimport { Artist, Album} from \"../business/entities\";\r\nimport { AppConfiguration} from \"../business/appConfiguration\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\nimport {UserInfo} from \"../business/userInfo\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport { ArtistEditor } from \"./artistEditor\";\r\nimport {slideIn} from \"../common/animations\";\r\n\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'artist-display',\r\n templateUrl: './artistDisplay.html',\r\n animations: [ slideIn ]\r\n})\r\nexport class ArtistDisplay implements OnInit {\r\n // reference a child editor component\r\n @ViewChild(ArtistEditor) editor:ArtistEditor;\r\n\r\n artist: Artist = new Artist();\r\n albums: Album[] = [];\r\n artistId = null;\r\n formActive = true;\r\n\r\n error:ErrorInfo = new ErrorInfo();\r\n\r\n constructor(private route: ActivatedRoute,\r\n private artistService: ArtistService,\r\n private config: AppConfiguration,\r\n private router: Router,\r\n private user: UserInfo) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.config.isSearchAllowed = false;\r\n\r\n var id = this.route.snapshot.params[\"id\"];\r\n if (id < 1)\r\n return;\r\n\r\n this.artistService.getArtist(id)\r\n .subscribe(\r\n (result: any) => {\r\n this.artist = result.Artist;\r\n this.albums = result.Albums;\r\n },\r\n (err) => {\r\n this.error.error(err);\r\n });\r\n }\r\n\r\n\r\n\r\n albumClick(album) {\r\n //window.location.hash = \"album/\" + album.Id;\r\n this.router.navigate(['/album', album.Id]);\r\n }\r\n\r\n openModalEditor(artistEditor){\r\n if (!this.user.isAuthenticated) {\r\n this.user.requestedUrl = this.router.url;\r\n this.router.navigate([\"/login\"]);\r\n return;\r\n }\r\n\r\n this.editor.open();\r\n }\r\n\r\n addAlbum() {\r\n\r\n }\r\n\r\n deleteArtist(artist:Artist) {\r\n this.artistService.deleteArtist(artist)\r\n .subscribe((result) => {\r\n this.error.info(\"Album deleted.\");\r\n setTimeout(()=> {\r\n this.router.navigate([\"/artists\"]);\r\n this.artistService.artistList =\r\n this.artistService.artistList.filter( art=> art.Id != artist.Id );\r\n }, 1200);\r\n }, (err)=> { console.log(err); this.error.error(err) });\r\n }\r\n\r\n deleteAlbum(album:Album) {\r\n\r\n }\r\n}\r\n","
\r\n\r\n
\r\n \r\n \r\n Artists\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n\r\n\r\n

{{artist.ArtistName}}

\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{artist.Description }}
\r\n\r\n {{artist.ArtistName}} on the Web\r\n
\r\n
\r\n\r\n\r\n

Albums

\r\n
\r\n\r\n
\r\n
\r\n \r\n  \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
{{album.Title}}
\r\n
\r\n {{(album.Year ? 'in ' + album.Year : '')}}\r\n
\r\n
{{album.Description}}
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Add Album\r\n \r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {Artist, Album, ArtistResult} from '../business/entities';\r\n\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {Observable, of} from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport {ArtistEditor} from \"./artistEditor\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArtistService {\r\n constructor(private httpClient: HttpClient,\r\n private config: AppConfiguration) {\r\n console.log(\"ArtistService ctor\");\r\n }\r\n\r\n artistList: Artist[] = [];\r\n artist: Artist = null;\r\n albums: Album[] = [];\r\n error:string = \"\";\r\n\r\n listScrollPos = 0;\r\n\r\n\r\n getArtists(force: boolean = false): Observable {\r\n\r\n // use locally cached version\r\n if (force !== true && (this.artistList && this.artistList.length > 0))\r\n return of(this.artistList) as Observable;\r\n\r\n return this.httpClient.get(this.config.urls.url(\"artists\"))\r\n .pipe(map(artistList => {\r\n this.artistList = artistList;\r\n return this.artistList;\r\n }),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n\r\n getArtist(id): Observable {\r\n return this.httpClient.get(this.config.urls.url(\"artist\", id),\r\n this.config.requestHeaders)\r\n .pipe(map(artistResult => {\r\n this.artist = artistResult.Artist;\r\n this.artist.Albums = artistResult.Albums;\r\n this.artist.AlbumCount = artistResult.Albums.length;\r\n\r\n if (!this.artistList || this.artistList.length < 1)\r\n this.getArtists();\r\n\r\n return artistResult;\r\n }),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n saveArtist(artist): Observable {\r\n return this.httpClient.post(this.config.urls.url(\"saveArtist\"), artist,\r\n this.config.requestHeaders)\r\n .pipe(map(artistResult => {\r\n\r\n this.artist = artistResult.Artist;\r\n this.artist.Albums = artistResult.Albums;\r\n this.artist.AlbumCount = artistResult.Albums.length;\r\n\r\n this.updateArtist(artistResult.Artist);\r\n\r\n return artistResult;\r\n }),\r\n catchError(new ErrorInfo().parseObservableResponseError)\r\n );\r\n }\r\n\r\n // Update the artistList with an artist\r\n updateArtist(artist) {\r\n\r\n var idx = this.artistList.findIndex( (art:Artist) => art.Id == artist.Id );\r\n\r\n if (idx < 0)\r\n this.artistList.push(artist);\r\n else {\r\n this.artistList[idx] = artist;\r\n }\r\n }\r\n\r\n deleteArtist(artist:Artist):Observable {\r\n let url = this.config.urls.url(\"artist\",artist.Id);\r\n return this.httpClient.delete(url,\r\n this.config.requestHeaders)\r\n .pipe(catchError( new ErrorInfo().parseObservableResponseError) );\r\n }\r\n}\r\n\r\n","\r\nimport {Injectable, Component, OnInit, Input} from '@angular/core';\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {Observable, throwError} from 'rxjs';\r\n\r\n/**\r\n * A Bootstrap based alert display\r\n */\r\n@Component({\r\n //moduleId: module.id,\r\n selector: 'error-display',\r\n //templateUrl: 'errorDisplay.html'\r\n template: `\r\n
\r\n \r\n\r\n
\r\n \r\n {{error.header}}\r\n
\r\n \r\n\r\n {{error.message}}\r\n
\r\n `\r\n})\r\n\r\nexport class ErrorDisplay implements OnInit {\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Error object that is bound to the component.\r\n * @type {ErrorInfo}\r\n */\r\n @Input() error: ErrorInfo = new ErrorInfo();\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorInfo {\r\n constructor() {\r\n this.reset();\r\n }\r\n\r\n message: string;\r\n icon: string;\r\n dismissable: boolean;\r\n header: string;\r\n imageIcon: string;\r\n iconColor: string;\r\n\r\n response: Response = null;\r\n\r\n reset() {\r\n this.message = \"\";\r\n this.header = \"\";\r\n this.dismissable = false;\r\n this.icon = \"warning\";\r\n this.imageIcon = \"warning\";\r\n this.iconColor = \"inherit\";\r\n }\r\n\r\n /**\r\n * Low level method to set message properties\r\n * @param msg - the message to set to\r\n * @param icon? - sets the icon property (warning*)\r\n * @param iconColor? - sets the icon color (left as is)\r\n */\r\n show(msg: string, icon?: string, iconColor?: string) {\r\n this.message = msg;\r\n this.icon = icon ? icon : \"warning\";\r\n if (iconColor)\r\n this.iconColor = iconColor;\r\n\r\n this.fixupIcons();\r\n\r\n\r\n // if(this.icon == \"warning\")\r\n // toastr.warning(this.message);\r\n // if(this.icon == \"info\")\r\n // toastr.info(this.message);\r\n // if (this.icon == \"success\")\r\n // toastr.success(this.message);\r\n }\r\n\r\n /**\r\n * Displays an error alert\r\n * @param msg - Either a message string or error object with .message property\r\n */\r\n error(msg) {\r\n if (typeof(msg) === 'object' && msg.message)\r\n this.message = msg.message;\r\n else\r\n this.message = msg;\r\n\r\n this.show(this.message, \"warning\");\r\n }\r\n\r\n /**\r\n * DIsplays an info style alert\r\n * @param msg - message to display\r\n */\r\n info(msg) {\r\n this.show(msg, \"info\");\r\n }\r\n\r\n /**\r\n * Fixes up icons and colors based on standard icon settings\r\n * this method is called in internally after any of the helper\r\n * methods are called. You can call this when setting any icon\r\n * related properties manually.\r\n */\r\n fixupIcons() {\r\n var err = this;\r\n\r\n if (err.icon === \"info\")\r\n err.imageIcon = \"info-circle\";\r\n if (err.icon === \"error\" || err.icon === \"danger\" || err.icon === \"warning\") {\r\n err.imageIcon = \"warning\";\r\n err.iconColor = \"firebrick\";\r\n }\r\n if (err.icon === \"success\") {\r\n err.imageIcon = \"check\";\r\n err.iconColor = \"green\";\r\n }\r\n }\r\n\r\n /**\r\n * Parse a toPromise() .catch() clause error\r\n * from a response object and returns an errorInfo object\r\n * @param response\r\n * @returns {Promise|Promise}\r\n */\r\n parsePromiseResponseError(response) {\r\n\r\n if (response.hasOwnProperty(\"message\"))\r\n return Promise.reject(response);\r\n if (response.hasOwnProperty(\"Message\")) {\r\n response.message = response.Message;\r\n return Promise.reject(response);\r\n }\r\n\r\n let err = new ErrorInfo();\r\n err.response = response;\r\n err.message = response.statusText;\r\n\r\n try {\r\n let data = response.json();\r\n if (data && data.message)\r\n err.message = data.message;\r\n }\r\n catch (ex) {\r\n\r\n }\r\n\r\n return Promise.reject(err);\r\n }\r\n\r\n parseObservableResponseError(response): Observable {\r\n let err = new ErrorInfo();\r\n\r\n // HttpClient has an `error` property for raw JSON response\r\n if (response.hasOwnProperty(\"error\")) {\r\n try {\r\n if (typeof response.error === 'object' && response.error.message)\r\n err = response.error;\r\n else\r\n err = JSON.parse(response.error);\r\n } catch(ex) { }\r\n\r\n if(err.hasOwnProperty(\"message\") && err.message)\r\n return throwError(err);\r\n if (err.hasOwnProperty(\"Message\") && err['Message'])\r\n {\r\n err.message = err[\"Message\"];\r\n return throwError(err);\r\n }\r\n }\r\n if (response.hasOwnProperty(\"message\"))\r\n return throwError(response);\r\n if (response.hasOwnProperty(\"Message\")) {\r\n response.message = response.Message;\r\n return throwError(response);\r\n }\r\n\r\n err.response = response;\r\n err.message = response.statusText;\r\n\r\n try {\r\n let data = response.json();\r\n if (data && data.message)\r\n err.message = data.message;\r\n }\r\n catch (ex) {\r\n }\r\n\r\n if (!err.message)\r\n err.message = \"Unknown server failure.\";\r\n\r\n return throwError(err);\r\n }\r\n\r\n\r\n parseResponseError(response): ErrorInfo {\r\n let err = new ErrorInfo();\r\n\r\n // HttpClient has an `error` property for raw JSON response\r\n if (response.hasOwnProperty(\"error\")) {\r\n try {\r\n if (typeof response.error === 'object' && response.error.message)\r\n err = response.error;\r\n else\r\n err = JSON.parse(response.error);\r\n } catch(ex) { }\r\n\r\n if(err.hasOwnProperty(\"message\") && err.message)\r\n return err;\r\n if (err.hasOwnProperty(\"Message\") && err['Message'])\r\n {\r\n err.message = err[\"Message\"];\r\n return err;\r\n }\r\n }\r\n if (response.hasOwnProperty(\"message\"))\r\n return response;\r\n if (response.hasOwnProperty(\"Message\")) {\r\n response.message = response.Message;\r\n return response;\r\n }\r\n\r\n err.response = response;\r\n err.message = response.statusText;\r\n\r\n try {\r\n let data = response.json();\r\n if (data && data.message)\r\n err.message = data.message;\r\n }\r\n catch (ex) {\r\n }\r\n\r\n if (!err.message)\r\n err.message = \"Unknown server failure.\";\r\n\r\n return err;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {ApplicationStats} from \"./entities\";\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n\r\ndeclare var $:any;\r\ndeclare var toastr: any;\r\ndeclare var location: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfiguration {\r\n constructor(){\r\n console.log(\"AppConfiguration ctor\");\r\n this.setToastrOptions();\r\n\r\n if(location.port && (location.port == \"3000\") || (location.port== \"4200\") || (location.port == 5200) ) {\r\n this.urls.baseUrl = \"https://localhost:5001/\"; // local kestrel\r\n }\r\n else {\r\n //this.urls.baseUrl = \"http://localhost:5001/\"; // kestrel\r\n //this.urls.baseUrl = \"http://localhost:26448/\"; // iis Express\r\n //this.urls.baseUrl = \"http://localhost/albumviewer/\"; // iis\r\n //this.urls.baseUrl = https://albumviewer.west-wind.com/\"; // online\r\n this.urls.baseUrl = location.origin.trimEnd('/') + '/';\r\n }\r\n\r\n // always online\r\n //this.urls.baseUrl = \"https://albumviewer.west-wind.com/\"; // online\r\n }\r\n\r\n // top level search text\r\n searchText = \"\";\r\n activeTab = \"albums\";\r\n isSearchAllowed = true;\r\n applicationStats:ApplicationStats = new ApplicationStats();\r\n\r\n urls = {\r\n baseUrl: \"./\",\r\n //baseUrl: \"http://localhost/albumviewer/\",\r\n //baseUrl: \"http://localhost:5000/\",\r\n //baseUrl: \"https://albumviewer2swf.west-wind.com/\",\r\n albums: \"api/albums\",\r\n album: \"api/album\",\r\n artists: \"api/artists\",\r\n artist: \"api/artist\",\r\n artistLookup: \"api/artistlookup?search=\",\r\n saveArtist: \"api/artist\",\r\n login: \"api/login\", //\"api/login\",\r\n authenticate: \"api/authenticate\",\r\n logout: \"api/logout\",\r\n isAuthenticated: \"api/isAuthenticated\",\r\n reloadData: \"api/reloadData\",\r\n applicationStats: \"api/applicationstats\",\r\n url: (name,parm1?,parm2?,parm3?) => {\r\n var url = this.urls.baseUrl + this.urls[name];\r\n if (parm1)\r\n url += \"/\" + parm1;\r\n if (parm2)\r\n url += \"/\" + parm2;\r\n if (parm3)\r\n url += \"/\" + parm3;\r\n\r\n return url;\r\n }\r\n };\r\n\r\n\r\n setToastrOptions() {\r\n toastr.options.closeButton = true;\r\n toastr.options.positionClass = \"toast-bottom-right\";\r\n }\r\n\r\n /**\r\n * Http Request options to for requests\r\n * @type {RequestOptions}\r\n */\r\n requestHeaders = {\r\n withCredentials: true,\r\n }\r\n}\r\n\r\n","import {Injectable, OnInit} from '@angular/core';\r\ndeclare var $:any;\r\n\r\n@Injectable()\r\nexport class Album {\r\n Id:number = 0;\r\n ArtistId:number = 0;\r\n Title:string = null;\r\n Description:string = null;\r\n Year:number = 0;\r\n ImageUrl:string = null;\r\n AmazonUrl:string = null;\r\n SpotifyUrl:string = null;\r\n\r\n Artist:Artist = new Artist();\r\n Tracks:Track[] = [];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Artist {\r\n Id:number = 0;\r\n ArtistName:string = null;\r\n Description:string = null;\r\n ImageUrl:string = null;\r\n AmazonUrl:string = null;\r\n AlbumCount:number = 0;\r\n Albums:Album[] = [];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArtistResult {\r\n Artist: Artist = null;\r\n Albums: Album[] = [];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Track {\r\n Id:number = 0;\r\n AlbumId:number = 0;\r\n SongName:string = null;\r\n Length:string = null;\r\n Bytes:number = 0;\r\n UnitPrice:number = 0;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationStats {\r\n OsPlatform:string = null;\r\n AngularVersion = \"Unknown\"; \r\n AspDotnetVersion = \"Unknown\";\r\n DataMode = \"Unknown\";\r\n}\r\n","import {Album} from './../business/entities';\r\nimport {Component, OnInit, Input, OnDestroy} from '@angular/core';\r\nimport {style, animate, state, transition, trigger} from '@angular/animations';\r\nimport {AlbumService} from \"./albumService\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {slideIn, slideInLeft} from \"../common/animations\";\r\n\r\n@Component({\r\n selector: 'album-display',\r\n templateUrl: './albumDisplay.html',\r\n animations: [ slideIn ]\r\n})\r\nexport class AlbumDisplay implements OnInit {\r\n\r\n @Input() album:Album = new Album();\r\n error = new ErrorInfo();\r\n aniFrame = 'in';\r\n\r\n constructor(private route: ActivatedRoute,\r\n private router: Router,\r\n private config: AppConfiguration,\r\n private albumService: AlbumService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.config.isSearchAllowed = false;\r\n this.config.activeTab = \"albums\";\r\n this.aniFrame = 'in';\r\n\r\n //console.log(\"AlbumDisplay\");\r\n if(!this.album.Title) {\r\n var id = this.route.snapshot.params[\"id\"];\r\n if (id < 1)\r\n return;\r\n\r\n this.albumService.getAlbum(id)\r\n .subscribe( result => {\r\n this.album = result;\r\n }, err => this.error.error(err));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.aniFrame = 'out';\r\n console.log(\"ngDestroy\")\r\n }\r\n\r\n deleteAlbum(album) {\r\n this.albumService.deleteAlbum(album)\r\n .subscribe( result =>{\r\n this.error.info(\"Album '\" + album.Title + \"' has been deleted.\");\r\n setTimeout(() => this.router.navigate([\"/albums\"]), 1500); \r\n },\r\n (err)=> this.error.error(err));\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n Albums\r\n Edit\r\n Buy\r\n\r\n Listen\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {{album.Title}}\r\n

\r\n\r\n
\r\n\r\n by {{album.Artist.ArtistName}}\r\n {{(album.Year ? 'in ' + album.Year : '')}}\r\n
\r\n
\r\n\r\n
\r\n  \r\n Buy   \r\n Play\r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n More from\r\n \r\n {{album.Artist.ArtistName}}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {AppConfiguration} from \"../business/appConfiguration\";\r\nimport {UserInfo} from \"../business/userInfo\";\r\nimport {ErrorInfo} from \"../common/errorDisplay\";\r\nimport {HttpClient } from \"@angular/common/http\";\r\nimport { ApplicationStats } from '../business/entities';\r\n\r\ndeclare var $:any;\r\ndeclare var toastr:any;\r\ndeclare var window: any;\r\n\r\n@Component({\r\n selector: 'options',\r\n templateUrl: 'options.html'\r\n})\r\nexport class OptionsComponent implements OnInit {\r\n error: ErrorInfo = new ErrorInfo();\r\n\r\n constructor(public config: AppConfiguration,\r\n public user: UserInfo,\r\n private http: HttpClient) {\r\n }\r\n\r\n ngOnInit() {\r\n this.config.isSearchAllowed = false;\r\n if (this.config.applicationStats.OsPlatform == null) {\r\n this.http.get(this.config.urls.url(\"applicationStats\"))\r\n\t\t\t\t.subscribe(stats => {\r\n this.config.applicationStats = stats;\r\n\r\n var $ngv = $(\"[ng-version]\");\r\n if ($ngv.length > 0)\r\n this.config.applicationStats.AngularVersion = $ngv.attr(\"ng-version\");\r\n\r\n },response=> {\r\n\t\t\t\t\tlet err = new ErrorInfo().parseResponseError(response);\r\n\t\t\t\t\tlet msg = err.message;\r\n\t\t\t\t\ttoastr.error(msg);\r\n\t\t\t\t});\r\n }\r\n }\r\n\r\n reloadData() {\r\n if (!this.user.isAuthenticated)\r\n window.location.hash = \"login\";\r\n\r\n this.http.get(this.config.urls.url(\"reloadData\") )\r\n\t\t\t.subscribe(\r\n success => {\r\n if (success)\r\n toastr.success(\"Data has been reloaded.\");\r\n else\r\n toastr.error(\"Unable to reload data.\");\r\n }, response => {\r\n let err = new ErrorInfo().parseResponseError(response);\r\n toastr.error(err.message);\r\n\r\n return err;\r\n });\r\n }\r\n}\r\n","\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'about',\r\n templateUrl: 'about.html'\r\n})\r\nexport class AboutComponent {\r\n\r\n}\r\n","
\r\n

\r\n About the AlbumViewer Sample\r\n

\r\n\r\n
\r\n

ASP.NET Core API backend

\r\n

\r\n This application runs an ASP.NET Core 2.0 API server with a\r\n JSON Service backend . \r\n

\r\n
\r\n\r\n
\r\n

Angular Front End

\r\n

\r\n The client interface uses Angular 7 to provide the front end logic and\r\n UI management features. There are album and artist services that\r\n talk to the backend interface and page level components and child\r\n components that handle individual view pages of the application.\r\n

\r\n
\r\n\r\n
\r\n

Mobile enabled based on modified Bootstrap 4.0 Interface

\r\n

\r\n The base Bootstrap framework is used for the core UI features\r\n of the interface. The base template has been customized for\r\n this application.\r\n

\r\n

\r\n The application is mobile focused and uses custom resizing\r\n and toolbar relocation based on the screen/device size used.\r\n The application should be comfortably usable from phone up to full screen\r\n desktop applications.\r\n

\r\n
\r\n\r\n
\r\n Back to Application\r\n\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { AlbumList } from './albums/albumList';\r\nimport { AlbumDisplay} from './albums/albumDisplay';\r\nimport {AlbumEditor } from './albums/albumEditor';\r\nimport { ArtistList } from './artists/artistList';\r\nimport { ArtistDisplay} from \"./artists/artistDisplay\";\r\nimport {OptionsComponent} from \"./options/options\";\r\nimport {LoginComponent} from \"./common/login\";\r\nimport {AboutComponent} from \"./options/about\";\r\n\r\nconst routes: Routes = [\r\n\t{path: '', redirectTo: 'albums', pathMatch: 'full'},\r\n\t{path: 'albums', component: AlbumList },\r\n\t{path: 'album/:id', component: AlbumDisplay },\r\n\t{path: 'album/edit/:id', component: AlbumEditor },\r\n\t{path: 'artists', component: ArtistList },\r\n\t{path: 'artist/:id', component: ArtistDisplay },\r\n\t{path: 'options', component: OptionsComponent },\r\n\t{ path: 'login', component: LoginComponent },\r\n\t{ path: 'logout', component: LoginComponent },\r\n\t{ path: 'about', component: AboutComponent}\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule], \r\n providers: []\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpEvent, HttpInterceptor, HttpHandler, HttpRequest\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport {UserInfo} from \"./userInfo\";\r\n\r\n/** Inject With Credentials into the request */\r\n@Injectable()\r\nexport class HttpRequestInterceptor implements HttpInterceptor {\r\n\r\n constructor(private userInfo:UserInfo){\r\n\r\n }\r\n intercept(req: HttpRequest, next: HttpHandler):\r\n Observable> {\r\n console.log(\"interceptor: \" + req.url);\r\n\r\n req = req.clone({\r\n withCredentials: true,\r\n setHeaders: { \"Authorization\": \"Bearer \" + this.userInfo.token }\r\n });\r\n\r\n return next.handle(req);\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) { \r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule,\r\n {\r\n // force compiler not remove template white space\r\n preserveWhitespaces: false,\r\n});\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}