@equinor/videx-wellog
Version:
Visualisation components for wellbore log data
67 lines (66 loc) • 2.48 kB
TypeScript
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);
}