Skip to content

Commit

Permalink
implify class typing
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Mrowetz committed May 6, 2017
1 parent 87d7e70 commit 79c1ae3
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 31 deletions.
28 changes: 2 additions & 26 deletions src/ts/typing/context.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { OverlayManager } from "../waterfall/details-overlay/overlay-manager";
import { OverlayChangeEvent, OverlayChangeSubscriber } from "./open-overlay";
import { PubSub } from "../waterfall/details-overlay/pub-sub";
import { ChartRenderOption } from "./options";
import { WaterfallEntry } from "./waterfall";

/**
* Context object that is passed to (usually stateless) child-functions
* to inject state and dependencies
*/
export interface Context {
/** Publish and Subscribe instance for overlay updates */
pubSub: PubSubClass;
pubSub: PubSub;
/** Overlay (popup) instance manager */
overlayManager: OverlayManager;
/** horizontal unit (duration in ms of 1%) */
Expand All @@ -19,26 +18,3 @@ export interface Context {
/** Chart config/customization options */
options: ChartRenderOption;
}

export interface PubSubClass {
subscribeToOverlayChanges: (fn: OverlayChangeSubscriber) => void;
subscribeToSpecificOverlayChanges: (index: number, fn: OverlayChangeSubscriber) => void;
publishToOverlayChanges: (change: OverlayChangeEvent) => void;
}

export interface OverlayManagerClass {
/** all open overlays height combined */
getCombinedOverlayHeight: () => number;

/** Opens an overlay - rerenders others */
openOverlay: (index: number, y: number, detailsHeight: number, entry: WaterfallEntry,
rowItems: SVGAElement[]) => void;
/** toggles an overlay - rerenders others */
toggleOverlay: (index: number, y: number, detailsHeight: number, entry: WaterfallEntry,
rowItems: SVGAElement[]) => void;

/** closes on overlay - rerenders others internally */
closeOverlay: (index: number, detailsHeight: number, rowItems: SVGAElement[]) => void;

// constructor(context: Context, overlayHolder: SVGGElement);
}
5 changes: 3 additions & 2 deletions src/ts/waterfall/details-overlay/overlay-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import {
isTabDown,
isTabUp,
} from "../../helpers/misc";
import { Context, OverlayManagerClass } from "../../typing/context";
import { Context } from "../../typing/context";
import { OpenOverlay, OverlayChangeEvent } from "../../typing/open-overlay";
import { WaterfallEntry } from "../../typing/waterfall";
import { createRowInfoOverlay } from "./svg-details-overlay";

/** Overlay (popup) instance manager */
class OverlayManager implements OverlayManagerClass {
class OverlayManager {
private static showFullName = (el: Element) => {
el.getElementsByClassName("row-fixed").item(0)
.dispatchEvent(new MouseEvent("mouseenter"));
Expand Down Expand Up @@ -192,6 +192,7 @@ class OverlayManager implements OverlayManagerClass {
rowItems.forEach(updateRow);
}
};

export {
OverlayManager
};
Expand Down
14 changes: 12 additions & 2 deletions src/ts/waterfall/details-overlay/pub-sub.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
// simple pub/sub for change to the overlay
import { PubSubClass } from "../../typing/context";
import { OverlayChangeEvent, OverlayChangeSubscriber } from "../../typing/open-overlay";

export default class PubSub implements PubSubClass {
class PubSub {
private subscribers: OverlayChangeSubscriber[] = [];

/** Call `fn` whenever a new change is publisched on OverlayChanges channel */
public subscribeToOverlayChanges(fn: OverlayChangeSubscriber) {
this.subscribers.push(fn);
}

/**
* Call `fn` whenever a new change for `index` are publisched
* on OverlayChanges channel
*/
public subscribeToSpecificOverlayChanges(index: number, fn: OverlayChangeSubscriber) {
this.subscribers.push((evt) => {
if (evt.changedIndex === index) {
Expand All @@ -17,7 +21,13 @@ export default class PubSub implements PubSubClass {
});
}

/** Publish a change on OverlayChanges channel */
public publishToOverlayChanges(change: OverlayChangeEvent) {
this.subscribers.forEach((fn) => fn(change));
}
};

export {
PubSub
}
export default PubSub;
2 changes: 1 addition & 1 deletion src/ts/waterfall/svg-chart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {HoverEvtListeners} from "../typing/svg-alignment-helpers";
import {Mark} from "../typing/waterfall";
import {WaterfallData, WaterfallEntry} from "../typing/waterfall";
import OverlayManager from "./details-overlay/overlay-manager";
import PubSub from "./details-overlay/pub-sub";
import { PubSub } from "./details-overlay/pub-sub";
import * as row from "./row/svg-row";
import * as alignmentHelper from "./sub-components/svg-alignment-helper";
import * as generalComponents from "./sub-components/svg-general-components";
Expand Down

0 comments on commit 79c1ae3

Please sign in to comment.