# HG changeset patch # User Lucas Thompson # Date 1490181280 0 # Node ID 539dd65d56ea28148945f9f8c5514ed0ce29528a # Parent 4a2d21f73b9fb70e6d444c693f14d43f252b1b35 Extend TimelineTimeContext so emit events when changing offset and zoom diff -r 4a2d21f73b9f -r 539dd65d56ea src/app/notebook-feed/notebook-feed.component.ts --- a/src/app/notebook-feed/notebook-feed.component.ts Wed Mar 22 11:13:23 2017 +0000 +++ b/src/app/notebook-feed/notebook-feed.component.ts Wed Mar 22 11:14:40 2017 +0000 @@ -2,6 +2,49 @@ * 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',