UNPKG

@equinor/videx-wellog

Version:

Visualisation components for wellbore log data

67 lines (66 loc) 2.48 kB
import { TrackOptions, Transform, OnMountEvent, OnUnmountEvent, OnUpdateEvent, OnRescaleEvent } from './interfaces'; import { D3Selection, Scale } from '../common/interfaces'; import { LegendTriggerFunction } from '../utils/legend-helper'; /** * Abstract base class for wellog tracks */ export default abstract class Track<TRACK_OPTIONS extends TrackOptions = TrackOptions> { options: TRACK_OPTIONS; id: string | number; elm: HTMLElement; loader: D3Selection; transform: Transform; scale: Scale; error: Error | string; order: number; legendUpdate?: LegendTriggerFunction; protected _data: any; protected _isLoading: boolean; protected _mounted: boolean; constructor(id: string | number, options?: TRACK_OPTIONS); /** * Calls OnMount and OnUpdate. Useful if track is stand-alone */ init(elm: HTMLElement, scale: Scale): void; /** * Handler for onMount event. Called by container when track DOM element * is added to the DOM model. */ onMount(trackEvent: OnMountEvent): void; /** * Handler for onUnmount event. Called when track DOM-element is remove from the * DOM model. Typically, trackEvent will be an empty object, but depends on container. */ onUnmount(trackEvent?: OnUnmountEvent): void; /** * Handler for onChange event. Called by container when track is resized. */ onUpdate(trackEvent: OnUpdateEvent): void; /** * Handler for onRescale event. Called by container when y-scale domain/transform is changed. */ onRescale(trackEvent: OnRescaleEvent): void; /** * Should be called from track implementation in case an * unrecoverable error occurs. */ onError(error: Error | string): void; onDataLoaded(data?: any): void; /** * Initiate loading of data for track. Will set response to the track's * data property. If showLoader is set to true, the current track will be * hidden, and (if supplied) the loader element will be shown, until data * is resolved. Calls onDataLoaded if implemented by track. */ loadData(data: (Promise<any> | Function | any), showLoader?: boolean): void; clearData(): void; /** * Allow triggering of update event without parameters */ refresh(): void; get isLoading(): boolean; set isLoading(val: boolean); get isMounted(): boolean; get data(): any; set data(data: Promise<any> | Function | any); }