Mercurial > hg > ugly-duckling
changeset 178:539dd65d56ea
Extend TimelineTimeContext so emit events when changing offset and zoom
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Wed, 22 Mar 2017 11:14:40 +0000 |
parents | 4a2d21f73b9f |
children | dadde8a1648c |
files | src/app/notebook-feed/notebook-feed.component.ts |
diffstat | 1 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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',