Mercurial > hg > ugly-duckling
view src/app/notebook-feed/notebook-feed.component.ts @ 181:7cd274d296a3
Allow for sharing time context amongst some analysis items. This approach may be backed out.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Wed, 22 Mar 2017 11:17:51 +0000 |
parents | 539dd65d56ea |
children | a50feba0d7f0 |
line wrap: on
line source
/** * Created by lucast on 21/03/2017. */ import {Component, Input} from "@angular/core"; import Waves from 'waves-ui'; import {EventEmitter} from 'events'; export interface PartialEventEmitter { on(event: string|symbol, listener: Function): void; } class NotifyingTimeContext extends Waves.core.TimelineTimeContext implements PartialEventEmitter { private eventEmitter: EventEmitter; constructor(pixelsPerSecond: number, visibleWidth: number) { super(pixelsPerSecond, visibleWidth); this.eventEmitter = new EventEmitter(); } get offset(){ return super.offset; } set offset(value: number) { if (value !== this.offset) { this.eventEmitter.emit('offset'); } super.offset = value; } get zoom(){ return super.zoom; } set zoom(value: number) { if (value !== this.zoom) { this.eventEmitter.emit('zoom'); } super.zoom = value; } on(event: string|symbol, listener: Function): void { this.eventEmitter.on(event, listener); } } @Component({ selector: 'ugly-notebook-feed', templateUrl: './notebook-feed.component.html', styleUrls: ['./notebook-feed.component.css'] }) export class NotebookFeedComponent { private _audioBuffer: AudioBuffer; sharedTimeContext: TimelineTimeContext; @Input() set audioBuffer(buffer: AudioBuffer) { this._audioBuffer = buffer || undefined; if (this.audioBuffer) { } } get audioBuffer(): AudioBuffer { return this._audioBuffer; } constructor() { this.sharedTimeContext = new NotifyingTimeContext(100, 1000); } }