From caf8f2590fe936493e0b76c67ac5433a78671e37 Mon Sep 17 00:00:00 2001 From: Michael Mrowetz Date: Sat, 6 May 2017 12:25:00 +0900 Subject: [PATCH] simplify OverlayChangeEvent and generalize forEachNodeList --- src/ts/helpers/dom.ts | 5 +++++ src/ts/typing/open-overlay.ts | 3 --- src/ts/waterfall/details-overlay/overlay-manager.ts | 5 +---- src/ts/waterfall/details-overlay/svg-details-overlay.ts | 9 +++------ 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/ts/helpers/dom.ts b/src/ts/helpers/dom.ts index 29fd7b66..8786993e 100644 --- a/src/ts/helpers/dom.ts +++ b/src/ts/helpers/dom.ts @@ -67,3 +67,8 @@ export function getLastItemOfNodeList(list: NodeListOf) { } return list.item(list.length - 1); } + +// /** Calls `fn` with each element of `els` */ +export function forEachNodeList(els: NodeListOf, fn: (el: T, index: number) => any) { + Array.prototype.forEach.call(els, fn); +} diff --git a/src/ts/typing/open-overlay.ts b/src/ts/typing/open-overlay.ts index 343e364c..e8a34cdf 100644 --- a/src/ts/typing/open-overlay.ts +++ b/src/ts/typing/open-overlay.ts @@ -22,11 +22,8 @@ export interface OpenOverlay { export interface OverlayChangeEvent { type: EventType; - /** list of currenly open overlays */ - openOverlays: OpenOverlay[]; /** index that triggerd the change */ changedIndex?: number; - changedOverlay: OpenOverlay; combinedOverlayHeight: number; } diff --git a/src/ts/waterfall/details-overlay/overlay-manager.ts b/src/ts/waterfall/details-overlay/overlay-manager.ts index 69691acd..f6ddfbf7 100644 --- a/src/ts/waterfall/details-overlay/overlay-manager.ts +++ b/src/ts/waterfall/details-overlay/overlay-manager.ts @@ -80,9 +80,7 @@ class OverlayManager { this.renderOverlays(detailsHeight, rowItems); this.context.pubSub.publishToOverlayChanges({ "changedIndex": index, - "changedOverlay": newOverlay, "combinedOverlayHeight": self.getCombinedOverlayHeight(), - "openOverlays": self.openOverlays, "type": "open", } as OverlayChangeEvent); } @@ -112,7 +110,6 @@ class OverlayManager { this.context.pubSub.publishToOverlayChanges({ "changedIndex": index, "combinedOverlayHeight": self.getCombinedOverlayHeight(), - "openOverlays": self.openOverlays, "type": "closed", } as OverlayChangeEvent); } @@ -158,7 +155,7 @@ class OverlayManager { overlayHolder.appendChild(infoOverlay); updateHeight(overlay, y, infoOverlay.getBoundingClientRect().height); }; - let updateRow = (rowItem, index) => { + let updateRow = (rowItem: SVGAElement, index: number) => { const overlay = find(this.openOverlays, (o) => o.index === index); const overlayEl = rowItem.nextElementSibling.firstElementChild as SVGGElement; this.realignRow(rowItem, currY); diff --git a/src/ts/waterfall/details-overlay/svg-details-overlay.ts b/src/ts/waterfall/details-overlay/svg-details-overlay.ts index 2244dde1..27fd83b1 100644 --- a/src/ts/waterfall/details-overlay/svg-details-overlay.ts +++ b/src/ts/waterfall/details-overlay/svg-details-overlay.ts @@ -1,11 +1,8 @@ +import { forEachNodeList } from "../../helpers/dom"; import * as svg from "../../helpers/svg"; import { OpenOverlay } from "../../typing/open-overlay"; import { createDetailsBody } from "./html-details-body"; -export function forEach(els: NodeListOf, fn: (el: Element, index: number) => any) { - Array.prototype.forEach.call(els, fn); -} - function createCloseButtonSvg(y: number): SVGGElement { let closeBtn = svg.newA("info-overlay-close-btn"); @@ -63,13 +60,13 @@ export function createRowInfoOverlay(overlay: OpenOverlay, y: number, detailsHei let setTabStatus = (tabIndex: number) => { overlay.openTabIndex = tabIndex; - forEach(tabs, (tab: HTMLDivElement, j) => { + forEachNodeList(tabs, (tab: HTMLDivElement, j) => { tab.style.display = (tabIndex === j) ? "block" : "none"; buttons.item(j).classList.toggle("active", (tabIndex === j)); }); }; - forEach(buttons, (btn, tabIndex) => { + forEachNodeList(buttons, (btn, tabIndex) => { btn.addEventListener("click", () => setTabStatus(tabIndex)); });