Mercurial > hg > ugly-duckling
annotate src/app/app.component.ts @ 40:f7244f2155a3
Setup some scaffolding for bootstrapping a worker and loading into a service, providing a mechanism for implementing most of the logic which runs inside the worker in TypeScript.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Thu, 01 Dec 2016 15:46:33 +0000 |
parents | f6e58c2accb0 |
children | 933c64ebcd13 |
rev | line source |
---|---|
dev@31 | 1 import {Component} from '@angular/core'; |
dev@37 | 2 import {AudioPlayerService} from "./services/audio-player/audio-player.service"; |
angular-cli@0 | 3 |
angular-cli@0 | 4 @Component({ |
angular-cli@0 | 5 selector: 'app-root', |
angular-cli@0 | 6 templateUrl: './app.component.html', |
angular-cli@0 | 7 styleUrls: ['./app.component.css'] |
angular-cli@0 | 8 }) |
angular-cli@0 | 9 export class AppComponent { |
dev@31 | 10 audioBuffer: AudioBuffer; // TODO consider revising |
dev@1 | 11 |
dev@31 | 12 constructor(private audioService: AudioPlayerService) {} |
dev@16 | 13 |
dev@31 | 14 onFileOpened(file: File) { |
dev@31 | 15 const reader: FileReader = new FileReader(); |
dev@31 | 16 const mimeType = file.type; |
dev@31 | 17 reader.onload = (event: any) => { |
dev@31 | 18 this.audioService.loadAudioFromUrl( |
dev@31 | 19 URL.createObjectURL(new Blob([event.target.result], {type: mimeType})) |
dev@31 | 20 ); |
dev@31 | 21 // TODO use a rxjs/Subject instead? |
dev@31 | 22 this.audioService.decodeAudioData(event.target.result).then(audioBuffer => { |
dev@31 | 23 this.audioBuffer = audioBuffer; |
dev@31 | 24 }); |
dev@31 | 25 }; |
dev@31 | 26 reader.readAsArrayBuffer(file); |
dev@16 | 27 } |
angular-cli@0 | 28 } |