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',