diff --git a/src/models/options.ts b/src/models/options.ts index 4bb935a..0bdf129 100644 --- a/src/models/options.ts +++ b/src/models/options.ts @@ -1,18 +1,10 @@ import { Options, - TickOrientation, - TimeFormat, - BrushOrientation, - AxisFormat, - CrosshairOrientation, - KeyEvent, - PanOrientation, - ScrollPanOrientation, - ScrollPanDirection, - GridOptions, - AxesOptions, - CrosshairOptions, - Margin + GridOptions, AxesOptions, AxisFormat, + CrosshairOptions, CrosshairOrientation, + ZoomEvents, MouseZoomEvent, MousePanEvent, DoubleClickEvent, ScrollZoomEvent, ScrollPanEvent, + ScrollPanOrientation, ScrollPanDirection, PanOrientation, KeyEvent, BrushOrientation, + Margin, TimeFormat, } from '../types'; import lodashDefaultsDeep from 'lodash/defaultsDeep'; @@ -139,6 +131,31 @@ export class CoreOptions { return this._options.margin; } + // events + get allEvents(): ZoomEvents { + return this._options.zoomEvents; + } + + get mouseZoomEvent(): MouseZoomEvent { + return this._options.zoomEvents.mouse.zoom; + } + + get mousePanEvent(): MousePanEvent { + return this._options.zoomEvents.mouse.pan; + } + + get doubleClickEvent(): DoubleClickEvent { + return this._options.zoomEvents.mouse.doubleClick; + } + + get scrollZoomEvent(): ScrollZoomEvent { + return this._options.zoomEvents.scroll.zoom; + } + + get scrollPanEvent(): ScrollPanEvent { + return this._options.zoomEvents.scroll.pan; + } + // event callbacks callbackRenderStart(): void { if(has(this._options.eventsCallbacks, 'renderStart')) { diff --git a/src/types.ts b/src/types.ts index feaa196..fc872f3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -41,38 +41,7 @@ export type Options = { from: number, to: number }; - zoomEvents?: { - mouse?: { - zoom?: { // same as brush - isActive: boolean; - keyEvent?: KeyEvent; // main(or base, or smth) / shift / alt / etc - orientation?: BrushOrientation; // to BrushOrientation: vertical, horizaontal, square, rectange - }, - pan?: { - isActive: boolean; - keyEvent?: KeyEvent; // main(or base, or smth) / shift / alt / etc - orientation?: PanOrientation; - }, - doubleClick?: { - isActive: boolean; - keyEvent?: KeyEvent; - }, - }, - scroll?: { - zoom?: { - isActive: boolean; - keyEvent?: KeyEvent; - orientation?: PanOrientation; // TODO: rename - }, - pan?: { - isActive: boolean; - keyEvent?: KeyEvent; - panStep?: number; - orientation?: ScrollPanOrientation; - direction?: ScrollPanDirection; - }, - }, - } + zoomEvents?: ZoomEvents; renderTicksfromTimestamps?: boolean; renderLegend?: boolean; }; @@ -187,3 +156,46 @@ export type SvgElParams = { xScale: d3.ScaleLinear, yScale: d3.ScaleLinear, } + +export type ZoomEvents = { + mouse?: { + zoom?: MouseZoomEvent; + pan?: MousePanEvent; + doubleClick?: DoubleClickEvent; + }, + scroll?: { + zoom?: ScrollZoomEvent; + pan?: ScrollPanEvent; + } +} + +export type MouseZoomEvent = { // same as brush + isActive?: boolean; + keyEvent?: KeyEvent; // main(or base, or smth) / shift / alt / etc + orientation?: BrushOrientation; // to BrushOrientation: vertical, horizaontal, square, rectange +} + +export type MousePanEvent = { // same as brush + isActive?: boolean; + keyEvent?: KeyEvent; // main(or base, or smth) / shift / alt / etc + orientation?: PanOrientation; +} + +export type DoubleClickEvent = { + isActive: boolean; + keyEvent?: KeyEvent; +} + +export type ScrollZoomEvent = { + isActive?: boolean; + keyEvent?: KeyEvent; + orientation?: PanOrientation; // TODO: rename +} + +export type ScrollPanEvent = { + isActive?: boolean; + keyEvent?: KeyEvent; + panStep?: number; + orientation?: ScrollPanOrientation; + direction?: ScrollPanDirection; +}