@equinor/videx-wellog
Version:
Visualisation components for wellbore log data
84 lines (83 loc) • 2.8 kB
TypeScript
import { TrackOptions } from '../interfaces';
import { AnyPlotOptions } from '../../plots/interfaces';
import { Scale, Domain } from '../../common/interfaces';
import { Plot } from '../../plots';
/**
* Config object used to define a plot in the graph track options
*/
export interface PlotConfig {
id: string | number;
type: string;
options?: AnyPlotOptions;
}
export declare type PlotCreatorFunction = (config: PlotConfig, trackScale: Scale) => Plot;
/**
* Factory object for creating an instance of a plot given a type
*/
export interface PlotFactory {
[propName: string]: PlotCreatorFunction;
}
interface PaddingConfig {
size: number;
hideExcessData: boolean;
}
/**
* Available graph track options
*/
export interface GraphTrackOptions extends TrackOptions {
/**
* Collection of plot config objects
*/
plots?: PlotConfig[];
/**
* Data for all plots in the track. May be of any type or a function or promise
* returning data. The plots will need to have a data accessor function defined, that
* can pick the data it needs from this value.
*/
data?: Promise<any> | Function | any;
/**
* Whether or not to show the loader or not (if configured)
*/
showLoader?: boolean;
/**
* Scale type to use. This scale applies to all plots unless the plot config has its
* own scale and domain set. Can be 'linear' or 'log'.
*/
scale?: string;
/**
* Domain to use for the graph data range
*/
domain?: Domain;
/**
* Determines if the legend should be clickable to toggle plots on/off when used within a
* LogController with graphLegendConfig enabled. Default is true.
*/
togglePlotFromLegend?: boolean;
/**
* Plot factory to use. If using custom plot types, you need to pass an extended/custom plot
* factory that knows how to create an instance of plot types which are not part of the libs
* standard plot types.
*/
plotFactory?: PlotFactory;
/**
* An optional function to transform the track data before being passed to the plots. This
* is typically used to downsample data at low zoom levels.
*/
transform?: (data: any, scale: Scale) => Promise<any>;
/**
* Set to true to always run data transform function. By default (false), transforms will only run
* if the domain (zoom level) changes.
*/
alwaysTransform?: boolean;
/**
* Option to add spacing around the track, for when information may extend beyond the track itself,
* for example stat dip tail that defines aziumuth
*/
padding?: PaddingConfig;
/**
* Option to only use major ticks in the graph track
*/
majorTicksOnly?: boolean;
forceDataUpdateOnToggle?: boolean;
}
export {};