dev@171
|
1 /**
|
dev@171
|
2 * Created by lucast on 21/03/2017.
|
dev@171
|
3 */
|
dev@171
|
4 import {Component, Input} from "@angular/core";
|
dev@178
|
5 import Waves from 'waves-ui';
|
dev@178
|
6 import {EventEmitter} from 'events';
|
dev@178
|
7
|
dev@178
|
8 export interface PartialEventEmitter {
|
dev@178
|
9 on(event: string|symbol, listener: Function): void;
|
dev@178
|
10 }
|
dev@178
|
11
|
dev@178
|
12 class NotifyingTimeContext extends Waves.core.TimelineTimeContext
|
dev@178
|
13 implements PartialEventEmitter {
|
dev@178
|
14
|
dev@178
|
15 private eventEmitter: EventEmitter;
|
dev@178
|
16
|
dev@178
|
17 constructor(pixelsPerSecond: number, visibleWidth: number) {
|
dev@178
|
18 super(pixelsPerSecond, visibleWidth);
|
dev@178
|
19 this.eventEmitter = new EventEmitter();
|
dev@178
|
20 }
|
dev@178
|
21
|
dev@178
|
22 get offset(){
|
dev@178
|
23 return super.offset;
|
dev@178
|
24 }
|
dev@178
|
25
|
dev@178
|
26 set offset(value: number) {
|
dev@178
|
27 if (value !== this.offset) {
|
dev@178
|
28 this.eventEmitter.emit('offset');
|
dev@178
|
29 }
|
dev@178
|
30 super.offset = value;
|
dev@178
|
31 }
|
dev@178
|
32
|
dev@178
|
33 get zoom(){
|
dev@178
|
34 return super.zoom;
|
dev@178
|
35 }
|
dev@178
|
36
|
dev@178
|
37 set zoom(value: number) {
|
dev@178
|
38 if (value !== this.zoom) {
|
dev@178
|
39 this.eventEmitter.emit('zoom');
|
dev@178
|
40 }
|
dev@178
|
41 super.zoom = value;
|
dev@178
|
42 }
|
dev@178
|
43
|
dev@178
|
44 on(event: string|symbol, listener: Function): void {
|
dev@178
|
45 this.eventEmitter.on(event, listener);
|
dev@178
|
46 }
|
dev@178
|
47 }
|
dev@171
|
48
|
dev@171
|
49 @Component({
|
dev@171
|
50 selector: 'ugly-notebook-feed',
|
dev@171
|
51 templateUrl: './notebook-feed.component.html',
|
dev@171
|
52 styleUrls: ['./notebook-feed.component.css']
|
dev@171
|
53 })
|
dev@171
|
54 export class NotebookFeedComponent {
|
dev@171
|
55 private _audioBuffer: AudioBuffer;
|
dev@181
|
56 sharedTimeContext: TimelineTimeContext;
|
dev@171
|
57
|
dev@171
|
58
|
dev@171
|
59 @Input()
|
dev@171
|
60 set audioBuffer(buffer: AudioBuffer) {
|
dev@171
|
61 this._audioBuffer = buffer || undefined;
|
dev@171
|
62 if (this.audioBuffer) {
|
dev@171
|
63
|
dev@171
|
64 }
|
dev@171
|
65 }
|
dev@171
|
66
|
dev@171
|
67 get audioBuffer(): AudioBuffer {
|
dev@171
|
68 return this._audioBuffer;
|
dev@171
|
69 }
|
dev@181
|
70
|
dev@181
|
71 constructor() {
|
dev@181
|
72 this.sharedTimeContext = new NotifyingTimeContext(100, 1000);
|
dev@181
|
73 }
|
dev@171
|
74 }
|